德尔福计算WGS84交点2点

时间:2011-05-04 23:52:28

标签: delphi gis

嗨,有人可以告诉我或者给我一些关于我如何计算2个WGS84点与轴承交点的提示 -

点A +轴承,点B +轴承=点C(2点的交点)

非常感谢 科林

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)