added
- utils-write
- made writing
functions for samples, rasters, and tables to make code more
succinct.
enhanced
- sample_existing
- A major change
to sample_existing()
has been implemented. Prior to
sgsR
v1.4.2, sample_existing()
only leveraged
sample_clhs()
functionality. New functionality has been
added to allow users to define the sub-sampling method of their choice
out of (sample_srs()
, sample_balanced()
,
sample_strat()
, sample_clhs()
). To do so,
additional internal functions (sample_existing_strat()
,
sample_existing_srs()
,
sample_existing_balanced()
,
sample_existing_srs()
) have been added that take in
existing
data and perform sampling based on those data. For
sample_existing_strat()
, new allocation algorithms that
take existing
as inputs needed to be written that are found
in utils-allocation-existing()
. Additionally, more utility
functions that check existing
data, and prepare
existing
data for sub-sampling have been developed and
implemented in utils-existing()
. Unit tests for all
functions have been added. The plot
parameter has been
removed from sample_existing()
for now. Likely to be added
again later.
enhanced
- Sampling Vignette - Added content about
sample_existing()
fixed
- strat_map()
- Fixed improper use of
terra::hasValues
. From Robert Hijmans #31
fixed
- sample_ahels()
- gave an erroneous
error when matrices
was provided and nQuant
did not match. Changed to allow only matrices
to be
provided.
fixed
- extract_strata()
- added error
message if sraster
had multiple layers #28
fixed
- extract_metrics()
- removed code
where mraster
layers with ID
as name were
removed. From Tomasso Trotto #27
enhanced
- calculate_representation()
-
Added parameter drop = NULL
. If !=NULL
then
filtering is applied where strata with under drop frequency are dropped
from resulting dataframe and plot. #28
added
- sample_sys_strat()
- Systematic
stratified sampling. Using same functionality as
sample_systematic()
but takes an sraster
as
input and performs sampling on each stratum iteratively.
enhanced
- strat_breaks()
- Vectorized
function to allow for any number of input mraster layers and a
corresponding number of breaks vectors (as list in respective order as
mraster
layers). Removed mraster2
&
breaks2
. Users can now supply an mraster
with
as many layers as they wish. Added map
to allow for
creating a combined (mapped) stratification output
(strata
). Internal function calculate_breaks()
was added that facilitates vectorization.
enhanced
- strat_quantiles()
- Vectorized
function to allow for any number of input mraster layers and a
corresponding number of breaks vectors (as list in respective order as
mraster
layers). Removed mraster2
&
nStrata2
. Users can now supply an mraster
with
as many layers as they wish along side nStrata
as a list
with length(nStrata) == terra::nlyr(mraster)
.
nStrata
can be either a scalar integer representing the
number of desired output strata, or a numeric vector of probabilities
between 0-1 demarcating quantile break points. The nStrata
list can be a mix of these
(e.g. nStrata = list(c(0.1,0.8,1), 4, 9)
where
mraster
would have 3 layers) to allow users to define both
explicit quantile breaks or a desired strata number that is converted to
quantiles breaks internally. Added map
to allow for
creating a combined (mapped) stratification output
(strata
). Internal functions
calculate_quantile_breaks() / quantile_breaks_integer() / quantile_breaks()
were added that facilitate vectorization.
enhanced
- strat_map()
- Vectorized
function to allow for any number of input mraster layers and a
corresponding number of breaks vectors (as list in respective order as
mraster
layers). Removed raster2
. Users can
now supply an sraster
with as many layers as they wish.
Thank you, Tommaso Trotto.
enhanced
- Updated vignettes and documentation to
account for vectorized functionality of the above functions.
enhanced
- plot_scatter()
- now visualizes
with viridis
colour scheme.
fixed
- Added new citation information for upcoming
manuscript release.
fixed
-
extract_strata() / extract_metrics()
- CRS for
existing
will now be maintained when provided as an
sf
and the mraster
CRS will be assigned
otherwise. In addition, all sampling functions will maintain CRS from
existing
if possible, otherwise CRS from
sraster/mraster
are used for output samples.
fixed
-
sample_srs() / sample_strat(method = "random")
- First
sample unit was always duplicated From Tommaso Trotto.
added
- plot_scatter()
- Internal function.
Scatter plot visualizing relationship between 2 mraster
metrics with existing
samples superimposed.
fixed
- sample_strat()
-
srasters
with categorical values were crashing the
algorithm due to inability to combine facter and non-factor values from
Evan Muise.
fixed
- sample_systematic()
- Added more
contingency for cellsize
values that resulted in empty
sample output.
fixed
- strat_map()
-
stratamapped
was outputting as character and not as integer
or character depending on input strata type as intended from Tommaso
Trotto.
enchancement
- calculate_pcomp()
- Added
maxcells
parameter based on suggestion from R. Hijmans.
fixed
- sample_systematic()
- Fixed issue
related to ATLAS Blas and CRAN errors with suggestions and support from
R. Hijmans.
fixed
- CRAN issue where errors were encountered when
run on ATLAS instances.
enhancement
- Edited vignettes and documentation for
clarity.
enhancement
- sample_srs()
- Added message
to tell users when nSamp
sample units were unable to be
allocated. From Evan Muise.
fixed
- strat_quantiles() / strat_kmeans()
- solved issue where correct number of strata & float strata values
were being output.
enhancement
- sample_existing()
- made it
so extra attributes are passed to output when raster
is
provided. Added additional unit tests and updated documentation.
enhancement
- README.Rmd
and vignettes have
been updated.
enhancement
- sample_systematic()
- changed
how tessellation was used internally and visualized during plotting.
fixed
- strat_map()
- #20 greatly
simplified algorithm using suggestion from R. Hijmans (added as author
to algorithm). Issue was related to level matching with categorical
variables.
fixed
- sample_ahels()
- swapped plot
marker icons to be consistent with other functions.
fixed
- sample_systematic()
- added random
translation to sampling grid to ensure unbiased sampling.
new
- sample_existing()
- has been added.
This algorithm sub-samples and existing
sample using
internal latin hypercube sampling. Constraints in the form of the
cost
parameter akin to sample_clhs()
exist.
Sub-sampling can be performed on existing
samples alone, or
using population level mraster
distributions.
new
- mask_existing()
- internal function
for masking exising
samples using access
buffers.
fixed
- sample_systematic()
- bug where
cellsize
values that caused no samples to intersect with
the raster would cause extract_metrics()
to provide an
error about existing not having any samples. Added a check for
intersection and corresponding error message.
enhancement
- Added quiet
to
extract_metrics()
& extract_strata()
to
allow internal use without messages.
fixed
- strat_kmeans()
bug related to
terra
where the re-assignment of values to the output
raster was causing issues. R Hijmans kindly suggested the edit
made.
fixed
- sample_ahels()
- bug where
extra attributes in existing
would cause the algorithm to
crash when re-merging after sampling.
fixed
- strat_quantiles()
- no longer
plots histogram / scatter plot when using plot = TRUE
. Now
correctly adds this to details list when
details = TRUE
.
new sampling method
- Added sample_nc()
based on the algorithm described in Melville &
Stone (2016).
k
parameter). These nearest
neighbours are the output samples. Visualization of the centers and
samples can be dispayed if details = TRUE
is used and
$kplot
is plotted.fixed
- sample_systematic()
- now has
inherent randomness for lower left corner of the tessellation.
fixed
- strat_kmeans()
- solved issue
where only first raster layer was being involved in
stratification.
enhanced
- sample_strat()
- added
parameter method
that allows users to choose between
"Queinnec"
(default method implemented in previous sgsR
versions) and "random"
(stratified random sampling). The
random method ignores much of the functionality of the algorithm to
allow users to use standard stratified random sampling approaches
without the use of a focal window to locate contiguous stratum
cells.
fixed
- sample_strat()
- factor
handling improvement - GitHub issue #18.
enhanced
- calculate_allocation()
-
improved documentation for output data frame to make attributes more
clear.
fixed
- calculate_representation()
-
will now not plot bar chart twice & NA
values in
existing will not be removed.
fixed
- existing
samples with other
attributes will now not break sampling using
sample_ahels() / sample_clhs()
if values are
NA
. Variables are also added back to the sample
output.
Added comprehensive tests using testthat
for most
functions and covr
reporting.
Changed forceSamp
to force
in
sample_systematic()
.
Removed details
from
sample_coob()
.
Improved ability to use data.frames()
of samples as
inputs for numerous algorithms.
Improve consistency in error messages and
call. = FALSE
across the package.
Added existingna.shp
for example data where point
are in NA
locations.
strat_map()
can now map categorical srasters (gave
an error before). Now also returns the categories associated with the
categorical rasters in the lookup table with
details = TRUE
.
Altered error handling for raster masking to be within
mask_access()
instead of individual sampling
functions.
Changes to terra::distance()
&
terra::classify()
required slight modifications to
calculate_distance()
and
strat_breaks()
.
sample_strat
strat_rule1()
and strat_rule2()
functions
to make code more concise. Fixed issue with mindist
not
setting distances between strata.sample_ahels()
tolerance
parameter to
sample_ahels()
to allow users to define a tolerance around
the desired sampling ratio (max tolerance = 0.1
). This
will allow the user to say “I ideally want the ratio to be
XX
but I’m OK if the ratio is XX - threshold
if it means I don’t need to add more samples”.existing
was a
data frame.sample_ahels
made ahels_nSamp()
and
ahels_threshold()
functions to make code more
concise.
Altered how existing
(crosses) and new
(circles) samples are plotted in sample_strat()
and
sample_ahels()
.
Added internal utility functions
allocate_prop / allocate_optim / allocate_manual / allocate_equal / allocate_existing / allocate_force
and integrated them into calculate_allocation()
to make
code more succinct and purposeful.
Fixed issue in calculate_allocation()
where too many
samples would be allocated (compared to the user-defined
nSamp
) due to using ceiling()
instead of
round()
during proportional and optimal
allocation.
Added allocation = "manual"
to
calculate_allocation()
. The parameter weights
was added (mandatory for allocation = "manual"
), where
users can provide a numeric vector of relative weightings to strata.
sum(weights)
must equal 1.
Added weights
parameter to
sample_strat()
to allow for "manual"
allocation.
Allow buff_inner
to be NULL
when
providing access
to isolate samples. This allows users to
define only a maximum distance (should they wish to) that samples can be
from access
but not specify a minimum distance.
Updates names for internal package data in
inst/exdata
and corresponding examples and
vignettes.
Added contingencies for sample_ahels
,
sample_strat
, calculate_allocation
,
calculate_coobs
to allow existing samples to fall in areas
of NA
and not cause algorithms to fail or bug.
extract_metrics
& extract_strata
produce more robust error messages & will now generate a message if
existing samples are co-located with strata or metric values that are
NA
.
sample_clhs
updated to fix issue where existing
samples would not be appended to output.
strat_quantiles
now provides a stratum look-up table
when details = TRUE
to allow user to see exact metric break
points.
Updated documentation for many algorithms to fix grammatical and spelling errors.
Removed dependencies for stringr
,
tidyselect
, rlang
, RColorBrewer
,
magrittr
, glue
, Rcpp
.
Improved documentation examples to have read speeds in line with <5 seconds for CRAN submission.
Improve processing speed for sample_coobs()
and
utils-mat.R
courtesy of Jean-Romain Roussel.
Added example subset file to inst/extdata
to improve
example processing speeds for certain algorithms.
NEWS.md
file to track changes to the
package.