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