确定与 R 中的多边形相交的线

Determine lines that intersect a polygon in R

我有一个包含 1,000 条线的数据集,我可以将其叠加在剖面地图(Sec、Township、Range)上。我需要识别并收集有哪些线穿过它们的部分的名称。

我可以在多边形中找到一个点,但不能找到一条线。线路可以穿越多个路段。我想我需要一个循环来执行此操作,但我遇到了麻烦。

我有一个例子可以帮助描述我想要实现的目标。

如有任何帮助,我们将不胜感激!

如果您有标准格式的多边形和线条,您可以使用 st_intersects 来自 sf 包。以下是使用北卡罗来纳州的三个县作为示例 多边形。

加载sf:

library(sf)
#> Linking to GEOS 3.8.0, GDAL 3.0.2, PROJ 6.2.1

制作多边形数据(免责声明:用于快速说明地理经度、纬度 此处使用坐标,但应使用真正的平面投影坐标):

nc <- st_read(system.file("shape/nc.shp", package="sf"), quiet = TRUE)
n <- 3
poly_dat <- st_sf(poly_id = LETTERS[1:n], nc$geometry[1:n])

制作行数据:

line1 <- st_linestring(rbind(c(-81.8,36.5),c(-80.5,36.5)))
line2 <- st_linestring(rbind(c(-81,36.3),c(-80.5,36.3)))
line_dat <- st_sf(linename = c("1", "2"), geometry = st_sfc(line1, line2, crs = st_crs(poly_dat)))

剧情:

plot(poly_dat, reset = FALSE)
plot(line_dat, add = TRUE, col = 1:2, lty = 2)
legend("topright", legend = paste("Line", 1:2), col = 1:2, lty = 2)

查找交叉点:

st_intersects(line_dat, poly_dat)
#> although coordinates are longitude/latitude, st_intersects assumes that they are planar
#> Sparse geometry binary predicate list of length 2, where the predicate was `intersects'
#>  1: 1, 2, 3
#>  2: 3