excel - 如何在 Excel 电源查询中查找两个单独查询的位置之间的距离?
问题描述
我有两个名为Review
和的查询Location
,其中包含存储的地址信息,包括经度和纬度。两个查询具有相同的列。纬度和经度位于不同的列中。Review
查询通常包含 5 到 10 家不同商店的信息,而查询Location
大约是 3500。我需要一种方法来计算商店之间的距离,以便在 Review 查询中找到离商店最近的位置。
我找到了一些代码来计算两者之间的距离,但我无法让它工作。
=MINX(Review,ROUND(2 * 3959 * ASIN(SQRT(SIN((Review[Lat] - Location[Lat]) * PI()/360)^2 + COS(Location[Lat] * PI()/180) * COS(Review[Lat] * PI()/180) * SIN((Review[Lon] - Location[Lon]) * PI()/360)^2)), 1))
解决方案
假设 Table1 有 4 列名为 [Latitude_1, Longitude_1, Latitude_2, Longitude_2] 并且坐标是十进制的 [38.892456, -74.0247852] 然后下面的代码使用公式生成以英里为单位的位置之间的距离(将 3959 更改为 6371 公里):
=ACOS(SIN(lat1)*SIN(lat2)+COS(lat1)*COS(lat2)*COS(lon2-lon1))*3959
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Added Custom" = Table.AddColumn(Source, "DistanceMiles", each Number.Acos(Number.Sin(([Latitude_1] / 180) * Number.PI) * Number.Sin(([Latitude_2] / 180) * Number.PI) + Number.Cos(([Latitude_1] / 180) * Number.PI) * Number.Cos(([Latitude_2] / 180) * Number.PI) * Number.Cos( ([Longitude_2] / 180) * Number.PI-([Longitude_1] / 180) * Number.PI)) * 3959),
in #"Added Custom"
推荐阅读
- swift - SwiftUI 不喜欢 switch?
- scala - 为什么在执行 sbt about 命令时 sbt 关于给出错误
- css - ReactNative 布局过程以及 flex 如何影响它?
- java - 如果将来需求可能发生变化,将业务规则从代码中提取到自定义规则引擎中是否是个好主意?
- python - Pytest:使用没有副作用的函数设置模拟
- python-3.x - librosa.load() 加载(样本)mp3 文件的时间太长
- ruby-on-rails - nil:NilClass 的未定义方法“项目”
- c - 数据库介绍的时间效率
- winforms - 如何将 winforms 应用程序部署到 Azure DevOps
- java - 如何在具有多个滚动元素的 Web 应用程序中执行窗口水平滚动?