我试图用宣传单封装中的R画一个放大器和连接给出下表中的经度和纬度信息的标记.
| Observation | InitialLat | InitialLong | NewLat | NewLong |
|-------------|------------|-------------|-----------|-----------|
| A | 62.469722 | 6.187194 | 51.4749 | -0.221619 |
| B | 48.0975 | 16.3108 | 51.4882 | -0.302621 |
| C | 36.84 | -2.435278 | 50.861822 | -0.083278 |
| D | 50.834194 | 4.298361 | 54.9756 | -1.62179 |
| E | 50.834194 | 4.298361 | 54.9756 | -1.62179 |
| F | 50.834194 | 4.298361 | 51.4882 | -0.302621 |
| … 我想计算几个 GPS 点之间的距离。我试过
distm(c(lon1,lat1), c(lon2,lat2), fun = distHaversine)
Run Code Online (Sandbox Code Playgroud)
这仅适用于一点,但不适用于我的数据框中的列。
所以我按照这里的建议尝试:
但是对于这两个计算,我确实得到了不同的结果:
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
Run Code Online (Sandbox Code Playgroud)
那么如何计算数据帧列中两个 GPS 点之间的正确距离(即 distm(c(lon1,lat1), c(lon2,lat2), fun = distHaversine))?我仔细检查了这么远的距离,我知道我通过这种方式获得了正确的距离。
提前致谢。