R 如何使用sf::st_相交从相邻多边形列表中过滤出每个多边形
我需要为R 如何使用sf::st_相交从相邻多边形列表中过滤出每个多边形,r,polygon,sf,R,Polygon,Sf,我需要为sf数据集中的每个多边形提取相邻多边形 下面是一个简单的例子: library(tidyverse) library(sf) demo(nc, ask = FALSE, verbose = FALSE) nc <- nc %>% mutate(polygon_id = row_number()) 问题是每个多边形(这里,5)都包含在邻居列表中。只使用一个nc数据集可以得到相同的结果 neighbors <- st_intersects(nc) neighbor
sf
数据集中的每个多边形提取相邻多边形
下面是一个简单的例子:
library(tidyverse)
library(sf)
demo(nc, ask = FALSE, verbose = FALSE)
nc <- nc %>%
mutate(polygon_id = row_number())
问题是每个多边形(这里,5)都包含在邻居列表中。只使用一个nc
数据集可以得到相同的结果
neighbors <- st_intersects(nc)
neighbors[[5]]
[1] 5 6 9 16 28
邻居问得好。这个问题可能有很多解决方案。但这个问题的简单答案是:“关于如何从相邻/相邻多边形列表中过滤出实际多边形的任何提示?”
,它是使用带有R内核的Jupyter Lab IDE完成的。下面的代码提供了一种回答问题的方法
nc数据集中有100个县。此代码以颜色显示选定的县,并显示所有相邻县。此代码适用于北卡罗来纳州100个县中的任何一个县。这里选择了100个县
代码:
nc1%突变(c_id=1:nrow(nc))
n=100
grp我设法用st_touch
而不是st_intersects
neighbors <- st_intersects(nc)
neighbors[[5]]
[1] 5 6 9 16 28
nc1 <- nc %>% mutate(c_id = 1:nrow(nc))
n = 100
grp <- st_intersects(nc1, nc1[n,1] , sparse = F )
neighborhood <- nc1[grp,]
neighborhood
plot(neighborhood$geom)
plot(nc1[n,1], col = 'blue', add = TRUE) #