使用R计算多边形之间的最小距离

7
我对R和sf包还不是很熟悉...
我有两组多边形数据需要分析。我的第一组多边形(fires)包含数百个野火边界。第二组(towns)包含数百个城市区域边界。
对于每个火灾,我想计算到最近城镇的距离(从火灾多边形边缘到最近城镇多边形边缘),并将其作为每个火灾的字段添加。
到目前为止,我主要使用sf包进行空间数据处理。在我的搜索中,我只能找到多边形到点、点到点、线到点等最小距离方法,但似乎找不到多边形到多边形的示例。如果您能帮助指导一下正确的方向,我将不胜感激!谢谢。

1
st_join(fires, towns, join = st_nearest_feature) 这样做可以达到你的要求吗? - TimSalabim
谢谢,我认为这对于空间连接是有效的。然而,它似乎没有给我连接多边形之间的距离。您有什么想法如何让它将距离放入另一列中吗? - shindig
1
您需要使用st_nearest_feature(fires, towns)函数,它将为每个火灾返回最近城镇的索引。然后,您可以使用st_distance函数来计算它们之间的距离,设置pairwise = TRUE(我想是这样 - 目前不在电脑旁)。 - TimSalabim
1个回答

9

@TimSalabim感谢你指引我正确的方向。我已经完成了想要做的事情。虽然可能不是最优雅的解决方案,但它确实有效。

# create an index of the nearest feature
index <- st_nearest_feature(x = poly1, y = poly2)

# slice based on the index
poly2 <- poly2 %>% slice(index)

# calculate distance between polygons
poly_dist <- st_distance(x = poly1, y= poly2, by_element = TRUE)

# add the distance calculations to the fire polygons
poly1$distance <- poly_dist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接