【发布时间】:2017-02-20 00:54:31
【问题描述】:
我使用 2 种方法计算了 geolife 数据集上 2 个点之间的距离,两者都给出了不同的值。
对于第一种方法,我使用了 harvesine 距离公式
下面是代码:
for(i in 905:921){
geodistt[i] <- distm (c(lon1=filename$Longitude[i-1], lat1=filename$Latitude[i-1]), c(lon2=filename$Longitude[i], lat2=filename$Latitude[i]), fun = distHaversine)
}
filename2 <- data.frame(filename,tdiff,geodist)
对于第二种方法,我使用了下面的代码并考虑了高度,
for(i in 905:921){
Vincenty <- distance(lat1=filename$Latitude[i-1],lon1=filename$Longitude[i-1],lat2=filename$Latitude[i],lon2=filename$Longitude[i])
DirectDistance <- as.numeric(Vincenty[5]) # the fifth element of the output frame is the distance between the points.
#To be more accurate, we also take into account difference in altitude between the points
AltitudeChange <- abs(filename$Altitude[i]-filename$Altitude[i-1])
if(AltitudeChange!=0)
geodistt[i] <- sqrt(DirectDistance^2+AltitudeChange^2)
else
geodistt[i] <- DirectDistance
}
filename1 <- data.frame(filename,tdiff,geodistt)
print(filename1)
filename2 的输出output for filename1
两个输出都不同。
附加输出。
您能否建议我应该使用哪种方法。我需要考虑海拔高度吗?请推荐
【问题讨论】:
-
欢迎来到 SO!分享reproducible example的方法如下。
-
distm()操作是矢量化的。所以你不需要forloops。您可能想尝试在Geographic Information Systems 论坛上发布它,以获得有关您的方法的建议。
标签: r