Geolocation 如何找到地球上两点之间的航向角——就像它们是空白空间中的两点一样,笔直地穿过地球?

Geolocation 如何找到地球上两点之间的航向角——就像它们是空白空间中的两点一样,笔直地穿过地球?,geolocation,computational-geometry,euclidean-distance,geopoints,Geolocation,Computational Geometry,Euclidean Distance,Geopoints,我想得到关于如何计算地球上两个地理坐标之间的欧几里得距离和相对于正北的航向角的公式。比如说从纽约到纽约,我画了一条穿过地球的直线——因为它们是空间中的两点。如果我要画一条穿过地球表面的直线,我怎么计算从纽约到纽约的角度呢。要做到这一点,需要什么样的数学计算/公式?等角线导航 等角线或斜向仪是恒定真实航向的轨迹。除了子午线和赤道外,它们与大圆不同。它们在接近两极时都不是很有用,在那里它们变成了紧密缠绕的螺旋。如果任何一点实际上是一个极点,下面的公式就失效了 东西方的等角线很特别。它们沿着纬度平行线

我想得到关于如何计算地球上两个地理坐标之间的欧几里得距离和相对于正北的航向角的公式。比如说从纽约到纽约,我画了一条穿过地球的直线——因为它们是空间中的两点。如果我要画一条穿过地球表面的直线,我怎么计算从纽约到纽约的角度呢。要做到这一点,需要什么样的数学计算/公式?

等角线导航

等角线或斜向仪是恒定真实航向的轨迹。除了子午线和赤道外,它们与大圆不同。它们在接近两极时都不是很有用,在那里它们变成了紧密缠绕的螺旋。如果任何一点实际上是一个极点,下面的公式就失效了

东西方的等角线很特别。它们沿着纬度平行线,形成一条闭合曲线。其他的等角线从一个磁极延伸到另一个磁极,环绕每个磁极无数次。尽管如此,它们有一个有限的长度,由pi/abs(cos(tc))给出(以我们的角度单位,乘以地球的半径,以距离为单位)

当两个点(lat1,lon1)、(lat2,lon2)通过带有真航向tc的直角线连接时:

 lon2-lon1=-tan(tc)*(log((1+sin(lat2))/cos(lat2))-
                     log((1+sin(lat1))/cos(lat1))) 
          =-tan(tc)*(log((1+tan(lat2/2))/(1-tan(lat2/2)))-
                     log((1+tan(lat1/2))/(1-tan(lat1/2))))
          =-tan(tc)*(log(tan(lat2/2+pi/4)/tan(lat1/2+pi/4)))
(对数是以e为底的“自然”对数。)

各点之间的真实路线如下所示:

     if (abs(lat2-lat1) < sqrt(TOL)){
         q=cos(lat1)
     } else {
         q= (lat2-lat1)/log(tan(lat2/2+pi/4)/tan(lat1/2+pi/4))
     }
     d=sqrt((lat2-lat1)^2+ q^2*(lon2-lon1)^2)
dlon_W=mod(lon2-lon1,2*pi)
  dlon_E=mod(lon1-lon2,2*pi)
  dphi=log(tan(lat2/2+pi/4)/tan(lat1/2+pi/4))
  if (abs(lat2-lat1) < sqrt(TOL)){
     q=cos(lat1)
  } else {
     q= (lat2-lat1)/dphi
  }
  if (dlon_W < dlon_E){// Westerly rhumb line is the shortest
      tc=mod(atan2(-dlon_W,dphi),2*pi)
      d= sqrt(q^2*dlon_W^2 + (lat2-lat1)^2)
  } else{
      tc=mod(atan2(dlon_E,dphi),2*pi)
      d= sqrt(q^2*dlon_E^2 + (lat2-lat1)^2)
      }
tc=mod(atan2(lon1-lon2,对数(tan(lat2/2+pi/4)/tan(lat1/2+pi/4))),2*pi) 点之间的距离d由下式给出:

     if (abs(lat2-lat1) < sqrt(TOL)){
         q=cos(lat1)
     } else {
         q= (lat2-lat1)/log(tan(lat2/2+pi/4)/tan(lat1/2+pi/4))
     }
     d=sqrt((lat2-lat1)^2+ q^2*(lon2-lon1)^2)
dlon_W=mod(lon2-lon1,2*pi)
  dlon_E=mod(lon1-lon2,2*pi)
  dphi=log(tan(lat2/2+pi/4)/tan(lat1/2+pi/4))
  if (abs(lat2-lat1) < sqrt(TOL)){
     q=cos(lat1)
  } else {
     q= (lat2-lat1)/dphi
  }
  if (dlon_W < dlon_E){// Westerly rhumb line is the shortest
      tc=mod(atan2(-dlon_W,dphi),2*pi)
      d= sqrt(q^2*dlon_W^2 + (lat2-lat1)^2)
  } else{
      tc=mod(atan2(dlon_E,dphi),2*pi)
      d= sqrt(q^2*dlon_E^2 + (lat2-lat1)^2)
      }
if(abs(lat2-lat1)
如果所讨论的等角线穿过180 E/W子午线,则此公式失败。考虑到这一可能性,连接两点的最短直角线的真实航向tc和距离d由下式给出:

     if (abs(lat2-lat1) < sqrt(TOL)){
         q=cos(lat1)
     } else {
         q= (lat2-lat1)/log(tan(lat2/2+pi/4)/tan(lat1/2+pi/4))
     }
     d=sqrt((lat2-lat1)^2+ q^2*(lon2-lon1)^2)
dlon_W=mod(lon2-lon1,2*pi)
  dlon_E=mod(lon1-lon2,2*pi)
  dphi=log(tan(lat2/2+pi/4)/tan(lat1/2+pi/4))
  if (abs(lat2-lat1) < sqrt(TOL)){
     q=cos(lat1)
  } else {
     q= (lat2-lat1)/dphi
  }
  if (dlon_W < dlon_E){// Westerly rhumb line is the shortest
      tc=mod(atan2(-dlon_W,dphi),2*pi)
      d= sqrt(q^2*dlon_W^2 + (lat2-lat1)^2)
  } else{
      tc=mod(atan2(dlon_E,dphi),2*pi)
      d= sqrt(q^2*dlon_E^2 + (lat2-lat1)^2)
      }
dlon_W=mod(lon2-lon1,2*pi)
dlon_E=mod(lon1-lon2,2*pi)
dphi=log(tan(lat2/2+pi/4)/tan(lat1/2+pi/4))
如果(abs(lat2-lat1)

你能详细说明你所说的角度是什么意思吗?你可以计算球体上任意两点之间的距离,如果你知道它们的纬度和经度,不清楚你所说的角度(相对于哪个向量/轴?)是什么意思,或者你的意思是如何计算给定经度和纬度的向量方向?我想知道这个方向:“面向朝拜(麦加方向):在美国,正确的方向通常是东南方向。不要遵循“磁“磁罗盘指示的方向。他们错了。请打电话给我们解释一下。简单地说,灵魂不能被墙或山阻挡。因此,到麦加的最短路径是穿过地球,而不是绕北极。在我们的萨拉特,我们鞠躬和俯卧,我们面对一个半圆,一个广泛的角度。“目前我使用的是RunHb线航向,但是我不确定它是否给了我正确的结果,尽管它仍然给了我ESE。这个角度应该是相对于X,Y平面上的真实的北方,穿过地球的‘MeCCA’是中东的一个城市。”“萨拉特”是一种与宇宙创造者接触的祈祷形式,作为地球上任何地方的焦点