【发布时间】:2020-06-19 06:44:25
【问题描述】:
我有一个带有经度和纬度的位置数据框,它看起来像:
set.seed(211)
latitude <-runif(5000, min=50, max=55)
longitude <- runif(5000, min=-2, max=0)
location_id <- seq(1,5000)
reprex <- data.frame(location_id, latitude, longitude)
对于每个 location_id,我需要计算列表中距离该位置 10 英里(约 16000 米)范围内的其他位置的数量。
我正在考虑在某种 for 循环(或者可能是应用函数)中为此使用 geosphere::distGeo(),但我只是无法弄清楚如何对其进行编码,以便它比较列表中的所有其他项目使用当前项目并计算有多少在某个阈值内,记录该值,然后移动到下一行。
有人知道怎么写吗?
【问题讨论】:
-
这里的计算速度是一个重要问题吗?针对您的问题,最简单的代码选项可能不会是最快的。如果您需要速度,当然值得开发一种算法,将您的点分为几类(想想地图上的网格模式)。如果您的网格步长为 10 英里,那么您只需查看同一组或相邻组中的元素,而不是浏览每个点的整个地图。根据您拥有的点数及其密度,此优化的影响可能或多或少重要。
标签: r loops apply latitude-longitude geo