我需要计算从经纬度GPS点P到由另外2个经纬度GPS点A和B所描述的线段的最短距离。
“跨轨距离”可帮助我计算P与A和B所描述的大圆之间的最短距离。
但是,这不是我想要的。我需要P和A-B的segment线之间的距离,而不是整个大圆。
我使用了http://www.movable-type.co.uk/scripts/latlong.html中的以下实现
Formula: dxt = asin( sin(δ13) ⋅ sin(θ13−θ12) ) ⋅ R
where:
δ13 is (angular) distance from start point to third point
θ13 is (initial) bearing from start point to third point
θ12 is (initial) bearing from start point to end point
R is the earth’s radius
在第一张图像中,由[[绿色线表示的跨轨距离是正确的,并且实际上是到线段AB的最短距离。
在第二幅图像中,显示了跨轨距离的问题,在这种情况下,我希望最短的距离为简单距离AP,但是跨轨距离为我提供了由[[red线表示的距离。我如何更改算法以考虑到这一点,或检查点X是否在AB内。可以通过计算来做到这一点吗?还是迭代是唯一可能的(昂贵的)解决方案? (沿AB取N个点,并计算从P到所有这些点的最小距离)
为简单起见,图像中的所有线条均为直线。实际上,这些是大圆弧上的小弧线