You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: overviews/datatypes.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,15 +19,15 @@ GeoTrellis currently supports six basic types of raster data:
19
19
20
20
The size (in bits) represents the amount of data used on the filesystem or in
21
21
memory by each cell. Raster sizes can usually be estimated by the following
22
-
equation:
22
+
equations:
23
23
24
24
bits = rows * columns * size-per-cell
25
25
bytes = bits / 8
26
26
megabytes = bytes / 1,048,576
27
27
28
28
Using this formula, a 3000 x 2000 raster of boolean cells would use 750K, but a
29
-
1000 x 1000 double raster would require 64M of space (each double value
30
-
requires 512 times as much space as a boolean).
29
+
1000 x 1000 double raster would require 8M of space (each double value
30
+
requires 64 times as much space as a boolean).
31
31
32
32
#### Calculation Types
33
33
@@ -40,7 +40,7 @@ desired, manual conversions to a wider type can be performed.
40
40
41
41
Some calculations will use the raster's underlying type while others will
42
42
specify a particular type. For instance, bitwise operations will always occur
43
-
on a cell's integer value.
43
+
on a cell's integer value. So if you do a bitwise operation on a floating point valued Raster, those values will be converted to integers as the operation retrieves values from the Raster.
44
44
45
45
#### Conversions Between Types
46
46
@@ -55,7 +55,7 @@ optimizes these conversions by performing them lazily. For instance:
Copy file name to clipboardExpand all lines: overviews/parallel.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -17,7 +17,7 @@ resources allow).
17
17
18
18
If working with a single large data set (e.g. a large raster), it is usually
19
19
beneficial to transform the raster into a tiled raster which allows the system
20
-
to parallelize the work and to reduce I/O.
20
+
to parallelize the work and to reduce I/O. For more on Tiled Rasters, [see the overview on the subject]({{ site.baseurl }}/overviews/tiledrasters.html).
21
21
22
22
#### Distributed Execution
23
23
With a single command, an operation can be transformed into a RemoteOperation
Copy file name to clipboardExpand all lines: overviews/rendering.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -20,7 +20,7 @@ represents counts, measurements, or ratios, there are usually many distinct
20
20
values. One common way to represent raster data visually on a map
21
21
is to divide up the values of the data into different categories called classes,
22
22
and then represent each class on the map with its own color. Each class has
23
-
an lower and upper limit that defines what values falls within it. For example,
23
+
a lower and upper limit that define what values fall within it. For example,
24
24
a class might contain values between 0 and 10. We call these limits *class breaks*.
25
25
26
26
When rendering a raster in GeoTrellis, you can either use one of the automated classification schemes or manually determine the class breaks. For example, if you were creating a map of average household income, you might want one of the classes to be defined as below the federal poverty guidelines (manual classification) or organized into several equal intervals between the minimum and maximum (using the built-in linear breaks classification scheme).
@@ -37,7 +37,7 @@ ranges will have a bigger difference between the low and high limits. This
37
37
classification scheme is particularly good at emphasizing highlights or hotspots
38
38
where values are particularly high or low.
39
39
40
-
You can also request linear breaks (or "equal interval" breaks). Linear breaks simply divides up the values between the lowest value and the
40
+
You can also request linear breaks (or "equal interval" breaks). Linear breaks simply divide up the values between the lowest value and the
41
41
highest value, with the difference between the low and high limit being the
42
42
same for each class. For example, if we want 5 linear breaks between 0 and 50,
43
43
the classes would be 0-10, 10-20, 20-30, 30-40, and 40-50.
Copy file name to clipboardExpand all lines: overviews/thecatalog.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -20,10 +20,10 @@ num: 2
20
20
]
21
21
}
22
22
23
-
GeoTrellis needs to know where to find data in order to perform it's magic. One way you can tell GeoTrellis where to find rasters is to use the [io.LoadFile operation](http://geotrellis.github.io/scaladocs/0.8/#geotrellis.io.LoadFile). Another way is to create a .json file called a *catalog*. This file tells the GeoTrellis system how to find Rasters that are referred to by name. The raster's name is declared in the [.json metadata file for the ARG as the 'layer' attribute](https://github.com/geotrellis/geotrellis/blob/0.8.1/src/test/resources/sbn/SBN_co_phila.json#L7). Any arg file that is contained in a Data Store declared by the catalog is available to be loaded by GeoTrellis through the [io.LoadRaster](http://geotrellis.github.io/scaladocs/0.8/#geotrellis.io.LoadRaster) operation.
23
+
GeoTrellis needs to know where to find data in order to perform its magic. One way you can tell GeoTrellis where to find Rasters is to use the [io.LoadFile operation](http://geotrellis.github.io/scaladocs/0.8/#geotrellis.io.LoadFile). Another way is to create a .json file called a *catalog*. This file tells the GeoTrellis system how to find Rasters that are referred to by name. The Raster's name is declared in the [.json metadata file for the ARG as the 'layer' attribute](https://github.com/geotrellis/geotrellis/blob/0.8.1/src/test/resources/sbn/SBN_co_phila.json#L7). Any arg file that is contained in a Data Store declared by the catalog is available to be loaded by GeoTrellis through the [io.LoadRaster](http://geotrellis.github.io/scaladocs/0.8/#geotrellis.io.LoadRaster) operation.
24
24
25
25
To let the GeoTrellis server know where to find the catalog, set the ```geotrellis.catalog``` setting in the application.conf
26
26
27
27
#### Why use a Catalog?
28
28
29
-
Using the Raster's name to load it into GeoTrellis allows for flexibility in the file storage of your raster data. Code that can run on one set of data can be moved to work with another set, just by changing where the catalog is pointing. Also, using a simple name to refer to raster layers allows for REST calls to include the layer name in query parameters. This lets the client be able to easily declare what server side data to operate on. If you're making a web map that has multiple raster layers, you can dynamically make calls out to GeoTrellis on any one or all the layers by passing through the name of the rasters. For an example of this, see the [admin tool's WMS call](https://github.com/geotrellis/geotrellis/blob/0.8.1/server/src/main/scala/geotrellis/admin/services/Layer.scala#L44).
29
+
Using the Raster's name to load it into GeoTrellis allows for flexibility in the file storage of your Raster data. Code that can run on one set of data can be moved to work with another set, just by changing where the catalog is pointing. Also, using a simple name to refer to Raster layers allows for REST calls to include the layer name in query parameters. This allows the client to easily declare what server side data to operate on. If you're making a web map that has multiple Raster layers, you can dynamically make calls out to GeoTrellis on any one or all the layers by passing through the name of the Rasters. For an example of this, see the [admin tool's WMS call](https://github.com/geotrellis/geotrellis/blob/0.8.1/server/src/main/scala/geotrellis/admin/services/Layer.scala#L44).
Copy file name to clipboardExpand all lines: overviews/tiledrasters.md
+13-12Lines changed: 13 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -24,18 +24,16 @@ raster could be divided into 100 smaller rasters that are 1k by 1k cells each.
24
24
You can think about a tiled raster as a distributed data source, as we cannot
25
25
assume we can load the entire dataset in memory at any one time.
26
26
27
-
At the current stage of development, using tiled rasters in GeoTrellis does
28
-
unfortunately require specialized data processing and programming. One reason
29
-
this is the case it is far faster to operate on arrays in memory when possible.
27
+
At the current stage of development, using tiled rasters in GeoTrellis requires special case data processing and programming. Operations were originally designed to operate on arrays in memory, as this is the fastest access method to raster values. Tiled Rasters need to have their data retrieved in a different method.
30
28
As we approach GeoTrellis 1.0, we hope to make the process more transparent for
31
29
simple models. But while there is still much work to be done, there is useful
32
30
infrastructure in place for developing services that operate on tiled raster
33
-
sets. As this functinality is still a work in progress, I'll mention plans
31
+
sets. As this functionality is still a work in progress, I'll mention plans
34
32
for future development alongside the current functionality.
35
33
36
34
## The tiled ARG format
37
35
38
-
On disk, a tiled ARG is a directory full of individual ARG files (each with their own json metadata) with a single master metadata file. If a tile is entirely
36
+
On disk, a tiled ARG is a directory full of individual ARG files (each with its own json metadata) with a single master metadata file. If a tile is entirely
39
37
NoData (every cell has no value), there will be no data file for that tile. In the future, we will support this same functionality for tiles with a
40
38
single value. The filename of each tile has a suffix with the row and column of the tile. Each
41
39
tile has the same width in pixels and the same height in pixels: for example,
@@ -61,11 +59,12 @@ you create 1000x1000 tiles, the tiles on the right and bottom edge will have
61
59
For creating the tile, you should use the "import-tile" gt-tool task.
62
60
63
61
The options for gt-tool are:
64
-
-i Path of the input raster file (which can be geotiff, ARG, or another GDAL supported raster format)
65
-
-d Output directory for tiles
66
-
-n Name of the output raster
67
-
-cols Pixel columns (pixel width) per tile
68
-
-rows Pixel rows (pixel height) per tile
62
+
63
+
* -i Path of the input raster file (which can be geotiff, ARG, or another GDAL supported raster format)
64
+
* -d Output directory for tiles
65
+
* -n Name of the output raster
66
+
* -cols Pixel columns (pixel width) per tile
67
+
* -rows Pixel rows (pixel height) per tile
69
68
70
69
For example, a sample usage could look like:
71
70
@@ -114,7 +113,7 @@ have been implemented to handle tiled rasters.
114
113
## Map/Reduce style Summary operations
115
114
116
115
As designed, a core function of tiled rasters is to allow operations on rasters too large to fit in memory.
117
-
The logic.TileReducer class be extended to create operations that perform an operation on each individual
116
+
The logic.TileReducer class can be extended to create operations that perform an operation on each individual
118
117
tile (the mapper) and then perform an operation to combine the results of those operations (the reducer).
119
118
Examples of operations that implement this interface are stats.Min and stats.GetHistogram.
120
119
@@ -125,7 +124,9 @@ a single compound operation that is only run when necessary. Because of this, i
125
124
local operations as part of your tiled raster operations. However, you should not *only* use local
126
125
operations on a tiled raster as you cannot assume that the raster can fit into memory on a single
127
126
machine to produce a result. For example, you might summarize the results of your raster transformed
128
-
by local operations.
127
+
by local operations.
128
+
129
+
For maximum efficiency it's important that a sequence of local raster operations on a tile can be completed using a machine's available memory. GeoTrellis helps by performing local operations lazily, combining chained local operations into a single compound operation executed on a pixel at a time (rather than constructing an intermediate raster for each operation). However, many operations have results that are Rasters held completely in memory. The operation might still exceed available memory if the final result is a in-memory raster that is larger than can fit in memory. Adding a summarizing operation as the final step can prevent the need to keep an entire raster tile in memory.
Copy file name to clipboardExpand all lines: tutorials/index.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@ num: 1
7
7
outof: 4
8
8
---
9
9
10
-
To the right is a list of tutorials that will help you set learn to use GeoTrellis effectively through guided usage. We will be adding to these tutorials, so make sure to visit often!
10
+
To the right is a list of tutorials that will help you learn to use GeoTrellis effectively through guided usage. We will be adding to these tutorials, so make sure to visit often!
11
11
12
12
The following blog articles are also great introductions to using GeoTrellis:
13
13
*[Developing a Kernel Density Service With GeoTrellis](http://www.azavea.com/blogs/labs/2013/03/developing-a-kernel-density-service-with-geotrellis/)
Copy file name to clipboardExpand all lines: tutorials/webservice.md
+10-6Lines changed: 10 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,6 +9,10 @@ num: 3
9
9
In this tutorial we will walk through building web services
10
10
using Jetty and GeoTrellis from scratch.
11
11
12
+
#### Scala
13
+
14
+
GeoTrellis is a scala library, so we will be using Scala to build up our web service. If you are unfamiliar with Scala, you can learn more about the language [here](http://www.scala-lang.org/).
15
+
12
16
#### Setting up the project
13
17
14
18
We'll be using [sbt](http://www.scala-sbt.org/) as our build tool. The GeoTrellis code base
@@ -117,11 +121,11 @@ which Jetty then marshals back to the client.
117
121
#### The GeoTrellis Server
118
122
119
123
Throughout the rest of the tutorial, we will be using GeoTrellis operations to
120
-
service the requests. GeoTrellis defines [operations](http://localhost:4000/operations/)
124
+
service the requests. GeoTrellis defines [operations]({{ site.baseurl }}/operations/)
121
125
that work with vector and raster geospatial data, as well as more simple types such as strings and integers.
122
126
An operation is constructed in code before it is actually executed. This allows
123
127
operations to be composed in a way where their execution happens only when needed.
124
-
This also allows for optimization and parrallization to occur in the execution
128
+
This also allows for optimization and parallelization to occur in the execution
125
129
of composed operations.
126
130
127
131
The way to execute operations is to run them with a GeoTrellis `Server` object.
@@ -166,7 +170,7 @@ data now by creating a directory in the root direcotry called `data` and create
166
170
}
167
171
168
172
This catalog defines one data store, which is the directory `data/arg`. This means any raster in ARG format
169
-
found in that directory will be available to the Server. Note that a data store cannot be the same directory
173
+
found in that directory will be available to the Server. For a description of the ARG format, see the [documentation on loading data]({{ site.baseurl }}/gettingstarted/data.html). Note that a data store cannot be the same directory
170
174
as the catalog.json lives, because the Server will consider any JSON file in a data store directory to be a
171
175
layer definition for an ARG file.
172
176
@@ -304,7 +308,7 @@ will result in `0,-10,15,10`.
304
308
305
309
It's now time to work with some raster data. Download the
306
310
[sample data set]({{ site.baseurl }}/data/tutorial.tar.gz)
307
-
and extract it's contents into the `data/arg` folder. Now when we restart
311
+
and extract its contents into the `data/arg` folder. Now when we restart
308
312
the tutorial server, the Main.server will have access to a raster named
309
313
`philly_inc_percap`. This a byte-valued raster containing data values representing
310
314
income per capita for the city of Philadelphia. This raster is in
@@ -362,12 +366,12 @@ Now restart the server, and see the raster:
362
366
`http://localhost:8888/simpleDraw`
363
367
364
368
Given a `name`, the `io.LoadRaster` operation will return a `geotrellis.Raster`
365
-
instance containing the raster data who's layer name is the parameter. The server
369
+
instance containing the raster data whose layer name is the parameter. The server
366
370
can find this raster by name because of the setup with the Catalog we did earlier.
367
371
368
372
`SimpleRenderPng` takes in a raster and a color ramp. Color ramps have been
369
373
chosen by the designers at Azavea to handle representing common raster visualization
370
-
use cases in an esteticly pleasing and informative way. You can see the different color ramps available in our
374
+
use cases in an aesthetically pleasing and informative way. You can see the different color ramps available in our
0 commit comments