Classes¶
The package is built around a number of “classes” of which the
RasterLayer, RasterBrick, and RasterStack are the most
important. When discussing methods that can operate on objects of all
three of these classes, they are referred to as Raster* objects.
RasterLayer¶
A RasterLayer represents single-layer (variable) raster data. A
RasterLayer object always stores a number of fundamental parameters
that describe it. These include the number of columns and rows, the
coordinates of its spatial extent (‘bounding box’), and the coordinate
reference system (the ‘map projection’). In addition, a RasterLayer
can store information about the file in which the raster cell values are
stored (if there is such a file). A RasterLayer can also hold the
raster cell values in memory.
RasterStack and RasterBrick¶
It is quite common to analyze raster data using single-layer objects.
However, in many cases multi-variable raster data sets are used. The
raster package has two classes for multi-layer data the
RasterStack and the RasterBrick. The principal difference
between these two classes is that a RasterBrick can only be linked
to a single (multi-layer) file. In contrast, a RasterStack can be
formed from separate files and/or from a few layers (‘bands’) from a
single file.
In fact, a RasterStack is a collection of RasterLayer objects
with the same spatial extent and resolution. In essence it is a list of
RasterLayer objects. A RasterStack can easily be formed form a
collection of files in different locations and these can be mixed with
RasterLayer objects that only exist in memory.
A RasterBrick is truly a multilayered object, and processing a
RasterBrick can be more efficient than processing a RasterStack
representing the same data. However, it can only refer to a single file.
A typical example of such a file would be a multi-band satellite image
or the output of a global climate model (with e.g., a time series of
temperature values for each day of the year for each raster cell).
Methods that operate on RasterStack and RasterBrick objects
typically return a RasterBrick.
Other Classes¶
Below is some more detail, you do not need to read or understand this
section to use the raster package.
The three classes described above inherit from the raster class
(that means they are derived from this more basic ‘parent’ class by
adding something to that class) which itself inherits from the
BasicRaster class. The BasicRaster only has a few properties
(referred to as ‘slots’ in S4 speak): the number of columns and rows,
the coordinate reference system (which itself is an object of class
CRS, which is defined in package sp) and the spatial extent,
which is an object of class Extent.
An object of class Extent has four slots: xmin, xmax, ymin, and
ymax. These represent the minimum and maximum x and y coordinates of the
of the Raster object. These would be, for example, -180, 180, -90, and
90, for a global raster with longitude/latitude coordinates. Note that
raster uses the coordinates of the extremes (corners) of the entire
raster (unlike some files/programs that use the coordinates of the
center of extreme cells).
raster is a virtual class. This means that it cannot be instantiated
(you cannot create objects from this class). It was created to allow the
definition of methods for that class. These methods will be dispatched
when called with a descendent of the class (i.e. when the method is
called with a RasterLayer, RasterBrick or RasterStack object
as argument). This allows for efficient code writing because many
methods are the same for any of these three classes, and hence a single
method for raster suffices.
RasterStackBrick is a class union of the RasterStack and
RasterBrick class. This is a also a virtual class. It allows
defining methods (functions) that apply to both RasterStack and
RasterBrick objects.