谷歌地图

我已经看到许多使用Douglas-Peucker多义线简化算法生成GPolyline的各种编程语言的示例,这些示例语言将用于Google地图。 该算法在计划中用多义线表示时,涉及计算点与线之间的距离(通过两个其他点)。

现在我所看到的所有例子都是以非常天真的方式应用算法,只需用经度和纬度代替x和y即可。 只要折线非常局部,不太靠近极点,并且不穿过180°子午线,这可能会产生可接受的结果,但是我希望实现更一般的算法。

所以,如果我没有弄错,我需要计算球体表面上最短弧的长度,从一个点到通过球体表面的其他两个点的圆,其中心与球体的中心(地球)。

有人知道计算这个长度的公式吗?

提前致谢


我试图用单位向量pqr来表示所有的东西,这些单位向量可以看作是以原点0为中心的单位球面Σ上的点。 您可以通过按地球半径放大将其转换为地面数量。 这里有一些背景资料。

我们想要找到从p到经过qr的大圆C的大圆距离d。 C是平面P和球体Σ的交点,其中P是通过qr和原点0的平面。 d仅仅是pP之间的角度θ(以弧度表示)。 P的法向矢量是归一化的叉积q × r /sinφ,其中φ是qr之间的角度。

我们结束了

θ= arcsin( p ·( q × r )/sinφ)

正如我所说,这里的一切都会被地球半径R放大。 所以这三点是* R *** p **,* R *** q **,* R *** r **,距离是Rθ。

但是,如果你想要的是找到最短距离的点/线组合,则可以省略由R.乘以事实上,你可以省略反正弦(),只是看在p⋅的相对大小(Q×R )/sinφ。

链接地址: http://www.djcxy.com/p/47293.html

上一篇: google maps

下一篇: No compilation warning with @Deprecated annotation?