在 R 中使用 sf 合并一些多边形边界

问题描述 投票:0回答:1

我正在尝试从这个 geojson 文件中绘制边界。

我可以在

sf
中使用
R
绘制所有边界。但是,我想将一些多边形合并在一起 - 例如,
POL_STN_NM = PS RAJ PARK, PS SULTAN PURI, PS MANGOL PURI
- 应该被绘制为具有一个区域。

但是,使用

st_union
并没有消除内部边界。

有人可以帮我解决这个问题吗?我是空间映射的新手。

谢谢! :)

r geojson shapefile sf
1个回答
1
投票

联合的第一个环是一个外环,您可以提取它并将其转换为多边形和 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 原生数据,使用 遵守规则

  1. 单个 POINT 是一个数字向量
  2. 一组点,例如在 LINESTRING 或 POLYGON 的环中是一个矩阵,每行包含一个点
  3. 任何其他集合都是列表

https://r-spatial.github.io/sf/articles/sf1.html#sfg-simple-feature-geometry

© www.soinside.com 2019 - 2024. All rights reserved.