在R sf中计算点与最近线之间的欧氏距离的计算效率高的方法

rwqw0loc  于 2023-10-13  发布在  其他
关注(0)|答案(1)|浏览(104)

我有一个大的GPS位置数据集(480,476)和一个大的道路(线; 561487),并且我想有效地计算每个点到最近道路的距离。
如果我尝试使用**st_distance(points_sf,roads_sf)**来计算距离矩阵:points_sf(1:480476)中的每个点与roads_sf(1:561487)中的每条线之间的欧氏距离太大。因此,我将它按ID分成更小的块,这更易于管理。尽管如此,它还是花了很长时间(> 1天),占用了大量的内存,使我无法在计算机上运行任何其他东西或冒着崩溃的风险(即使有64 GB的RAM)。
在R中有没有更有效的计算方法来进行这种计算?

uurity8g

uurity8g1#

到目前为止,我所做的就是使用**st_nearest_feature()**来识别每个点的最近直线,然后计算该点与其最近直线之间的距离。
这是我的解决方案:

near_rd = st_nearest_feature(points_sf, roads_sf)
    dist_rd = sapply(1:length(near_rd), function(x)
                  st_distance(points_sf[x,], roads_ms[near_rd[x],]))

相关问题