SimpleSDMLayers
SimpleSDMLayers._read_geotiff
— Methodgeotiff(file; bandnumber::Integer=1, left=nothing, right=nothing, bottom=nothing, top=nothing, driver)
The geotiff function reads a geotiff file, and returns it as a matrix of the correct type. The optional arguments left
, right
, bottom
, and left
are defining the bounding box to read from the file. This is particularly useful if you want to get a small subset from large files.
SimpleSDMLayers._write_geotiff
— Methodgeotiff(file::AbstractString, layers::Vector{SDMLayer{T}}; nodata::T=convert(T, -9999)) where {T <: Number}
Stores a series of layers
in a file
, where every layer in a band. See geotiff
for other options.
SimpleSDMLayers.burnin!
— Methodburnin!(L::SDMLayer{T}, v::Vector{T})
Replaces the values of L
by the values in the vector v
.
SimpleSDMLayers.burnin
— Methodburnin(L::SDMLayer, v::Vector{T}) where {T}
Writes the value of v
in a layer similar to L
, and returns it. It is ASSUMED (but essentially impossible to check) that the values of v
are presented in the correct order. This uses burnin!
internally.
SimpleSDMLayers.cellarea
— Methodcellarea(layer::T; R = 6371.0)
Returns the area of each cell in km², assuming a radius of the Earth or R
(in km). This is only returned for layers in WGS84, which can be forced with interpolate
.
SimpleSDMLayers.coarsen
— Functioncoarsen(f, L::SDMLayer, mask=(2, 2))
Coarsens a layer by collecting a sub-grid of size mask
, and applying the function f
to all non-empty cells within this mask. The core constraint is that f
must take a vector and return a single element (and the size of the mask must be compatible with the size of the layer).
SimpleSDMLayers.interpolate
— Methodinterpolate(layer::SDMLayer, destination::SDMLayer)
Interpolates a layer target
so that it uses the same grid, crs, etc as destination
.
SimpleSDMLayers.interpolate
— Methodinterpolate(layer::SDMLayer; dest="+proj=natearth2", newsize=nothing)
Returns an interpolated version of the later under the new destination CRS (natearth2 by default), and with optionally a new size of newsize
.
SimpleSDMLayers.mask!
— Methodmask!(layer::SDMLayer, template::SDMLayer)
Updates the positions in the first layer to be those that have a value in the second layer.
SimpleSDMLayers.mask
— Methodmask(layer::SDMLayer, template::SDMLayer)
Returns a copy of the first layer masked according to the second layer. See also mask!
.
SimpleSDMLayers.mosaic
— Methodmosaic(f, stack::Vector{<:SDMLayer})
Returns a layer that is the application of f
to the values at each cell in the array of layers given as the second argument.
SimpleSDMLayers.nodata!
— Methodnodata!(layer::SDMLayer{T}, f)
Removes the data matching a function
SimpleSDMLayers.nodata!
— Methodnodata!(layer::SDMLayer{T}, nodata::T) where {T}
Changes the value of the layer representing no data. This modifies the layer passed as its first argument.
SimpleSDMLayers.nodata
— Methodnodata(layer::SDMLayer, args...)
Makes a copy and calls nodata!
on it
SimpleSDMLayers.reclassify
— Methodreclassify(L::SDMLayer, rules::Pair...)
Returns a layer where the cells are updated as a function of rules, given as (function) => value
, where the function must return a Bool
value. For example, reclassify(layer, (x -> abs(x)<=1)=>true)
will set a value of true
to all cells with values in -1;1, and maks all other cells. You can use multiple rules, in which case they are applied sequentially (a later rule can overwrite an earlier one).
SimpleSDMLayers.tiles
— Functiontiles(layer::SDMLayer, size::Tuple{Int64,Int64})
SimpleSDMLayers.SDMLayer
— TypeSDMLayer{T}
Defines a layer of geospatial information.
The type has two data fields:
- grid: a
Matrix
of typeT
- indices: a
BitMatrix
to see which positions are valued
Each row in the grid
field represents a slice of the raster of equal northing, i.e. the information is laid out in the matrix as it would be represented on a map once displayed. Similarly, columns have the same easting.
The geospatial information is represented by three positional fields:
- x and y: two tuples, indicating the coordinates of the corners alongside the x and y dimensions (e.g. easting/northing) - the default values are
(-180., 180.)
and(-90., 90.)
, which represents the entire surface of the globe in WGS84 - crs: any
String
representation of the CRS which can be handled byProj.jl
- the default is"+proj=longlat +datum=WGS84 +no_defs"
, which represents a latitude/longitude coordinate system