5

你如何绘制代表地球平面地图上两点之间最短距离的曲线?

当然,这条线不会是一条直线,因为地球是弯曲的。(例如,两个机场之间的最短距离是弯曲的。)

编辑:感谢所有的答案家伙 - 抱歉我选择解决方案很慢:/

4

2 回答 2

11

我从航空处方集得到这类信息。

在这种情况下:

点之间的距离

坐标为 {lat1,lon1} 和 {lat2,lon2} 的两点之间的大圆距离 d 由下式给出:

d=acos(sin(lat1)*sin(lat2)+cos(lat1)*cos(lat2)*cos(lon1-lon2))

一个数学上等价的公式是:

d=2*asin(sqrt((sin((lat1-lat2)/2))^2 + cos(lat1)*cos(lat2)*(sin((lon1-lon2)/2))^2))

大圆上的中间点

在前面的部分中,我们已经在给定交叉纬度或经度的大圆上找到了中间点。在这里,我们发现点 (lat,lon) 是它们之间距离 (d) 的给定分数。假设起点是 (lat1,lon1),终点是 (lat2,lon2),我们希望该点是沿大圆路线的分数 f。f=0 是第 1 点。f=1 是第 2 点。这两个点不能对映(即 lat1+lat2=0 和 abs(lon1-lon2)=pi),因为这样路线是未定义的。然后由下式给出中间纬度和经度:

    A=sin((1-f)*d)/sin(d)
    B=sin(f*d)/sin(d)
    x = A*cos(lat1)*cos(lon1) +  B*cos(lat2)*cos(lon2)
    y = A*cos(lat1)*sin(lon1) +  B*cos(lat2)*sin(lon2)
    z = A*sin(lat1)           +  B*sin(lat2)
    lat=atan2(z,sqrt(x^2+y^2))
    lon=atan2(y,x)
于 2009-12-08T16:32:52.997 回答
2

要将地球表面上两点之间的 3D 最短路径绘制到地球表面的 2D 地图上,您必须知道地球的 3D 表面是如何投影到相关的 2D 地图上的。如果您知道所使用的投影,只需将其应用于 3D 最短路径即可将其投影到 2D 地图上。如果您不知道使用的确切投影,但可以通过某种界面访问它(即输入 3D 表面坐标 -> 输出 2D 地图坐标),您可以沿 3D 表面路径采样点,生成它们对应的地图通过所述界面点,然后用线段/贝塞尔曲线/等近似投影路径。通过投影的样本点。

于 2009-12-08T16:45:34.347 回答