Updating MESMA, minor changes before major release
mesma()
now better differentiates SMA and MESMA: For
single endmember unmixing, each supplied endmember represents a class to
unmix (row by row). For multiple endmemeber unmixing, the column
class
can be used to group endmembers by class. If multiple
endmembers per class are provided, mesma()
will compute a
number of SMA (determined through the new argument
n_models
) for multiple endmember combinations drawn from
endmembers and will select the best fit per pixel based on the lowest
RMSE. See ?mesma
for details (fixes #57, reported by @ytarazona)mesma()
now implements the sum to one constraint by
default (argument sum_to_one
) (fixes #62, reported by @michaeldorman)mesma()
to reflect the
changesRewrite of RStoolbox
, migration from raster
to terra
and sp
to sf
sp
and
raster
packages to sf
and terra
to ensure long term support of the tools.rasterPCA()
: Fixed a bug that caused the method and its
unit tests to fail on Linux due to a corrupted covariance matrix
calculated previously with terra::layerCor()
superClass()
unable to predict when there is NA in
raster data (closes #102, reported by @bappa10085)rasterCVA()
by default no longer enforces a minimal
change magnitude (can still be accomplished with the tmf
argument). Also a new argument nct
allows to fix this
threshold to a user selected value instead of deriving it based on the
median of the observed change magnitudes.unsuperClass()
has a new argument output
which allows to return the distances to all cluster centers as raster
layers, instead of the class itselfspectralIndices()
as
suggested by Camps-Valls et al (2021)terra::SpatRast
objects throughout
RStoolbox (as alternative to raster
objects). Note:
internal functionality is still based on raster
.master
and slave
in
coregisterImages()
were deprecated in favor of
ref
and img
, respectively (closes #63,
suggested by @MatthiasSiewert)rasterCVA()
estimates median values now for entire
rasters and not per chunkcloudMask()
now returns NA for non-clouds instead of
NaNtopCor()
now works for tiny rasters as well (fixes #55,
reported by @latenooker)rasterPCA()
now correctly considers the number
observations in face of missing values (fixes #79, reported by @andliszmmu)superClass()
now accepts different geometries for
trainData and valData (fixes #73, suggested by @Silviculturalist)readMeta()
for MTL files delivered with Landsat
collection data (fixes #71, reported by @jkoellin et al.)readSLI()
and writeSLI()
now handle endian
of binary spectral libraries correctly (#47, fix contributed by @aloboa)superClass()
(reported by Benson Kemboi)readMeta
(reported by Xiaoma Li)readSLI()
did not find header
files with dots in pathnames (#51, reported by @aloboa)oneHotEncode()
: splits a single rasterLayer
into multiple layers (one per class) with one-hot encoding, i.e. pixel
value = 1 for matches, pixel value = 0 for all other classes
(background).ggR()
can now display more than one layer. Each layer
can be plotted to a subplot in a multi-panel figure.encodeQA()
, decodeQA()
and
classifyQA()
can now deal with the new QA format introduced
with Landsat Collection data. Legacy QA designations can still be
interpreted by setting the legacy
argument.predict()
method for unsupervised classification
models (unsuperClass()
).radCor()
DOS methods now work for Landsat 8
OLIunsuperClass()
for algorithms other than
Hartigan-Wong (reported by Alex Ilich)tasseledCap()
coefficients for Quickbird, Spot5
and RapidEyereadEE()
‘Date’ column is now returned as POSIXct
instead of POSIXlttasseledCap()
coefficient for Landsat 5 TM
(#40, reported by @philipperufin)mesma()
for spectral unmixing (#33, provided
by Jakob Schwalb-Willmann)readEE()
for new EarthExplorer formatstasseledCap()
coefficient
for Landsat5 TM band 1 (reported by Thomas Day)readMeta()
and stackMeta()
to new
Landsat collection 1 metadataspectralIndices()
can now apply a mask internally,
e.g. to exclude cloud pixels. New arguments are: maskLayer
and maskValue
(suggested by Andrea Hess).readEE()
to deal with new EarthExplorer export
columns (reported by Christian Bauer)spectralIndices()
has a new argument skipRefCheck,
which skips the heuristic check for reflectance-like values [0,1] which
is run if EVI/EVI2 are requested. This can be usefull if clouds with
reflectance > 1.5 are part of the image.superClass()
now returns the geometries which were used
for validation, e.g. polygons (under \(validation\)geometry) and also the exact
samples taken for validation including cell number and coordinates
(\(validation\)validationSamples)radCor()
are adjusted to match
current USGS recommendations from: https://landsat.usgs.gov/esunspectralIndices()
swir wavelength ranges are now
defined consistently and correctly. Bands formerly provided as swir1
(version <1.7.0) should now (>=1.7.0) be provided as swir2 and
former swir2 as swir3 respectively (see docu). The actual calculations
were correct, but the naming was off.ggR()
and ggRGB()
in annotation mode
(default). No image was drawn and excessive memory allocation requested
(= RStudio crash) (reported by Christian Walther)spectralIndices()
documentation for NDWI. Formula
was based on McFeeters1996 but attributed to Gao1996. Now there is NDWI
(McFeeters) and NDWI2 (Gao) (reported by Christian Bauer)estimateHaze()
now ensures correct histogram order,
which could be off when raster had to read from disk (reported by Xavier
Bailleau).readMeta()
now makes concise bandnames also for Landsat
Collection MTL files.radCor()
for Landsat 4 TM (reported by Thomas
Day)classifyQA()
confidence layer for type=‘water’ now
correctly returns only confidence levels in [1,3]readSLI()
Deprecated: * spectralIndices()
index LSWI
has been deprecated, as it is identical with the now available
NDWI2.
radCor()
is used to process
only a subset of bands it will no longer return unprocessed bands along
with processed bands. Instead only processed bands are returned.superClass()
will now use dataType = ‘INT2S’
for classification maps to avoid issues with raster NA handling in
INT1UreadMeta()
and stackMeta()
(@aszeitz, #7)Deprecated: * argument norm
was dropped from rasterPCA,
because it was effectively a duplicate of the standardized pca (spca)
argument in the same function.
validateMap()
for assessing map accuracy
separately from model fitting, e.g. after majority or MMU filteringgetValidation()
to extract specific
validation results of superClass objects (proposed by James Duffy)spectralIndices()
for
calculation of EVI/EVI2 based on scaled reflectance values.estimateHaze()
(@BayAludra, #4)predict()
for superClass. Disables
prediction of full raster (validation is still conducted).New model for superClass: maximum likelihood classification (model = “mlc”)
radCor()
: radiance:
[0,+Inf], reflectance: [0,1]. Includes a new argument clamp
to turn this on or off (on by default).Added kernlab to suggested packages to be able to test examples
Initial release to CRAN (2015-09-05) with the following functions: * classifyQA() * cloudMask() * cloudShadowMask() * coregisterImages() * decodeQA() * encodeQA() * estimateHaze() * fortify.raster() * fCover() * getMeta() * ggR() * ggRGB() * histMatch() * ImageMetaData() * normImage() * panSharpen() * pifMatch() * radCor() * rasterCVA() * rasterEntropy() * rasterPCA() * readEE() * readMeta() * readRSTBX() * readSLI() * rescaleImage() * rsOpts() * sam() * saveRSTBX() * spectralIndices() * stackMeta() * superClass() * tasseledCap() * topCor() * unsuperClass() * writeSLI()
Included example data sets: * data(srtm) * data(lsat) * data(rlogo)