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

  • 距離の測定単位は、地球半径と同じようにキロメートルです。
  • 回答

    より正確な方法は、 Vicentyの式を使用することです。これは、楕円ではなく楕円に基づいています。 sphere。ただし、都市で作業している場合は、前の回答で問題ありません(この場合、違いは無視できます)。優れたvbコードをここで見つけました念のため。

    都市で作業している場合、「鳥の飛行」距離を使用すると誤解を招く可能性があることに注意してください。ネットワーク距離を使用することをお勧めします。妥協案は、「マンハッタン距離」を使用することです

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です