Skip to content

Commit c5cde51

Browse files
committed
Doc fixes as per Rick's proofreading.
1 parent c2e1a47 commit c5cde51

File tree

8 files changed

+36
-31
lines changed

8 files changed

+36
-31
lines changed

overviews/datatypes.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,15 @@ GeoTrellis currently supports six basic types of raster data:
1919

2020
The size (in bits) represents the amount of data used on the filesystem or in
2121
memory by each cell. Raster sizes can usually be estimated by the following
22-
equation:
22+
equations:
2323

2424
bits = rows * columns * size-per-cell
2525
bytes = bits / 8
2626
megabytes = bytes / 1,048,576
2727

2828
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).
3131

3232
#### Calculation Types
3333

@@ -40,7 +40,7 @@ desired, manual conversions to a wider type can be performed.
4040

4141
Some calculations will use the raster's underlying type while others will
4242
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.
4444

4545
#### Conversions Between Types
4646

@@ -55,7 +55,7 @@ optimizes these conversions by performing them lazily. For instance:
5555
// Apply conversion to Double.
5656
val converted = raster.convert(TypeDouble)
5757

58-
// No data has been not converted yet;
58+
// No data has been converted yet;
5959
// future operations will apply conversion.
6060

6161
// result contains Double values.

overviews/parallel.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ resources allow).
1717

1818
If working with a single large data set (e.g. a large raster), it is usually
1919
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).
2121

2222
#### Distributed Execution
2323
With a single command, an operation can be transformed into a RemoteOperation

overviews/rendering.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ represents counts, measurements, or ratios, there are usually many distinct
2020
values. One common way to represent raster data visually on a map
2121
is to divide up the values of the data into different categories called classes,
2222
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,
2424
a class might contain values between 0 and 10. We call these limits *class breaks*.
2525

2626
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
3737
classification scheme is particularly good at emphasizing highlights or hotspots
3838
where values are particularly high or low.
3939

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
4141
highest value, with the difference between the low and high limit being the
4242
same for each class. For example, if we want 5 linear breaks between 0 and 50,
4343
the classes would be 0-10, 10-20, 20-30, 30-40, and 40-50.

overviews/thecatalog.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ num: 2
2020
]
2121
}
2222

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.
2424

2525
To let the GeoTrellis server know where to find the catalog, set the ```geotrellis.catalog``` setting in the application.conf
2626

2727
#### Why use a Catalog?
2828

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).

overviews/tiledrasters.md

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,18 +24,16 @@ raster could be divided into 100 smaller rasters that are 1k by 1k cells each.
2424
You can think about a tiled raster as a distributed data source, as we cannot
2525
assume we can load the entire dataset in memory at any one time.
2626

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.
3028
As we approach GeoTrellis 1.0, we hope to make the process more transparent for
3129
simple models. But while there is still much work to be done, there is useful
3230
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
3432
for future development alongside the current functionality.
3533

3634
## The tiled ARG format
3735

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
3937
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
4038
single value. The filename of each tile has a suffix with the row and column of the tile. Each
4139
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
6159
For creating the tile, you should use the "import-tile" gt-tool task.
6260

6361
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
6968

7069
For example, a sample usage could look like:
7170

@@ -114,7 +113,7 @@ have been implemented to handle tiled rasters.
114113
## Map/Reduce style Summary operations
115114

116115
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
118117
tile (the mapper) and then perform an operation to combine the results of those operations (the reducer).
119118
Examples of operations that implement this interface are stats.Min and stats.GetHistogram.
120119

@@ -125,7 +124,9 @@ a single compound operation that is only run when necessary. Because of this, i
125124
local operations as part of your tiled raster operations. However, you should not *only* use local
126125
operations on a tiled raster as you cannot assume that the raster can fit into memory on a single
127126
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.
129130

130131
### Focal operations
131132

overviews/vector.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ the context of an operation
3333
#### Working with Extents as Vectors
3434

3535
When working with data it can often be useful to perform vector
36-
operations on extents. One very common operations is buffered a given
36+
operations on extents. One very common operation is buffering a given
3737
extent to make sure that data isn't being clipped
3838

3939
val extent:Op[Extent] = ParseExtent(extentParam)
@@ -47,7 +47,7 @@ extent to make sure that data isn't being clipped
4747
#### Creating Your Own Vector Operations
4848

4949
If an operation that you want to use isn't yet exposed by the GeoTrellis
50-
API adding a new one is as simple as extending and operation class:
50+
API adding a new one is as simple as extending an operation class:
5151

5252
case class GetInteriorPoint[A](g: Geometry[A])
5353
extends Op1[Geometry[A], Point[A](geom =>

tutorials/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ num: 1
77
outof: 4
88
---
99

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!
1111

1212
The following blog articles are also great introductions to using GeoTrellis:
1313
* [Developing a Kernel Density Service With GeoTrellis](http://www.azavea.com/blogs/labs/2013/03/developing-a-kernel-density-service-with-geotrellis/)

tutorials/webservice.md

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ num: 3
99
In this tutorial we will walk through building web services
1010
using Jetty and GeoTrellis from scratch.
1111

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+
1216
#### Setting up the project
1317

1418
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.
117121
#### The GeoTrellis Server
118122

119123
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/)
121125
that work with vector and raster geospatial data, as well as more simple types such as strings and integers.
122126
An operation is constructed in code before it is actually executed. This allows
123127
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
125129
of composed operations.
126130

127131
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
166170
}
167171

168172
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
170174
as the catalog.json lives, because the Server will consider any JSON file in a data store directory to be a
171175
layer definition for an ARG file.
172176

@@ -304,7 +308,7 @@ will result in `0,-10,15,10`.
304308

305309
It's now time to work with some raster data. Download the
306310
[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
308312
the tutorial server, the Main.server will have access to a raster named
309313
`philly_inc_percap`. This a byte-valued raster containing data values representing
310314
income per capita for the city of Philadelphia. This raster is in
@@ -362,12 +366,12 @@ Now restart the server, and see the raster:
362366
`http://localhost:8888/simpleDraw`
363367

364368
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
366370
can find this raster by name because of the setup with the Catalog we did earlier.
367371

368372
`SimpleRenderPng` takes in a raster and a color ramp. Color ramps have been
369373
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
371375
[Color Documentation]( {{ site.baseurl }}/overviews/rendering.html).
372376
The `SimpleRenderPng` operation returns a Byte Array which contains the raw PNG file. To return
373377
this to the browser, we just return the data with the MIME type `image/png`.

0 commit comments

Comments
 (0)