Excel公式可以使用纬度/经度坐标来计算多个点之间的距离

我目前正在绘制一个模拟数据库模式与两个表: BookingWaypoint

  • 预订商店出租车预订信息。

在这里输入图像说明

  • 航点在旅途中存储起降点,以及纬度位置。 每一个序列都是旅途中的一站。

在这里输入图像说明

如何计算Excel中每个旅程(使用纬度/经度数据)不同站点之间的距离?

有没有一种方法可以在Excel中以编程方式定义这种方法,即,可以将一个公式放置在mileage列( Booking table)中,在Waypoint表中查找匹配顺序(通过bookingId ),并返回结果?

例1:

2站之旅:

 1 1 1 MK4 4FL, 2, Levens Hall Drive, Westcroft, Milton Keynes 52.002529 -0.797623 2 1 2 MK2 2RD, 55, Westfield Road, Bletchley, Milton Keynes 51.992571 -0.72753 

根据Google的4.1英里,在mileage列出了Booking表中的id = 1

例2:

三站之旅:

 6 3 1 MK7 7DT, 2, Spearmint Close, Walnut Tree, Milton Keynes 52.017486 -0.690113 7 3 2 MK18 1JL, HSBC, Market Hill, Buckingham 52.000674 -0.987062 8 3 1 MK17 0FE, 1, Maids Close, Mursley, Milton Keynes 52.040622 -0.759417 

根据谷歌27.7英里, Booking表里的mileage栏里input的id = 3

直到最近,通过三angular测量来构build精确的地图,这本质上是毕达哥拉斯定理的应用。 对于任意一对坐标之间的距离,取x坐标差的平方和y坐标差的平方和的平方根。 然而,x和y坐标必须是相同的单位(例如英里),其涉及经度和纬度值。 这可能是复杂的,因为经度的因素取决于纬度(在北极四处走动比在赤道走动的距离要小),但在你的情况下,北纬52度的因素应该起作用。 从这个结果(可能在这里检查)与您给出的例子(在第二种情况下,配对ID 6和7并将结果添加到配对ID 7和8的结果)大约有20%的差异。

如果要查找两点之间的距离,只需使用此公式,并以Km结果即可,如果需要,可将其转换为英里。

点A:LAT1,LONG1点B:LAT2,LONG2

ACOS(COS(RADIANS(90-Lat1))* COS(RADIANS(90-Lat2))+ SIN(RADIANS(90-Lat1))* SIN(RADIANS(90-Lat2))* COS(RADIANS(long- long2) ))* 6371

问候

既然你说的准确性并不重要,假设距离很小(比如说less于1000英里),你可以使用右旋距离。

为此,计算(dlat)和经度差(dlon)的差值。 如果有可能(不太可能)你穿越子午线180º,取模360º,以确保经度差异在-180º和180º之间。 还计算平均纬度(alat)。

然后计算:

 distance= 60*sqrt(dlat^2 + (dlon*cos(alat))^2) 

这个距离是在海里。 根据需要应用转化。

说明:根据定义,这利用了一海里总是等于纬度一分钟的事实。 余弦对应于经线在接近极点时彼此接近的事实。 其余的只是毕达哥拉斯定理的应用 – 这要求地球的相关部分是平坦的,当然这对小距离来说当然只是一个很好的近似。