更新日期 20190506
1 问题
已知巴黎的地理坐标为东经2°20'14'',北纬48°50'11'',华盛顿的地理坐标为西经 77°03'56'',北纬 38°55'17'',求两城间的距离(单位千米)。
2 分析:
已知经纬度,求两点间的地理距离,不能直接用经纬度求平面距离,而是要计算球面距离(Great Circle Distance)。
如果对精度要求不高,可以用低精度公式,计算过程相对简单。如果对经度要求较高, 则要用高精度公式。高精度公式一般用于天文计算、大地测量等。在距离较远的城市之间, 两种方法所得结果可相差几十千米。
当然,现在全部通过计算机程序计算,都是直接使用高精度方法了。本文参考比利时天文学家Jean Meeus (1991)的《天文算法》81-86页的公式,给出相应的R代码。
2.1 将经纬度的度、分、秒转换为十进制
定义函数deg2dec完成这一转换:deg2dec
if(h
m = - m
s = -s
}
res = h + m/60 + s/3600
return(res)
}
## 巴黎
L1 = deg2dec(-2,20,14)
phi1 = deg2dec(48, 50, 11)
## 华盛顿
L2 = deg2dec(77,03,56)
phi2 = deg2dec(38,55,17)