计算空间点与空间线之间的距离

问题描述 投票:0回答:1

我有一个简单的要素对象,其中包含空间点(坐标),并且我有一个大的 SpatialLinesDataframe (代表道路)。 我有大约 9000 个点,我想计算 SpatialLinesDataframe 中每个点与最近道路之间的最短距离。由于 rgdal 和 rgeos 现已弃用,我不确定如何才能最好地有效地计算这些距离(即 gDistance 不起作用)。如有任何帮助,我们将不胜感激!

r spatial
1个回答
0
投票

鉴于这些点已经是一个 sf 表,您可以将 SpatialLinesDataframe 转换为 sf 对象,然后使用 sf 包中的 st_nearest_feature 返回每个点的最近道路的索引。

lines_sf <- sf::st_as_sf(lines_df)

# Creates a vector of indexes 
nearest_lines <- sf::st_nearest_feature(points, lines_sf)

如果您想从线到点 df 添加属性(即连接两者),反之亦然,您可以使用空间连接,如下所示:

# This will return the points with any attributes from the nearest lines attached 
lines_with_nearest_point <- st_join(points, lines_sf, join = st_nearest_feature)
© www.soinside.com 2019 - 2024. All rights reserved.