我有一个包含经度和纬度数据的数据框,我想计算每个连续点之间的距离。
我发现geosphere包中的distm
计算距离,但它需要输入经度/纬度(可以是两个数字的向量,一个2列的矩阵(第一个是经度,第二个)是来自两个连续点的纬度)或SpatialPoints*
个对象。
distm(x, y, fun=distHaversine)
如何生成x
和y
?
@Josh O'Brien评论:
PTS
lon lat
30.5 -42.5
31.5 -42.5
32.5 -43.5
33.5 -43.5
35.5 -43.5
我得到了
segDists
82198.54 137803.62 80876.19 161749.47
答案 0 :(得分:0)
将您的数据用作dat:
sapply(2:nrow(dat),function(i){distm(dat[i-1,],dat[i,])})
# [1] 82072.86 137911.46 80747.82 161492.73
如果您在代码段中将distHaversine(...)
替换为distVincentyEllipsoid(...)
,则与@JoshObrien的结果相同。