r - 计算数据框中两个长纬度坐标之间的距离

标签 r distance

我想计算几个 GPS 点之间的距离。 我试过了

distm(c(lon1,lat1), c(lon2,lat2), fun = distHaversine)

这适用于一个点,但不适用于我的数据框中的列。

所以我按照这里的建议进行了尝试:

Calculate distance between 2 lat longs

但这两个计算确实得到了不同的结果:

df <- read.table(sep=",", col.names=c("lat1", "lon1", "lat2", "lon2"),text="
7.348687,53.36575,7.348940,53.36507 
7.348940, 53.36507,7.350939,53.36484")


# as recommended in the link above
distHaversine(df[,2:1], df[,4:3])

[1]  80.18433 223.97181

# with distm
distm(c(7.348687,53.36575), c(7.348940,53.36507), fun = distHaversine)

         [,1]
[1,] 77.54033

distm(c(7.348940, 53.36507), c(7.350939,53.36484), fun = distHaversine)

         [,1]
 [1,] 135.2317

那么如何计算数据框列中两个 GPS 点之间的正确距离(即 distm(c(lon1,lat1), c(lon2,lat2), fun = distHaversine))?我仔细检查了这样的距离,我知道我通过这种方式得到了正确的距离。

提前致谢。

最佳答案

假设您要存储在新列中的输出是这样的:

77.54033 135.23165

试试这个

df$distance<-distHaversine(df[,1:2], df[,3:4])

应该返回

> df
      lat1     lon1     lat2     lon2  distance
1 7.348687 53.36575 7.348940 53.36507  77.54033
2 7.348940 53.36507 7.350939 53.36484 135.23165

关于r - 计算数据框中两个长纬度坐标之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42119438/

相关文章:

r - 每对观测值的马氏距离

python - 寻找最大和距离

cluster-analysis - 关于余弦相似度的一些问题

r - 如何将多个文件加载到 R 中而不覆盖现有文件?

r - 如何在我的 ggplot 热图中获取标签?

在 R 4.0 中替换 tibble 中的值

找到距位置最小总距离的点的算法

启动时将 par 重置为默认值

r - 检查 R session 何时启动?

python - python中的测地距离变换