R:找出边界坐标列表

roqulrg3  于 2023-04-03  发布在  其他
关注(0)|答案(2)|浏览(95)

假设我有这张Map,代表R中北卡罗来纳州(美国)的边界:

library(sf)  
library(leaflet)
library(dplyr)

# built in shapefile
nc <- st_read(system.file("gpkg/nc.gpkg", package="sf"), quiet = TRUE) %>% 
    st_transform(st_crs(4326)) %>% 
    st_cast('POLYGON')

nc <- nc[nc$NAME %in% c("Cleveland", "Gaston", "Rutherford", "Burke"), ]    

leaflet(data = nc) %>% addPolygons( stroke = FALSE) %>% addTiles(group = "OSM") %>%  addProviderTiles(provider = providers$OpenStreetMap) %>% addPolygons(data = nc, weight=1, popup = ~NAME, label = ~NAME, group = "name", col = 'blue')

**我的问题:**我试图找出描述这个多边形外部的坐标列表(即“红色”):

我为此尝试了以下代码:

# Extract the boundary of the nc object
nc_boundary <- st_boundary(nc)

# Get the coordinates of the boundary
nc_boundary_coords <- data.frame(st_coordinates(nc_boundary))

然而,当我试图绘制这个图时-我可以看到该图不对应于外部边界,但也包含交叉点:

plot(nc_boundary_coords$X, nc_boundary_coords$Y)

我想我可以通过删除所有重复的示例来解决这个问题-但这仍然不起作用:

df = data.frame(nc_boundary_coords$X, nc_boundary_coords$Y)

df <- df[!duplicated(df), ]

但什么都没改变。
有人能告诉我怎么修吗?
谢谢!

w8f9ii69

w8f9ii691#

使用st_union()将所选县合并为单个几何体:

library(sf)

nc_boundary_coords <- nc %>%
  st_union() %>%
  st_boundary() %>%
  st_coordinates() %>%
  data.frame()

plot(nc_boundary_coords$X, nc_boundary_coords$Y)

egmofgnx

egmofgnx2#

这是你想要的吗?不同的是我先创建了一个联合。你展示的图看起来像是有内部和外部边界的边界。

nc_coords <- st_union(nc) %>% 
              st_boundary() %>% 
              st_coordinates() %>% 
               as.data.frame()

plot(nc_coords$X, nc_coords$Y)

相关问题