gpt4 book ai didi

Delphi计算WGS84 2点的交集

转载 作者:行者123 更新时间:2023-12-03 15:29:43 25 4
gpt4 key购买 nike

嗨,谁能告诉我或给我一些关于如何计算 2 个 WGS84 点与方位的交集的提示 -

A点+方位角,B点+方位角=C点(两点的交点)

非常感谢科林

最佳答案

我认为你的问题是“如何计算两条线的交点?” (为了简单起见,L1和L2)

您必须获得线方程 y=mx + q,即计算 L1 和 L2 的 m 和 q 系数,以便得到两个方程:

y=m1x + q1
y=m2x + q2

交集就是这个线性系统的解

x = (q1 - q2) / (m2 - m1); y = m2 / (m2-m1) * (q1 - q2) + q2
// Please check the equations I writing calculating it on the fly

您的数据是椭球体上的两个点和两个角度(方位角):

P1=[x1; y1], bearing1 = alfa1
P2=[x2; y2], bearing1 = alfa2

您必须将点投影到平面上才能使用上述线性几何图形。我想您有 WGS84 点:使用 proj4 api。

所以现在的问题是从数据中得到经典的直线方程。但我们可以用极坐标解释来对待这些线:

给定点 P0=[x0, y0] 和角度 (alfa),线方程 P(t) 为

L(t) = [x0 + cos(alfa) * t, y0 + cos(alfa) * t ], with t in the range [-inf, + inf]

所以

L1(t) = [y1 + cos(alfa1) * t, y1 + cos (alfa1) * t] ;
L2(t) = [y2 + cos(alfa2) * t, y2 + cos (alfa2) * t] ;

解决上述系统我们有:

T = (x1- x2) / (cos(alfa2) - cos(alfa1))
X = x1 + cos(alfa1) * T
Y = y1 + sin(alfa1) * T

你的解决方案是[X, Y]。

之后你必须重新投影回 wgs84

可以尽量避免投影数据,直接使用p1和P2的wgs84坐标;错误可能很小,但您必须检查。

(请检查它;我在 javascript 调试 session 中编写了它:-)

procedure FindIntersection(x1, y2, alfa1, x2, y2, alfa2: double;
out x, y: double);
var
t: double;
begin
t := (x1 - x2) / (cos(alfa2) - cos(alfa1));
x := x1 + cos(alfa1) * t;
y := y1 + sin(alfa1) * t;
end; (* Solution without reprojecting *)

关于Delphi计算WGS84 2点的交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5891179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com