如何只保留高速公路穿过的县?

How to only keep counties crossed by a motorway?

我是 R 的新手,对于使用 sf 和 ggplot2 包在 R 上绘制 GIS 也非常陌生。我有一个数据集“comuni”,其中包含意大利的所有公社(类似于县)和意大利所有高速公路之一,名为“only_motorway”。我知道我可以将某些区域用作千篇一律,并使用 st_intersection() 函数仅保留包含在这些区域内的高速公路。但是,如果我有 A3 高速公路的 shapefile,我想做相反的事情,我只想保留那些被该特定高速公路穿过的公社。

我试过按以下方式使用 st_intersection 函数:

only_motorway_A3 <- only_motorway %>%
  filter(ref == "A3")

comuni_A3 <- st_intersection(only_motorway_A3,comuni)

ggplot() +
  geom_sf(data = comuni_A3, 
          color = "black", size = 0.1, fill = "black") +
  geom_sf(data = only_motorway_A3, size = 0.15, color = "green") +
  coord_sf(crs = 32632) +  
  theme_void()

但是结果如下图:

ggplot

即 only_motorway_A3 和 comuni_A3 具有相同的几何列,并且它们都绘制了高速公路线。我想绘制的是来自 only_motoway_A3 的高速公路(绿色)和它周围的公社(黑色)从 comuni_A3 穿​​过。我希望它清楚,并提前感谢您的帮助!

考虑一个 sf::st_join() 调用,首先使用多边形,然后使用线串对象,参数 left 设置为 false。

它将执行两个对象的内部(过滤)空间连接。只有那些包含高速公路的多边形(第一个参数)将被保留。