Rasters.jl defines common types and methods for reading, writing and
manipulating rasterized spatial data.
These currently include raster arrays like GeoTIFF and NetCDF, R grd files,
multi-layered stacks, and multi-file series of arrays and stacks.
A RasterStack of EarthEnv HabitatHeterogeneity layers, trimmed to Australia and plotted with Plots.jl
Lazyness
Data is loaded lazily wherever possible using
DiskArrays.jl. Indexing a
RasterStack by name is always lazy, while view of a Raster is lazy and
getindex will load to memory. read can be used on any object to ensure
that all data is loaded to memory.
Broadcast over disk-based objects is lazy - it will only run when the array is
indexed. Always prefer broadcasts to explicit loops - these can be very slow
with disk-based data.
Laziness can be avoided using the lazy=false keyword to Raster,
RasterStack or RasterSeries, which will give a performance improvement for some files.
Data-source abstraction
Rasters provides a standardised interface that allows many source data types to
be used with identical syntax.
Scripts and packages building on Rasters.jl can treat AbstractRaster,
AbstractRasterStack, and AbstrackRasterSeries as black boxes.
The data could hold GeoTiff or NetCDF files, Arrays in memory or
CuArrays on the GPU - they will all behave in the same way.
RasterStack can be backed by a Netcdf or HDF5 file, or a NamedTuple of
Raster holding .tif files, or all Raster in memory.
Users do not have to deal with the specifics of spatial file types.
Projected lookups with Cylindrical projections can by indexed using other Cylindrical projections
by setting the mappedcrs keyword on construction. You don't need to know the underlying
projection, the conversion is handled automatically. This means lat/lon
EPSG(4326) can be used seamlessly if you need that.
Regions and points selected with Between and Contains select the right
point or whole interval no matter the order of the index or it's position in
the cell.
Named dimensions and index lookups
Rasters.jl extends
DimensionalData.jl so that
spatial data can be indexed using named dimensions like X, Y and Ti (time)
and e.g. spatial coordinates.
Dimensions can also be used in most Base and Statistics methods like mean
and reduce where dims arguments are required. Much of the behaviour is
covered in the DimensionalData
docs.
See the docs for more details and
examples for Rasters.jl.
请发表评论