Excelを使用して距離計算を実行していますか?


8

ポイントの2つのリスト間の距離(緯度、経度に基づいて)を計算する方法(Excelが望ましい)はありますか?

私の最終目標は、たとえば、スターバックスのリストとマクドナルドのリストを用意し、必要に応じて最も近い隣人を表示することです。


最短距離を探しています。
b-rad-b

どのunetまでに、距離を返しますか?
Jeed 2017

@Jeedどんなユニットでも大丈夫です。この場合はおそらくマイルでしょう。
b-rad-b

回答:


16

地理座標ペアのリストを指定すると、Haversine式をExcelに直接実装できます。


この式を使用する最も簡単な方法(またはより正確ですが、あなたのケースではないと思います)はAlt+F11、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

次のように、getDistance4つのパラメータ、つまり2組の座標を受け入れるスプレッドシートで利用できる新しいカスタム関数(単位=キロメートル)があります。

getDistance(latitude1, longitude1, latitude2, longitude2)

where latitude1, longitude1, latitude2, longitude2は、それらの相対的なセル参照で置き換える必要があります。

ここに画像の説明を入力してください


3
直接リンク:codecodex.com/wiki/...
blah238

@ blah238ご提案ありがとうございます。動作させるために、短いハウツーを追加しました。
アントニオ・ファルチャーノ2014年

1
@afalcianoウォークスルーとコードをありがとう。私の質問はこの方程式の最終的な単位は何ですか?メートルですか?
ケリー

@ケリーそれはキロメートルです。また、式が「Sqr」とある場合、「Sqrt」である必要があります。
ddunn801

距離の測定単位は、地球の半径と同様にキロメートルです。
アントニオファルチャーノ

3

より正確な方法は、ビセンティの公式を使用することです。これは、球ではなく楕円体に基づいています。ただし、都市で働いている場合は、前の答えでうまくいきます(場合によっては違いを無視できます)。念のため、ここに Excel VBコードを見つけました。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.