我已找到解决方案,但是,我需要提高效率。
现在我将描述这项任务。
从:
开始SpatialPoints
; SpatialLinesDataFrame
形式的道路形状文件
我将SpatialPoints
划分为n
个块,然后依次将while loop
应用于每个块。此while loop
包含:
rgeos::gDistance()
执行point
函数,以便关联它所属的line
。事实上,rgeos::gDistance()
的输出是一个巨大的matrix
,其中每个row
代表一个点,每个column
代表distance
之间的point
lines
}和所有 SpatialLinesDataFrame
的{{1}}。apply(gDistMatrix, 1, which.min))
我能够通过保持每个点仅最近的行来减少matrix
维度。最后,我可以顺序read
循环中保存的所有文件并执行rbind()
。最终目标是找到每个GPS点的街道名称。
这一刻
这个while loop
的速度瓶颈主要是两个:
rgeos::gDistance()
引起的,因为对于每个GPS,它计算SpatialLinesDataFrame
的所有线之间的距离,而不是仅仅比较(例如)200米半径的线通过并行运行多个块来解决目标的最佳方法是什么?重要的是要考虑SpatialPoints
的所有不同块只与一个SpatialLinesDataFrame
进行比较。
如果我不清楚,请不要犹豫要求澄清。