2つのポイントリスト間の距離(緯度、経度に基づく)を計算する方法(できればExcelで)はありますか?
私の最終目標は、たとえば、スターバックスのリストとマクドナルドのリストを用意し、必要に応じて最も近い隣人を表示することです。
コメント
- I '最小距離を探しています。
- どのunetまでに、距離を返しますか?
- @Jeedどのユニットでも問題ありません。この場合はおそらくマイルです。
回答
地理座標ペアのリストがあれば、 半正矢関数 直接Excelで。
これを使用する最も簡単な方法(またはより正確ですが、あなたの場合ではないと思います)は、でVBAエディターを開き、Insert --> Module
をクリックしてから、(コピーして)貼り付けます。 コードはblah238によって親切に提案されました。
Public Function getDistance(latitude1, longitude1, latitude2, longitude2) earth_radius = 6371 Pi = 3.14159265 deg2rad = Pi / 180 dLat = deg2rad * (latitude2 - latitude1) dLon = deg2rad * (longitude2 - longitude1) a = Sin(dLat / 2) * Sin(dLat / 2) + Cos(deg2rad * latitude1) * Cos(deg2rad * latitude2) * Sin(dLon / 2) * Sin(dLon / 2) c = 2 * WorksheetFunction.Asin(Sqr(a)) d = earth_radius * c getDistance = d End Function
4つを受け入れる新しいカスタムgetDistance
関数(単位=キロメートル)がスプレッドシートで利用可能になりますパラメータ、つまり2組の座標は次のとおりです。
getDistance(latitude1, longitude1, latitude2, longitude2)
ここで、latitude1, longitude1, latitude2, longitude2
は相対的なものに置き換える必要がありますセル参照。
コメント
- 直接リンク: codecodex.com/wiki/ …
- @ blah238ご提案ありがとうございます。 '機能させるための簡単なハウツーを追加しました。
- @afalciano &コード。私の質問は、この方程式からの最終的な単位は何ですか?メートルですか?
- @Kerry It 'キロメートル。また、数式で" Sqr "と表示されている場合は、" Sqrt
。