簡體   English   中英

在excel中從緯度和經度計算航向

[英]calculating heading from latitude and longitude in excel

我想在 excel 中用 P1(lat1 , long2) 和 P2(lat2 long2) 計算 2 個點之間從北方的航向方向。

這取決於您要尋找的准確度級別。 Haversine 公式很簡單,但可能不夠充分,因為它假設地球表面是一個完美的球體(事實並非如此)並且只能提供有限的精度。
Vincenty 的公式提供了更好的測地線坡度精度(1.46E-6 度)。
我整理的 VBA Excel 實現可以在 GitHub 上找到: https : //github.com/tdjastrzebski/Vincenty-Excel
VincentyInvFwdAzimuth()函數應該VincentyInvFwdAzimuth()您的需求。

我有一個用於業余無線電計算的函數。 “純”配方對我來說太笨重了。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM