2つの方法を使用してgeolifeデータセットの2点間の距離を計算しました。両方とも異なる値を示しています。第1方法2つのジオポイント間の距離計算R
、Iはharvesine距離の式を使用している以下
コードである:私はコード、検討高度下に使用している第2の方法について
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)
出力ファイル名2 output for filename1
両方の出力が異なります。
出力が添付されています。
私はどの方法を使用すべきかお考えください。私はAltitudeを考慮する必要があります。お勧めします
ようこそ! [再現可能な例]を共有する方法は次のとおりです(http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。 –
'distm()'演算はベクトル化されています。だからあなたはforloopsは必要ありません。あなたは[Geographic Information Systems](http://gis.stackexchange.com)フォーラムに投稿して、あなたのアプローチについての勧告を得たいかもしれません。 –