Delphi计算WGS84两点的交点
大家好,有谁能告诉我或给我一些建议,告诉我如何计算2个WGS84点与方向角的交点- 点A+方向角,点B+方向角=点C(两点的交点) 非常感谢 Colin我认为您的问题是“如何计算两条直线的交点?”(为了简单起见,L1和L2) 您必须获得直线方程y=mx+q,该方程用于计算L1和L2的m和q系数,以便得到两个方程: y=m1x+q1Delphi计算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 //请检查我正在计算的方程式 您的数据
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 *)