GPS 点在表示轨迹的线段上的投影
Projection of a GPS point on a segment representing a trajectory
考虑下图中的 A-B 段;每个肢体都是由纬度和经度定义的 GPS 点(该段实际上是一个弧形,因为它位于地球表面)。
C 点不属于线段。我想计算点 P 的纬度和经度,即点 C 在 A-B 段上的投影。
有没有办法在不移动到局部笛卡尔系统(例如 Lat/Long/Alt -> North/East/Down)并返回的情况下做到这一点?我想避免它,因为这些点实际上是跨越许多公里的长途路线的一部分,并且局部笛卡尔系统不会覆盖全部范围。
可以使用latlong页的公式组合找到P点。
首先求δ12
和δ13
-angular从起点到终点和第三点的距离(距离部分)
然后轴承θ13
和θ12
从起点到第三点和终点(轴承部分)
获取交叉轨道angular距离
δxt = asin( sin(δ13) ⋅ sin(θ13−θ12) )
用它来获得沿航迹angular距离
δat = acos( cos(δ13) / cos(δxt) )
并计算中间点P
a = sin(δ12 - δat) / sin δ12
b = sin(δat) / sin δ12
x = a ⋅ cos φ1 ⋅ cos λ1 + b ⋅ cos φ2 ⋅ cos λ2
y = a ⋅ cos φ1 ⋅ sin λ1 + b ⋅ cos φ2 ⋅ sin λ2
z = a ⋅ sin φ1 + b ⋅ sin φ2
φi = atan2(z, √x² + y²)
λi = atan2(y, x)
考虑下图中的 A-B 段;每个肢体都是由纬度和经度定义的 GPS 点(该段实际上是一个弧形,因为它位于地球表面)。
C 点不属于线段。我想计算点 P 的纬度和经度,即点 C 在 A-B 段上的投影。
有没有办法在不移动到局部笛卡尔系统(例如 Lat/Long/Alt -> North/East/Down)并返回的情况下做到这一点?我想避免它,因为这些点实际上是跨越许多公里的长途路线的一部分,并且局部笛卡尔系统不会覆盖全部范围。
可以使用latlong页的公式组合找到P点。
首先求δ12
和δ13
-angular从起点到终点和第三点的距离(距离部分)
然后轴承θ13
和θ12
从起点到第三点和终点(轴承部分)
获取交叉轨道angular距离
δxt = asin( sin(δ13) ⋅ sin(θ13−θ12) )
用它来获得沿航迹angular距离
δat = acos( cos(δ13) / cos(δxt) )
并计算中间点P
a = sin(δ12 - δat) / sin δ12
b = sin(δat) / sin δ12
x = a ⋅ cos φ1 ⋅ cos λ1 + b ⋅ cos φ2 ⋅ cos λ2
y = a ⋅ cos φ1 ⋅ sin λ1 + b ⋅ cos φ2 ⋅ sin λ2
z = a ⋅ sin φ1 + b ⋅ sin φ2
φi = atan2(z, √x² + y²)
λi = atan2(y, x)