利用excel中的经纬度计算航向

利用excel中的经纬度计算航向,excel,heading,Excel,Heading,我想用excel中的P1(lat1,long2)和P2(lat2 long2)计算两个点之间的北向航向。我有一个用于ham无线电计算的函数。“纯”配方对我来说太笨重了 Function BearingFromCoord(lat_base_deg, long_base_deg, lat_dest_deg, long_dest_deg As Single) As Long Dim rad_deg_factor As Single Dim long_diff As Single Di

我想用excel中的P1(lat1,long2)和P2(lat2 long2)计算两个点之间的北向航向。

我有一个用于ham无线电计算的函数。“纯”配方对我来说太笨重了

Function BearingFromCoord(lat_base_deg, long_base_deg, lat_dest_deg, long_dest_deg As Single) As Long
   Dim rad_deg_factor As Single
   Dim long_diff As Single
   Dim frac0 As Single
   Dim frac1 As Single
   Dim frac2 As Single
   Dim lat_base As Single
   Dim long_base As Single
   Dim lat_dest As Single
   Dim long_dest As Single
   Dim bearing As Single

   rad_deg_factor = 360 / (2 * pi())

   long_diff = (long_base_deg - long_dest_deg) / rad_deg_factor
     lat_base = lat_base_deg / rad_deg_factor
       lat_dest = lat_dest_deg / rad_deg_factor
          frac0 = Sin(lat_base) * Sin(lat_dest) _
              + Cos(lat_base) * Cos(lat_dest) _
                * Cos(long_diff)
             bearing = rad_deg_factor * Application.WorksheetFunction.Acos((Sin(lat_dest) _
                        - Sin(lat_base) * frac0) _
                    / (Cos(lat_base) * Sin(WorksheetFunction.Acos(frac0))))
          If Sin(long_diff) < 0 Then
            BearingFromCoord = bearing
          Else
            BearingFromCoord = 360 - bearing
          End If
End Function

Private Function pi() As Single
  pi = 3.1415926535
End Function
从坐标系(横向基准度、纵向基准度、横向基准度、纵向基准度、纵向基准度)承载的功能长度
尺寸rad_deg_因数为单个
昏暗的长_差异为单一
0作为单个
将1视为单个
Dim frac2作为单个
单面调宽车床底座
暗淡的长底为单底
调暗lat\u dest为单个
昏暗的长底像单身一样
单轴承
弧度系数=360/(2*pi())
long_diff=(long_base_deg-long_dest_deg)/rad_deg因子
纬度基准=纬度基准度/弧度系数
lat_dest=lat_dest_deg/弧度系数
frac0=Sin(横向基准)*Sin(横向基准)_
+Cos(横向基准)*Cos(横向目标)_
*Cos(长期差异)
轴承=弧度系数*应用。工作表功能。Acos((Sin(横向目标)_
-Sin(横向基准)*0_
/(Cos(lat_base)*Sin(WorksheetFunction.Acos(frac0)))
如果Sin(long_diff)<0,则
轴承FromCoord=轴承
其他的
轴承FromCoord=360-轴承
如果结束
端函数
私有函数pi()作为单个
pi=3.1415926535
端函数

这取决于您需要的准确度。简单但可能不够,因为它假设地球表面是一个完美的球体(事实并非如此),并且只提供有限的精度。
提供更好的测地等级精度(1.46E-6度)。
我编写的VBA Excel实现可以在GitHub上找到:。

vincentyinvfwdazority()
函数应该可以满足您的需要。

这样做到底有什么问题?几秒钟后谷歌给了我这个: