Description Slots Methods Author(s) References See Also Examples
A class containing predictions and prediction error (or multiple realizations) of some of the target global soil property at six standard depths. Standard depths used are based on the GlobalSoilMap.net specifications: sd1
= 2.5 cm (0–5), sd2
= 10 cm (5–15), sd3
= 22.5 cm (15–30), sd4
= 45 cm (30–60), sd5
= 80 cm (60–100), sd6
= 150 cm (100–200).
varname
:object of class "character"
; abbreviated variable name registered in the Global Soil Data registry
TimeSpan
:object of class "list"
; contains begin and end of the sampling period of class "POSIXct"
sd1
:object of class "SpatialPixelsDataFrame"
; predictions and variances, or number of realizations of the target variable at depth 2.5 cm (0–5)
sd2
:object of class "SpatialPixelsDataFrame"
; predictions and variances, or number of realizations of the target variable at depth 10 cm (5–15)
sd3
:object of class "SpatialPixelsDataFrame"
; predictions and variances, or number of realizations of the target variable at depth 22.5 cm (15–30)
sd4
:object of class "SpatialPixelsDataFrame"
; predictions and variances, or number of realizations of the target variable at depth 45 cm (30–60)
sd5
:object of class "SpatialPixelsDataFrame"
; predictions and variances, or number of realizations of the target variable at depth 80 cm (60–100)
sd6
:object of class "SpatialPixelsDataFrame"
; predictions and variances, or number of realizations of the target variable at depth 150 cm (100–200)
Gridded data submitted to sd*
slots of the "SoilGrids"
class must satisfy all of the following requirements (class validity):
All grids submitted must have the same grid topology (identical grid
slot in the object of class "SpatialPixelsDataFrame"
);
All grids must be projected in the referent coordinate system WGS84 (geographical coordinates), with 3D dimension (altitude) expressed as distance from the land surface in meters (e.g. altitude of -.025
corresponds to the 2.5 cm depth);
The grid cell size must correspond to some standard resolution e.g. 0.0008333333 (1/1200 or about 100 m), 0.0016666667 (1/600 or about 250 m) or similar;
Only standard abbreviated names registered in the Global Soil Data registry can be used in the varname
slot;
signature(x = "SoilGrids")
: generates summary statistics for the object
Tomislav Hengl and Robert A. MacMillan
SoilGrids — a system for automated soil mapping (https://soilgrids.org)
GlobalSoilMap-class
, SpatialComponents-class
, geosamples-class
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | # load soil samples from the plotKML package:
library(plotKML)
library(aqp)
library(plyr)
library(splines)
library(rgdal)
library(raster)
data(eberg)
## subset data to 10%:
eberg <- eberg[runif(nrow(eberg)) < .1,]
## sites table:
s.lst <- c("ID", "soiltype", "TAXGRSC", "X", "Y")
h.lst <- c("UHDICM","LHDICM","SNDMHT","SLTMHT","CLYMHT")
sites <- eberg[,s.lst]
## get horizons table:
horizons <- getHorizons(eberg, idcol="ID", sel=h.lst)
## create object of type "SoilProfileCollection"
eberg.spc <- join(horizons, sites, type='inner')
depths(eberg.spc) <- ID ~ UHDICM + LHDICM
site(eberg.spc) <- as.formula(paste("~", paste(s.lst[-1], collapse="+"), sep=""))
coordinates(eberg.spc) <- ~X+Y
proj4string(eberg.spc) <- CRS("+init=epsg:31467")
## convert to logits:
eberg.spc@horizons$SNDMHT.t <- log((eberg.spc@horizons$SNDMHT/100)/
(1-eberg.spc@horizons$SNDMHT/100))
## convert to geosamples:
eberg.geo <- as.geosamples(eberg.spc)
## load gridded data:
data(eberg_grid)
gridded(eberg_grid) <- ~x+y
proj4string(eberg_grid) <- CRS("+init=epsg:31467")
## derive spc's:
formulaString <- ~ PRMGEO6+DEMSRT6+TWISRT6+TIRAST6
eberg_spc <- spc(eberg_grid, formulaString)
## build a 3D "gstatModel":
glm.formulaString = as.formula(paste("SNDMHT.t ~ ",
paste(names(eberg_spc@predicted), collapse="+"), "+ ns(altitude, df=4)"))
## Not run:
SNDMHT.m <- fit.gstatModel(observations=eberg.geo, glm.formulaString,
covariates=eberg_spc@predicted)
summary(SNDMHT.m@regModel)
SNDMHT.m@vgmModel
## prepare new locations (6 standard depths):
new3D <- sp3D(eberg_spc@predicted)
## Make predictions at six depths:
sd.l <- lapply(new3D, FUN=function(x){predict(SNDMHT.m, predictionLocations=x, nfold=0)})
## back-transformation function:
invlogit = function(x){exp(x)/(1+exp(x))*100}
## for the back-transformation for the mean value see Diggle and Ribeiro, 2007, p. 148:
invlogit.m = function(x, v){((1+exp(-x))^(-1)-.5*v*exp(-x)*(1-exp(-x))*(1+exp(-x))^(-3) )*100}
## back-transform values from logits:
for(j in 1:length(sd.l)){
sd.l[[j]]@predicted$M <- round(invlogit.m(sd.l[[j]]@predicted$SNDMHT.t,
sd.l[[j]]@predicted$var1.var))
sd.l[[j]]@predicted$L <- round(invlogit(sd.l[[j]]@predicted$SNDMHT.t
- 1.645*sqrt(sd.l[[j]]@predicted$var1.var)))
sd.l[[j]]@predicted$U <- round(invlogit(sd.l[[j]]@predicted$SNDMHT.t
+ 1.645*sqrt(sd.l[[j]]@predicted$var1.var)))
}
str(sd.l[[1]]@predicted@data)
## reproject to WGS84 system (100 m resolution):
p = get("cellsize", envir = GSIF.opts)[1]
s = get("stdepths", envir = GSIF.opts)
sd.ll <- sapply(1:length(sd.l), FUN=function(x){
make.3Dgrid(sd.l[[x]]@predicted[c("L","M","U")],
pixsize=p, stdepths=s[x])})
## save to a "SoilGrids" object:
SNDMHT.gsm <- SoilGrids(obj=sd.ll, varname="SNDPPT",
TimeSpan=list(begin="1999-02-01", end="2001-07-01"))
str(SNDMHT.gsm, max.level=2)
## visualize all maps in Google Earth:
data(R_pal)
z0 = mean(eberg_grid$DEMSRT6, na.rm=TRUE)
## export grids:
for(j in 1:length(sd.ll)){
kml(slot(SNDMHT.gsm, paste("sd", j, sep="")),
folder.name = paste("eberg_sd", j, sep=""),
file = paste("SNDMHT_sd", j, ".kml", sep=""),
colour = M, z.lim=c(10,85),
raster_name = paste("SNDMHT_sd", j, ".png", sep=""),
altitude = z0+5000+(s[j]*2500))
}
## End(Not run)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.