Delphi计算WGS84两点的交点

Delphi计算WGS84两点的交点,delphi,gis,Delphi,Gis,大家好,有谁能告诉我或给我一些建议,告诉我如何计算2个WGS84点与方向角的交点- 点A+方向角,点B+方向角=点C(两点的交点) 非常感谢 Colin我认为您的问题是“如何计算两条直线的交点?”(为了简单起见,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 //请检查我正在计算的方程式 您的数据

大家好,有谁能告诉我或给我一些建议,告诉我如何计算2个WGS84点与方向角的交点-

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

非常感谢 Colin

我认为您的问题是“如何计算两条直线的交点?”(为了简单起见,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
//请检查我正在计算的方程式

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

P1=[x1;y1],轴承1=alfa1
P2=[x2;y2],轴承1=2

为了使用上述线性几何图形,必须在平面上投影点。 我想您有WGS84点:使用
proj4
api

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

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

L(t)=[x0+cos(alfa)*t,y0+cos(alfa)*t],t在[-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调试会话的中间写的:-)

装出一副样子:

您好,谢谢您的回答,我不是数学天才,您是否可以再多说一点,并发现上面的内容有点难以遵循FindIntersection过程(x1,y2,alfa1,x2,y2,alfa2:double;out x,y:double);变量t:双变量;开始t:=(x1-x2)/(cos(alfa2)-cos(alfa1));x:=x1+cos(alfa1)*T;y:=y1+sin(alfa1)*T;结束;(*无需重新注入的溶液*)Hi Stefano,你能证实这是正确的,因为我无法使它工作我已经尝试了以下-点A 50.681904-4.0410222轴承130度点B 50.673067-3.9797788轴承10度它返回50.688783-4.0236010但是我认为它应该是50.687215-3.960828你能帮我进一步感谢科林吗
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 *)