Power BI - 根据纬度/经度查找最近的位置

jon*_*495 4 data-analysis coordinates powerpivot dax powerbi

我是 Power BI 和 DAX 的新手,所以我希望你能帮助我。

我有两个没有任何关系的表: 表 A包含跟踪位置的纬度/经度和日期。 表 B包含所有体育场的纬度/经度和名称。

我想找到靠近跟踪位置的最近的体育场。另外,如果可能的话,我想验证该位置是否在该体育场的特定半径内。

非常感谢任何帮助。

Ale*_*son 8

这是一种可能的方法:


首先,使用半正弦函数计算最小距离。

将此作为计算列添加到Tracked表中。

Nearest = 
    MINX(Stadiums,
    ROUND(2 * 3959 *
        ASIN(SQRT(
            SIN((Stadiums[Lat] - Tracked[Lat]) * PI()/360)^2 +
            COS(Tracked[Lat] * PI()/180) * COS(Stadiums[Lat] * PI()/180) *
                SIN((Stadiums[Lon] - Tracked[Lon]) * PI()/360)^2)), 1))
Run Code Online (Sandbox Code Playgroud)

在此公式中,3959是以英里为单位的地球半径。

我们现在可以匹配距离来找到最近的体育场:

Stadium = CALCULATE(MAX(Stadiums[Stadium]),
              FILTER(Stadiums,
                  ROUND(2 * 3959 *
                      ASIN(SQRT(
                          SIN((Stadiums[Lat] - Tracked[Lat]) * PI()/360)^2 +
                          COS(Tracked[Lat] * PI()/180) * COS(Stadiums[Lat] * PI()/180) *
                          SIN((Stadiums[Lon] - Tracked[Lon]) * PI()/360)^2)), 1)
                  = Tracked[Nearest]))
Run Code Online (Sandbox Code Playgroud)

注意:我对值进行四舍五入以避免可能的浮点错误不匹配。这可能是必要的,也可能不是必要的。