我有一个地址电子表格,需要计算所有地址的邮政编码与我的邮政编码之间的距离。我对使用的方法相当灵活,但希望能够使用某种类型的Web服务或数学算法。仅适用于美国地址。基本上,我需要输入2个邮政编码并获得它们之间的距离。
我愿意使用Excel公式或VBA,甚至可以在C#.net中编写代码。
您将如何计算这些距离?
我愿意使用Excel公式或VBA,甚至可以在C#.net中编写代码。
您将如何计算这些距离?
=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 imports 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的替代品)
编辑:由于评论讨论,添加了链接