我正在尝试从这个 geojson 文件中绘制边界。
我可以在
sf
中使用R
绘制所有边界。但是,我想将一些多边形合并在一起 - 例如,POL_STN_NM = PS RAJ PARK, PS SULTAN PURI, PS MANGOL PURI
- 应该被绘制为具有一个区域。
但是,使用
st_union
并没有消除内部边界。
有人可以帮我解决这个问题吗?我是空间映射的新手。
谢谢! :)
联合的第一个环是一个外环,您可以提取它并将其转换为多边形和 sfc 以获得没有孔的多边形:
library(sf)
#> Linking to GEOS 3.9.3, GDAL 3.5.2, PROJ 8.2.1; sf_use_s2() is TRUE
library(dplyr)
pls <- st_read("https://gist.githubusercontent.com/Vonter/a1f0f9d50a587ce059ddcfb086fc0fac/raw/fcf1b53987b15bb9ee37820e655ae874b8e214fa/Police%2520Station%2520Boundary.geojson")
with_holes <- pls[pls$POL_STN_NM %in% c("PS RAJ PARK", "PS SULTAN PURI", "PS MANGOL PURI"), ] |>
st_union()
ext_ring <- st_polygon(with_holes[[1]][1]) |> st_sfc(crs = st_crs(pls))
par(mfrow=c(1,2))
plot(with_holes)
plot(ext_ring)
创建于 2023-05-13 与 reprex v2.0.2
对于一些额外的上下文:
POLYGON :具有正面积的几何体(二维);点序列形成一个封闭的、非自相交的环; 第一个环表示外环,零个或多个后续环表示该外环中的孔
https://r-spatial.github.io/sf/articles/sf1.html#simple-feature-geometry-types
简单的特征几何被实现为 R 原生数据,使用 遵守规则
- 单个 POINT 是一个数字向量
- 一组点,例如在 LINESTRING 或 POLYGON 的环中是一个矩阵,每行包含一个点
- 任何其他集合都是列表
https://r-spatial.github.io/sf/articles/sf1.html#sfg-simple-feature-geometry