Learn R Programming

GSIF (version 0.5-5.1)

buffer.dist-methods: Derive buffer distances to a set of points

Description

Derive buffer distances using the raster::distance function, so that these can be used as predictors for spatial prediction i.e. to account for spatial proximity to low, medium and high values.

Usage

# S4 method for SpatialPointsDataFrame,SpatialPixelsDataFrame
buffer.dist(observations, predictionDomain, classes, width, …)

Arguments

observations

object of class "SpatialPointsDataFrame" containing observations of the target variable

predictionDomain

object of class "SpatialPixelsDataFrame"; prediction domain for which distances are estimated

classes

factor; split of the points

width

numeric; maximum search radius

other optional arguments that can be passed to raster::distance

See Also

fit.gstatModel

Examples

Run this code
# NOT RUN {
library(sp)
library(raster)
library(gstat)
library(randomForest)
library(quantregForest)
library(plotKML)
library(scales)
library(ranger)

## Load the Meuse data set:
demo(meuse, echo=FALSE)

# }
# NOT RUN {
## Soil organic matter (distance from any to all points):
grid.dist0 <- buffer.dist(meuse["om"], meuse.grid[1], as.factor(1:nrow(meuse)))
dn0 <- paste(names(grid.dist0), collapse="+")
fm0 <- as.formula(paste("om ~", dn0))
m0 <- fit.gstatModel(meuse, fm0, grid.dist0, 
    method="ranger", rvgm=NULL)
rk.m0 <- predict(m0, grid.dist0)
plot(rk.m0)
dev.off()
x = importance(m0@regModel)
plot(x)
## not always most practical to calculate distance to each point
# }
# NOT RUN {
## Soil organic matter with breaks:
classes <- cut(meuse$om, breaks=seq(0, 17, length=8))
## are these optimal splits?
grid.dist <- buffer.dist(meuse["om"], meuse.grid[1], classes)
plot(stack(grid.dist))
## quantregForest as a 'replacement' for kriging:
dn <- paste(names(grid.dist), collapse="+")
fm <- as.formula(paste("om ~", dn))
m <- fit.gstatModel(meuse, fm, grid.dist, 
    method="quantregForest", rvgm=NULL)
plot(m)
dev.off()
## Residual variogram shows no spatial structure
rk.m <- predict(m, grid.dist)
plot(rk.m)
dev.off()
## prediction error:
plot(sqrt(raster(rk.m@predicted[2])))
points(meuse, pch="+")
# }
# NOT RUN {
plotKML(rk.m@predicted["om"], colour_scale = SAGA_pal[[1]])
kml(meuse, file.name="om_points.kml", colour=om, labels=meuse$om)
kml_View("om_points.kml")
meuse$classes <- classes
plotKML(meuse["classes"])
# }
# NOT RUN {
# }
# NOT RUN {
## Combining geographical and feature space covariates:
meuse.gridT <- meuse.grid
meuse.gridT@data <- cbind(meuse.grid@data, grid.dist@data)
fm1 <- as.formula(paste("om ~", dn, "+soil+dist+ffreq"))
m1 <- fit.gstatModel(meuse, fm1, meuse.gridT, 
     method="quantregForest", rvgm=NULL)
## no need to fit variogram in this case
plot(m1)
dev.off()
rk.m1 <- predict(m1, meuse.gridT)
plot(rk.m1)
varImpPlot(m1@regModel)
dev.off()
plotKML(rk.m1@predicted["om"], 
   file.name="rk_combined.kml", 
   colour_scale = SAGA_pal[[1]])
# }
# NOT RUN {
# }
# NOT RUN {
## Example with zinc:
classes2 <- cut(meuse$zinc, 
   breaks=seq(min(meuse$zinc), max(meuse$zinc), length=10))
grid.dist2 <- buffer.dist(meuse["zinc"], meuse.grid[1], classes2)
dn2 <- paste(names(grid.dist2), collapse="+")
meuse.gridT2 <- meuse.grid
meuse.gridT2@data <- cbind(meuse.grid@data, grid.dist2@data)
fm2 <- as.formula(paste("zinc ~", dn2, "+soil+dist+ffreq"))
m2 <- fit.gstatModel(meuse, fm2, meuse.gridT2, 
      method="quantregForest", rvgm=NULL)
varImpPlot(m2@regModel)
rk.m2 <- predict(m2, meuse.gridT2)
plot(rk.m2)
dev.off()
## prediction error:
plot(raster(rk.m2@predicted[2]))
plotKML(rk.m2@predicted["zinc"], 
    file.name="rk_combined_zinc.kml", 
    colour_scale = SAGA_pal[[1]])
kml(meuse, colour=zinc, 
    file.name="zinc_points.kml", labels=meuse$zinc)
kml_View("zinc_points.kml")
# }

Run the code above in your browser using DataLab