【问题标题】:Distance calculation between 2 geopoints in RR中2个地理点之间的距离计算
【发布时间】: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

Filename2

两个输出都不同。

附加输出。

您能否建议我应该使用哪种方法。我需要考虑海拔高度吗?请推荐

【问题讨论】:

标签: r


【解决方案1】:

这取决于你为什么要做你正在做的事情。如果鸟儿飞行时从一个地图点上的某个位置到另一个位置的直线距离很重要,那么您需要包含海拔变化的那个。

它基本上是给你一个直角三角形的斜边从较低的点到第二个地图上的点,然后用高度做一些花哨的数学,给你从点到点的直线路径,包括上升。

如果您只对点到点的近似海平面距离感兴趣,就好像画在一个无纹理的球上一样,请使用另一种方法。

每个都有其优点和缺点。您需要确定最适合您使用的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多