web-dev-qa-db-ja.com

MSExcelまたはLibreOfficeで「大円」計算を行う方法は?

緯度と経度の値を持つ2つの列を取得しました。すべての行のポイント間の距離を計算する必要があります。 haversine 式を使用しようとしています ここ

haversine calculation

それがいわゆる「大圏」の計算です。膨大な量の座標でこの計算を実行する必要があります。

データは次のようになります。

  |        A        B    C    D    E   F    G
--|-------------------------------------------
0 |      LAT      LON rLAT dLAT dLON   a DIST
1 | 52.39964 13.04729  ...  ...  ... ...     
2 | 52.39985 13.04802  ...  ...  ... ...  ???
3 | 52.40116 13.04744  ...  ...  ... ...  ???
4 | 52.40147 13.04722  ...  ...  ... ...  ???
5 | 52.40163 13.04685  ...  ...  ... ...  ???
6 |      ...      ...  ...  ...  ... ...  ...

さて、私が試したのは、LibreOfficeのフィールドG2に対して次のとおりです。

C2=RADIANS(A2)
D2=RADIANS(A2-A1)
E2=RADIANS(B2-B1)
F2=SIN(D2/2)*SIN(D2/2)+SIN(E2/2)*SIN(E2/2)*COS(C1)*COS(C2)
G2=2*ATAN2(SQRT(F2), SQRT(1-F2))*6371

G2 is20015の結果はかなり...間違っています。

MicrosoftExcelまたはLibreOfficeCalcで緯度と経度で指定された2点間の距離を計算するにはどうすればよいですか?私の式の何が問題になっていますか?

3
Afr

here by BrianAdkins であるように、2つの緯度/経度ポイント間の距離を計算するこのExcelの数式は、LibreOfficeCalcとMicrosoftExcel2013の両方で機能します。

=ACOS(COS(RADIANS(90-A1))*COS(RADIANS(90-A2))+SIN(RADIANS(90-A1))*SIN(RADIANS(90-A2))*COS(RADIANS(B1-B2)))*6371

結果はキロメートル単位です。距離が短い場合は、*1000を使用して距離をメートル単位で表示しました。

  |        A        B      C
--|--------------------------
0 |      LAT      LON   DIST
1 | 52.39964 13.04729               
2 | 52.39985 13.04802   54.8
3 | 52.40116 13.04744  150.9
4 | 52.40147 13.04722   37.6
5 | 52.40163 13.04685   30.8
6 |      ...      ...    ...

距離をマイルで表示するには、*6371*3958に置き換えます。

5
Afr

半正矢関数の方法は、エラーファクターを受け入れる意思がある場合、またはワークシートの数式のみを使用して実装する必要がある場合に適しています。短距離で重大でない状況では、おそらく問題ありません。ただし、精度が必要な場合は、サディアス・ヴィンセンティが開発したアルゴリズムのようなものを使用する必要があります。その結果は、使用されるlat/longペアの精度に基づいて、ミリメートルまで正確であると見なされます。 2つの違いはどれくらいですか? JFKと東京の間では、約14.9法定マイル(短い)の差があります。ロサンゼルスとホノルルの間では、島からわずか約5kmの距離にあります。

Visual Basic(Excelの場合)でのVincentyアルゴリズムの適切な実装は、次の場所にあります。 http://lost-species.livejournal.com/38453.html コードはそのまま実行されます。 '32ビットバージョンのExcelでは、64ビットバージョンのExcelでは '式が複雑すぎる'エラーで失敗します。コード全体の投稿のすぐ下に、VBAエンジンの32ビットバージョンと64ビットバージョンの両方で実行できるようにする問題の修正を投稿しました。

よろしく、J.Latham、Microsoft MVP、Excel 2006-2014

3
J.Latham

完全な直接/逆Vincenty式ExcelVBA実装(32/64ビットアドイン)により、距離の計算だけでなく、方位角と逆方位角も可能になります https://github.com/tdjastrzebski/VincentyExcel

0
T. Jastrzębski