2011-07-07 82 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