英文:
Merging some of the polygon boundaries using sf in R
问题
我正在尝试从这个geojson文件中绘制边界。
我可以使用R
中的sf
绘制所有边界。然而,我想将一些多边形合并在一起 - 例如,POL_STN_NM = PS RAJ PARK, PS SULTAN PURI, PS MANGOL PURI
- 应该绘制为一个区域。
但是,使用st_union
未能移除内部边界。
能有人帮助我吗?我是空间映射的新手。
谢谢!
英文:
I am trying to plot the boundaries from this geojson file.
I am able to plot all the boundaries using sf
in R
. However, I would like to merge some polygons together - e.g., POL_STN_NM = PS RAJ PARK, PS SULTAN PURI, PS MANGOL PURI
- should be plotted as having one area.
However, using st_union
is not removing the internal boundaries.
Could someone please help me with this? I am new to spatial mappings.
Thank you!
答案1
得分: 2
以下是翻译好的部分:
首先,该联合体的第一个环是一个外部环,您可以提取它并将其转换为多边形和SFC以获得没有空洞的多边形:
library(sf)
#> 链接到 GEOS 3.9.3、GDAL 3.5.2、PROJ 8.2.1;sf_use_s2() 为 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)
对于一些额外的上下文:
多边形:具有正面积(二维)的几何图形;点的序列形成一个封闭的、非自交的环;第一个环表示外部环,零个或多个后续环表示此外部环中的空洞
https://r-spatial.github.io/sf/articles/sf1.html#simple-feature-geometry-types
简单要素几何图形是使用以下规则作为 R 本机数据实现的:
- 单个点是一个数值向量
- 一组点,例如 LINESTRING 或 POLYGON 的环,是一个矩阵,每一行包含一个点
- 任何其他集合都是一个列表
https://r-spatial.github.io/sf/articles/sf1.html#sfg-simple-feature-geometry
英文:
First ring of that union is an exterior ring, you can extract it and turn it to polygon & sfc to get a polygon without holes:
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)
<!-- -->
<sup>Created on 2023-05-13 with reprex v2.0.2</sup>
For some additional context:
> POLYGON : geometry with a positive area (two-dimensional); sequence of points form a closed, non-self intersecting ring; the first ring denotes the exterior ring, zero or more subsequent rings denote holes in this exterior ring
> https://r-spatial.github.io/sf/articles/sf1.html#simple-feature-geometry-types
> Simple feature geometries are implemented as R native data, using the
> following rules
> 1. a single POINT is a numeric vector
> 2. a set of points, e.g. in a LINESTRING or ring of a POLYGON is a matrix, each row containing a point
> 3. any other set is a list
>
> https://r-spatial.github.io/sf/articles/sf1.html#sfg-simple-feature-geometry
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论