point2poly_tess {SUNGEO} | R Documentation |
Point-to-polygon interpolation, tessellation method
Description
Function for interpolating values from a source point layer to a destination polygon layer, using Voronoi tessellation and area/population weights.
Usage
point2poly_tess(
pointz,
polyz,
poly_id,
char_methodz = "aw",
methodz = "aw",
pop_raster = NULL,
varz = NULL,
pycno_varz = NULL,
char_varz = NULL,
char_assign = "biggest_overlap",
funz = function(x, w) {
stats::weighted.mean(x, w, na.rm = TRUE)
},
return_tess = FALSE,
seed = 1
)
Arguments
pointz |
Source points layer. |
polyz |
Destination polygon layer. Must have identical CRS to |
poly_id |
Name of unique ID column for destination polygon layer. Character string. |
char_methodz |
Interpolation method(s) for character strings. Could be either of "aw" (areal weighting, default) or "pw" (population weighting). See "details". Character string. |
methodz |
Interpolation method(s) for numeric covariates. Could be either of "aw" (areal weighting, default) and/or "pw" (population weighting). See "details". Character string or vector of character strings. |
pop_raster |
Population raster to be used for population weighting, Must be supplied if |
varz |
Names of numeric variable(s) to be interpolated from source polygon layer to destination polygons. Character string or list of character strings. |
pycno_varz |
Names of spatially extensive numeric variables for which the pycnophylactic (mass-preserving) property should be preserved. Character string or vector of character strings. |
char_varz |
Names of character string variables to be interpolated from source polygon layer to destination polygons. Character string or vector of character strings. |
char_assign |
Assignment rule to be used for variables specified in |
funz |
Aggregation function to be applied to variables specified in |
return_tess |
Return Voronoi polygons, in addition to destinaton polygon layer? Default is |
seed |
Seed for generation of random numbers. Default is 1. Numeric. |
Details
This function interpolates point data to polygons with a two-step process. In the first step (tessellation), each point is assigned a Voronoi cell, drawn such that (a) the distance from its borders to the focal point is less than or equal to the distance to any other point, and (b) no gaps between cells remain. The second step (interpolation) performs a polygon-in-polygon interpolation, using the Voronoi cells as source polygons.
Currently supported integration methods in the second step (methodz
) include:
Areal weighting ("aw"). Values from
poly_from
weighted in proportion to relative area of spatial overlap between source features and geometries ofpoly_to
.Population weighting ("pw"). Values from
poly_from
weighted in proportion to relative population sizes in areas of spatial overlap between source features and geometries ofpoly_to
. This routine uses a third layer (supplied inpop_raster
) to calculate the weights.
When a list of variables are supplied and one methods argument specified, then the chosen method will be applied to all variables.
When a list of of variables are supplied and multiple methods arguments specified, then weighting methods will be applied in a pairwise order. For example, specifying varz = list(c("to1","pvs1_margin"), c("vv1"))
and methodz = c('aw', 'pw')
will apply areal weighting to the the first set of variables (to1 and pvs1_margin) and population weighing to the second set (vv1).
Interpolation procedures are handled somewhat differently for numeric and character string variables. For numeric variables supplied in varz
, "aw" and/or "pw" weights are passed to the function specified in funz
. If different sets of numeric variables are to be aggregated with different functions, both varz
and funz
should be specified as lists (see examples below).
For character string (and any other) variables supplied in char_varz
, "aw" and/or "pw" weights are passed to the assignment rule(s) specified in char_assign
. Note that the char_varz
argument may include numerical variables, but varz
cannot include character string variables.
Currently supported assignment rules for character strings (char_assign
) include:
"biggest_overlap". For each variable in
char_varz
, the features inpoly_to
are assigned a single value from overlappingpoly_from
features, corresponding to the intersection with largest area and/or population weight."all_overlap". For each variable in
char_varz
, the features inpoly_to
are assigned all values from overlappingpoly_from
features, ranked by area and/or population weights (largest-to-smallest) of intersections.
It is possible to pass multiple arguments to char_assign
(e.g. char_assign=c("biggest_overlap","all_overlap")
), in which case the function will calculate both, and append the resulting columns to the output.
Value
If return_tess=FALSE
, returns a sf
polygon object, with variables from pointz
interpolated to the geometries of polyz
.
If return_tess=TRUE
, returns a list, containing
"result". The destination polygon layer.
sf
object."tess". The (intermediate) Voronoi tessellation polygon layer.
sf
object.
Examples
# Interpolation of a single variable, with area weights
## Not run:
data(hex_05_deu)
data(clea_deu2009_pt)
out_1 <- point2poly_tess(pointz = clea_deu2009_pt,
polyz = hex_05_deu,
poly_id = "HEX_ID",
varz = "to1")
plot(out_1["to1_aw"])
## End(Not run)
# Extract and inspect tessellation polygons
## Not run:
out_2 <- point2poly_tess(pointz = clea_deu2009_pt,
polyz = hex_05_deu,
poly_id = "HEX_ID",
varz = "to1",
return_tess = TRUE)
plot(out_2$tess["to1"])
plot(out_2$result["to1_aw"])
## End(Not run)
# Interpolation of multiple variables, with area and population weights
## Not run:
data(gpw4_deu2010)
out_3 <- point2poly_tess(pointz = clea_deu2009_pt,
polyz = hex_05_deu,
poly_id = "HEX_ID",
methodz = c("aw","pw"),
varz = list(
c("to1","pvs1_margin"),
c("vv1")
),
pycno_varz = "vv1",
funz = list(
function(x,w){stats::weighted.mean(x,w)},
function(x,w){sum(x*w)}
),
char_varz = c("incumb_pty_n","win1_pty_n"),
pop_raster = gpw4_deu2010)
plot(out_3["vv1_pw"])
## End(Not run)