嗨,有人可以告诉我或者给我一些关于我如何计算2个WGS84点与轴承交点的提示 -
点A +轴承,点B +轴承=点C(2点的交点)
非常感谢 科林答案 0 :(得分:4)
我认为你的问题是“如何计算两条线的交点?” (为简单起见,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],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],其中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 debuging的会话中写的:-)
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 *)
答案 1 :(得分:0)