The soilsampling package provides methods for designing soil sampling schemes including spatial coverage sampling, simple random sampling, stratified random sampling, and composite sampling. The package uses sf for spatial operations and does not require Java or the sp package.
Details
The package implements three main sampling approaches:
Simple Random Sampling (
ss_random()): Selects sampling locations uniformly at random within the study area.Stratified Random Sampling (
ss_stratified()): Divides the study area into compact strata and samples randomly within each stratum.Spatial Coverage Sampling (
ss_coverage()): Places samples at the centroids of compact geographical strata for optimal spatial coverage.
The stratification is based on k-means clustering as described in Walvoort et al. (2010). Two k-means algorithms are available:
Transfer algorithm: Standard k-means that creates compact strata of potentially unequal sizes.
Swop algorithm: Creates compact strata of equal size, useful for composite sampling.
Main Functions
Stratification:
ss_stratify()- Create spatial strata using k-means
Sampling:
ss_random()- Simple random samplingss_stratified()- Stratified random samplingss_coverage()- Spatial coverage sampling (centroids)ss_coverage_equal_area()- Coverage sampling with equal-area stratass_composite()- Composite sampling from equal-area strata
Visualization:
ss_plot()- Plot stratification and samplesss_plot_samples()- Plot sampling points only
Utilities:
ss_to_sf()- Convert results to sf objectss_to_data_frame()- Convert results to data framess_summary()- Get summary statisticsss_n_strata()- Get number of stratass_n_samples()- Get number of samplesss_area()- Get stratum areasss_relative_area()- Get relative stratum areas
Workflow
A typical workflow for spatial coverage sampling:
library(soilsampling)
library(sf)
# Load or create study area
study_area <- st_read("study_area.shp")
# Option 1: Direct coverage sampling
samples <- ss_coverage(study_area, n_strata = 50, n_try = 10)
# Option 2: Create strata first, then sample
strata <- ss_stratify(study_area, n_strata = 50, n_try = 10)
samples <- ss_coverage(strata)
# Visualize
ss_plot(strata, samples = samples)
# Export coordinates
coords <- ss_to_data_frame(samples)
write.csv(coords, "sampling_points.csv")When to Use Each Method
Spatial coverage sampling (
ss_coverage()): Best for model-based inference (kriging). Provides optimal spatial coverage for interpolation.Stratified random sampling (
ss_stratified()): Best for design-based inference. Provides valid probability samples while ensuring coverage.Simple random sampling (
ss_random()): Use when no prior stratification is desired. Valid for design-based inference.Composite sampling (
ss_composite()): Use when samples will be physically combined before analysis to reduce costs.
References
de Gruijter, J.J., Brus, D.J., Bierkens, M.F.P., and Knotters, M. (2006). Sampling for Natural Resource Monitoring. Springer, Berlin.
Walvoort, D.J.J., Brus, D.J., and de Gruijter, J.J. (2010). An R package for spatial coverage sampling and random sampling from compact geographical strata by k-means. Computers & Geosciences 36, 1261-1267. doi:10.1016/j.cageo.2010.04.005
Author
Maintainer: Carlos Carbajal ccarbajal@educagis.com
