NAME¶
rasterintro - Raster data processing
Raster data processing
Raster data processing in GRASS GIS¶
Raster maps in general¶
A "raster map" is a data layer consisting of a gridded array of cells.
It has a certain number of rows and columns, with a data point (or null value
indicator) in each cell. These may exist as a 2D grid or as a 3D cube made up
of many smaller cubes, i.e. a stack of 2D grids.
The geographic boundaries of the raster map are described by the north, south,
east, and west fields. These values describe the lines which bound the map at
its edges. These lines do NOT pass through the center of the grid cells at the
edge of the map, but along the edge of the map itself. i.e. the geographic
extent of the map is described by the outer bounds of all cells within the
map.
As a general rule in GRASS:
- 1
-
Raster output maps have their bounds and resolution equal to those of the
current computational region.
- 2
-
Raster input maps are automatically cropped/padded and rescaled (using
nearest-neighbour resampling) to match the current region.
- 3
-
Raster input maps are automatically masked if a raster map named MASK
exists. The MASK is only applied when reading maps from the
disk.
There are a few exceptions to this: r.in.* programs read the data cell-for-cell,
with no resampling. When reading non-georeferenced data, the imported map will
usually have its lower-left corner at (0,0) in the location's coordinate
system; the user needs to use r.region to "place" the imported map.
Some programs which need to perform specific types of resampling (e.g.
r.resamp.rst) read the input maps at their original resolution then do the
resampling themselves.
r.proj has to deal with two regions (source and destination) simultaneously;
both will have an impact upon the final result.
Raster import and export¶
The module r.in.gdal offers a common interface for many different raster
formats. Additionally, it also offers options such as on-the-fly location
creation or extension of the default region to match the extent of the
imported raster map. For special cases, other import modules are available.
The full map is always imported.
For importing scanned maps, the user will need to create a x,y-location, scan
the map in the desired resolution and save it into an appropriate raster
format (e.g. tiff, jpeg, png, pbm) and then use r.in.gdal to import it. Based
on reference points the scanned map can be recified to obtain geocoded data.
Raster maps are exported with r.out.gdal into common formats. Also r.out.bin,
r.out.ascii and other export modules are available. They export the data
according to the current region settings. If those differ from the original
map, the map is resampled on the fly (nearest neighbor algorithm). In other
words, the output will have as many rows and columns as the current region. To
export maps with various grid spacings (e.g, 500x500 or 200x500), you can just
change the region resolution with g.region and then export the map. The
resampling is done with nearest neighbor algorithm in this case. If you want
some other form of resampling, first change the region, then explicitly
resample the map with e.g. r.resamp.interp or r.resamp.stats, then export the
resampled map.
The r.info module displays general information about a map such as region
extent, data range, data type, creation history, and other metadata. Metadata
such as map title, units, vertical datum etc. can be updated with r.support.
Timestamps are managed with r.timestamp. Region extent and resolution are
mangaged with r.region.
Raster map operations¶
Resampling methods and interpolation methods¶
GRASS raster map processing is always performed in the current region settings
(see g.region), i.e. the current region extent and current raster resolution
is used. If the resolution differs from that of the input raster map(s),
on-the-fly resampling is performed (nearest neighbor resampling). If this is
not desired, the input map(s) has/have to be resampled beforehand with one of
the dedicated modules.
The built-in nearest-neighbour resampling of raster data calculates the centre
of each region cell, and takes the value of the raster cell in which that
point falls.
If the point falls exactly upon a grid line, the exact result will be determined
by the direction of any rounding error. One consequence of this is that
downsampling by a factor which is an even integer will always sample exactly
on the boundary between cells, meaning that the result is ill-defined.
The following modules are available for reinterpolation of "filled"
raster maps (continuous data) to a different resolution:
- r.resample uses the built-in resampling, so it should produce identical
results as the on-the-fly resampling done via the raster import
modules.
- r.resamp.interp Resampling with nearest neighbor, bilinear, and bicubic
method: method=nearest uses the same algorithm as r.resample, but
not the same code, so it may not produce identical results in cases which
are decided by the rounding of floating-point numbers.
For r.resamp.interp method=bilinear and method=bicubic, the
raster values are treated as samples at each raster cell's centre,
defining a piecewise-continuous surface. The resulting raster values are
obtained by sampling the surface at each region cell's centre. As the
algorithm only interpolates, and doesn't extrapolate, a margin of 0.5 (for
bilinear) or 1.5 (for bicubic) cells is lost from the extent of the
original raster. Any samples taken within this margin will be null.
- r.resamp.rst Regularized Spline with Tension (RST) interpolation 2D:
Behaves similarly, i.e. it computes a surface assuming that the values are
samples at each raster cell's centre, and samples the surface at each
region cell's centre.
- For r.resamp.stats without -w, the value of each region cell is the
chosen aggregate of the values from all of the raster cells whose centres
fall within the bounds of the region cell.
With -w, the samples are weighted according to the proportion of the
raster cell which falls within the bounds of the region cell, so the
result is normally unaffected by rounding error (a miniscule difference in
the position of the boundary results in the addition or subtraction of a
sample weighted by a miniscule factor; also, The min and max aggregates
can't use weights, so -w has no effect for those).
-
r.fillnulls for Regularized Spline with Tension (RST) interpolation 2D for
hole filling (e.g., SRTM DEM)
Furthermore, there are modules available for reinterpolation of
"sparse" (scattered points or lines) maps:
-
Inverse distance weighted average (IDW) interpolation (r.surf.idw2)
-
Interpolating from contour lines (r.contour)
For Lidar and similar data, r.in.xyz supports loading and binning of ungridded
x,y,z ASCII data into a new raster map. The user may choose from a variety of
statistical methods in creating the new raster.
Otherwise, for interpolation of scattered data, use the
v.surf.* set of
modules.
Raster MASKs¶
If a raster map named "MASK" exists, most GRASS raster modules will
operate only on data falling inside the masked area, and treat any data
falling outside of the mask as if its value were NULL. The mask is only
applied when
reading an existing GRASS raster map, for example when
used in a module as an input map.
The mask is read as an integer map. If MASK is actually a floating-point map,
the values will be converted to integers using the map's quantisation rules
(this defaults to round-to-nearest, but can be changed with r.quant).
(see r.mask)
Raster map statistics¶
A couple of commands are available to calculate local statistics (r.neighbors),
and global statistics (r.surf.area, r.sum). Profiles and transects can be
generated (r.profile, r.transect) as well as histograms (d.histogram) and
polar diagrams (d.polar). Univariate statistics (r.univar) and reports are
also available (r.report,<a href="r.stats.html">r.stats,
r.volume).
Raster map algebra and aggregation¶
The r.mapcalc command provides raster map algebra methods. The r.resamp.stats
command resamples raster map layers using various aggregation methods, the
r.average command aggregates one map based on a second map. r.resamp.interp
resamples raster map layers using interpolation.
Watershed modeling related modules are r.basins.fill, r.water.outlet,
r.watershed, and r.terraflow. Water flow related modules are r.carve, r.drain,
r.fill.dir, r.fillnulls, r.flow, and r.topidx. Flooding can be simulated with
r.lake. Hydrologic simulation model are available as r.sim.sediment,
r.sim.water, and r.topmodel.
Raster data can be stored in GRASS as 2D or 3D grids. 2D rasters support 3 data
types: 32bit signed integer, single- and double-precision floating-point. 3D
rasters support only single- and double-precision floating-point. In most
GRASS resources, 2D raster maps are usually called "raster", their
integer data type "CELL", single-precision floating-point data type
"FCELL" and double-precision floating-point "DCELL". The
3D raster map type is usually called "3D raster" but other names
like "G3D", "voxel", "volume",
"GRID3D" or "3d cell" are common. 3D raster's
single-precision data type is most often called "float", and the
double-precision one "double".
GRASS raster format is architecture independent and portable between 32bit and
64bit machines.
GRASS distinguishes NULL and zero. When working with NULL data, it is important
to know that operations on NULL cells lead to NULL cells.
See also¶
- Introduction to GRASS vector map processing
- Introduction to GRASS 3D raster map (voxel) processing
raster index - full index
© 2008-2012 GRASS Development Team