Generate a matrix describing the amount of shared boundary length between different planning units, and the amount of exposed edge length each planning unit exhibits.
boundary_matrix(x, str_tree) # S3 method for Raster boundary_matrix(x, str_tree = FALSE) # S3 method for SpatialPolygons boundary_matrix(x, str_tree = FALSE) # S3 method for SpatialLines boundary_matrix(x, str_tree = FALSE) # S3 method for SpatialPoints boundary_matrix(x, str_tree = FALSE) # S3 method for default boundary_matrix(x, str_tree = FALSE)
x 


str_tree 

Matrix{dsCMatrixclass}
object.
This function returns a dsCMatrixclass
symmetric sparse matrix. Cells on the offdiagonal indicate the length of
the shared boundary between two different planning units. Cells on the
diagonal indicate length of a given planning unit"s edges that have no
neighbors (e.g. for edges of planning units found along the
coastline). This function assumes the data are in a coordinate
system where Euclidean distances accurately describe the proximity
between two points on the earth. Thus spatial data in a longitude/latitude
coordinate system (aka
WGS84)
should be reprojected to another coordinate system before using this
function. Note that for Rasterclass
objects
boundaries are missing for cells that have NA
values in all cells.
# load data data(sim_pu_raster, sim_pu_polygons) # subset data to reduce processing time r < crop(sim_pu_raster, c(0, 0.3, 0, 0.3)) ply < sim_pu_polygons[c(1:2, 10:12, 20:22), ] # create boundary matrix using raster data bm_raster < boundary_matrix(r) # create boundary matrix using polygon data bm_ply1 < boundary_matrix(ply) # create boundary matrix using polygon data and GEOS STR query trees # to speed up processing bm_ply2 < boundary_matrix(ply, TRUE) # plot raster and boundary matrix par(mfrow = c(1, 2)) plot(r, main = "raster", axes = FALSE, box = FALSE) plot(raster(as.matrix(bm_raster)), main = "boundary matrix", axes = FALSE, box = FALSE)# plot polygons and boundary matrices par(mfrow = c(1, 3)) plot(r, main = "polygons", axes = FALSE, box = FALSE) plot(raster(as.matrix(bm_ply1)), main = "boundary matrix", axes = FALSE, box = FALSE) plot(raster(as.matrix(bm_ply2)), main = "boundary matrix (STR)", axes = FALSE, box = FALSE)