谷歌地图
我已经看到许多使用Douglas-Peucker多义线简化算法生成GPolyline的各种编程语言的示例,这些示例语言将用于Google地图。 该算法在计划中用多义线表示时,涉及计算点与线之间的距离(通过两个其他点)。
现在我所看到的所有例子都是以非常天真的方式应用算法,只需用经度和纬度代替x和y即可。 只要折线非常局部,不太靠近极点,并且不穿过180°子午线,这可能会产生可接受的结果,但是我希望实现更一般的算法。
所以,如果我没有弄错,我需要计算球体表面上最短弧的长度,从一个点到通过球体表面的其他两个点的圆,其中心与球体的中心(地球)。
有人知道计算这个长度的公式吗?
提前致谢
我试图用单位向量p , q和r来表示所有的东西,这些单位向量可以看作是以原点0为中心的单位球面Σ上的点。 您可以通过按地球半径放大将其转换为地面数量。 这里有一些背景资料。
我们想要找到从p到经过q和r的大圆C的大圆距离d。 C是平面P和球体Σ的交点,其中P是通过q , r和原点0的平面。 d仅仅是p和P之间的角度θ(以弧度表示)。 P的法向矢量是归一化的叉积q × r /sinφ,其中φ是q和r之间的角度。
我们结束了
θ= 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