住所のスプレッドシートがあり、すべての郵便番号と私の郵便番号の間の距離を計算する必要があります。私は使用する方法にかなり柔軟性がありますが、ある種のWebサービスまたは数学アルゴリズムを望んでいます。米国の住所のみ。基本的に、2つの郵便番号を入力してそれらの間の距離を取得する必要があります。
私はExcelの数式またはVBAを使用したいと思っており、必要に応じてC#.netで何かをコーディングすることもできます。
これらの距離をどのように計算しますか?
LatitudeとLongitudeを使用できます。
Excel:
=IF(SIN(Lat1) * SIN(Lat2) + COS(Lat1) * COS(Lat2) * COS(Long1 - Long2) > 1,
RadiusofEarth * ACOS(1), RadiusofEarth *
ACOS(SIN(Lat1) * SIN(Lat2) + COS(Lat1) * COS(Lat2) * COS(Long1-Long2)))
VB.netはSystem.Mathをインポートします
Private Function Distance(ByVal lat1 As Double, ByVal lon1 As Double, ByVal lat2 As Double, ByVal lon2 As Double, ByVal unit As String) As Double
Dim theta As Double = lon1 - lon2
Dim dist = System.Math.Sin(deg2rad(lat1)) * System.Math.Sin(deg2rad(lat2)) + System.Math.Cos(deg2rad(lat1)) * System.Math.Cos(deg2rad(lat2)) * System.Math.Cos(deg2rad(theta))
dist = System.Math.Acos(dist)
dist = rad2deg(dist)
dist = dist * 60 * 1.1515
Select Case unit
Case "K"
dist = dist * 1.609344
Case "N"
dist = dist * 0.8684
End Select
Return dist
End Function
その他の便利なリンク(最初のリンクではVBAの代替案についても言及しています)
ExcelLatLong(VBAの代替案についても言及)
編集:コメントディスカッションのためにリンクが追加されました
実はとても簡単です。郵便番号のGPS座標のデータベースをダウンロードします。このデータをダウンロードできるサイトはたくさんあります。彼らは郵便番号の中心の座標をリストします。
数式を使用して最短距離を計算します:(例:http ://www.movable-type.co.uk/scripts/latlong.html )