Excel公式使用lat / lon坐标计算多个点之间的距离

问题描述 投票:0回答:4

我目前正在制作一个带有两个表的模拟数据库模式:BookingWaypoint

  • 预订存储出租车预订信息。

  • Waypoint存储旅途中的接送点和拉特隆位置。每个序列都是旅途中的一站。

如何在Excel中计算每次行程中不同站点之间的距离(使用lat / lon数据)?

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

例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

根据谷歌4.1英里,mileage表格中的Booking列中的条目id = 1

例2:

3站的旅程:

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

根据谷歌27.7英里,在mileage表格的Booking列中输入id = 3

excel formula
4个回答
1
投票

直到最近,通过三角测量构建了精确的地图,这实际上是毕达哥拉斯定理的应用。对于任何一对坐标之间的距离,取x坐标差的平方和与y坐标的差的平方之和的平方根。然而,x和y坐标必须处于相同的单位(例如英里),其涉及分析纬度和经度值。这可能很复杂,因为经度的因素取决于纬度(在北极周围行走的距离比在赤道附近行走的要少)但在你的情况下,应该为52o North提供一个因子。由此结果(可能检查here)与您给出的示例大约相差20%(在第二种情况下,配对ID为6和7,并将结果添加到配对ID 7和8的结果)。


3
投票

如果你想找到两点之间的距离,只需使用这个公式,你将得到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(long1-long2) ))* 6371

问候


1
投票

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

为此,计算出不同(dlat)和经度差(dlon)的差异。如果有任何机会(不太可能)你正在经过180度经线,请采用模数360º以确保经度的差异在-180º和180º之间。还计算平均纬度(alat)。

然后计算:

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

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

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


0
投票

这一切都取决于您需要的距离和准确度。基于“地球局部平坦”模型的计算不会为长距离提供很好的结果,但短距离可能没问题。假设地球是完美球体(例如,Haversine公式)的模型不会产生测地线等级结果。有关详细信息,请参阅https://en.wikipedia.org/wiki/Geodesics_on_an_ellipsoid。其中一种高精度(几毫米)解决方案被称为Vincenty的公式。对于我的Excel实现,请在这里查看https://github.com/tdjastrzebski/Vincenty-Excel

© www.soinside.com 2019 - 2024. All rights reserved.