我有一个地址电子表格,我需要计算所有邮政编码和我的邮政编码之间的距离。我对使用的方法相当灵活,但我希望有某种web服务或数学算法。仅美国地址。基本上我需要输入2个邮政编码并缩短它们之间的距离。
我愿意使用Excel公式或VBA,如果需要,我甚至可以用C#.net编写代码。
你将如何计算这些距离?
答案 0 :(得分:4)
您可以使用纬度和经度。
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替代品)
编辑:由于评论讨论而添加链接
答案 1 :(得分:3)
实际上这很简单。下载邮政编码的GPS坐标数据库,有很多网站可以下载这些数据。他们会列出邮政编码中心的坐标。
使用公式计算最短距离:(例如:http://www.movable-type.co.uk/scripts/latlong.html)