View source: R/add_spatial_relations.R
| add_spatial_rook | R Documentation |
Build and register a rook adjacency relation from planning-unit polygons.
Two planning units are rook-adjacent if they share a boundary segment of positive length. Corner-only contact does not count as rook adjacency.
add_spatial_rook(x, geometry = NULL, name = "rook", weight = 1)
x |
A |
geometry |
Optional |
name |
Character string giving the key under which the relation is stored. |
weight |
Numeric scalar giving the edge weight assigned to each rook adjacency. |
Use this function when neighbourhood should be defined by shared polygon edges rather than by point-touching or coordinate-based proximity.
This constructor derives an adjacency graph from polygon geometry using a
rook criterion. If planning units i and j share a common edge of
non-zero length, then an edge (i,j) is added to the relation.
Let G = (\mathcal{I}, E) denote the resulting graph. Then:
(i,j) \in E \quad \Longleftrightarrow \quad
\mathrm{length}(\partial i \cap \partial j) > 0.
All edges receive the same user-supplied weight.
The resulting relation is stored as an undirected spatial relation.
An updated Problem object.
add_spatial_queen,
add_spatial_boundary
# Load a complete simulated planning problem.
example_data <- load_sim_multiaction()
p <- create_problem(
pu = example_data$planning_units,
features = example_data$features,
dist_features = example_data$dist_features,
cost = "cost"
)
p <- add_spatial_rook(
x = p,
geometry = example_data$planning_units,
name = "rook",
weight = 1
)
head(p$data$spatial_relations$rook)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.