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)