2011-07-07 74 views
5

我有一個地址電子表格,我需要計算所有郵政編碼和我的郵政編碼之間的距離。我對所使用的方法非常靈活,但我希望有某種Web服務或數學算法。美國地址只。基本上我需要輸入兩個郵政編碼,並讓他們之間的距離。郵政編碼距離計算器

我願意使用Excel公式或VBA,如果需要,我甚至可以用C#.net編寫代碼。

你將如何去計算這些距離?

+1

你看着谷歌地圖API? –

+0

@Amir Raminfar-當我上次查看Google maps api時,限制是任何檢索到的信息必須顯示在地圖上以滿足顯示要求。我不想在地圖上顯示。 – MAW74656

回答

3

你可以使用經度和緯度。

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的替代品)

Zips by Lat Long Lookup

VBA discussion

編輯:鏈接添加由於意見討論

More Info(Excel Formula)

+0

你介意解釋你的Excel公式背後的邏輯嗎?我沒有看到它與Chip Pearson的網站上的公式匹配。此外,這假設一個球形的地球,而不是一個更現實的橢球體,但我想這對這個應用來說是完美的,因爲不確定性將比郵政編碼的大小小得多......除了在大型,緊湊的城市,郵政編碼區域可能非常小。也許我太肛門了。 –

+0

@ Jean-Francois Corbett Excels需要轉換爲Radians(我將在我的答案中提供另一個鏈接)。我並沒有打算把它分解,而是在我寫作時不會像你一樣思考。但你確實說得很好。我想這取決於他會如何確切地想要它。這就是爲什麼我把他與另一種選擇聯繫起來。 – sealz