经纬度是某个地点的坐标信息,通过经纬度数据就可以计算出这两点之间的直线距离,PowerBI能不能实现这种计算呢? 其实这是一个数学问题,也就是计算球面上两个点之间的距离,关于这个计算,有专门的公式,如果想在PowerBI中计算,只需要将它用DAX函数表达出来就可以了。 比如下面这个数据,是几个主要的城市经纬度坐标信息: 注: 每个城市都是个面积很大的区域,上述经纬度只是用其中的某个位置点来代替而已。 假如要计算上面的每个城市距离北京的直线距离,应该怎么写呢?这里直接列出这个度量值: 与北京直线距离/km = VAR longitude=[经度]VAR latitude=[纬度]VAR longitude_bj=CALCULATE(MAX('数据表'[经度]),FILTER('数据表','数据表'[城市]="北京"))VAR latitude_bj=CALCULATE(MAX('数据表'[纬度]),FILTER('数据表','数据表'[城市]="北京"))RETURN 2*6371*ASIN(SQRT( POWER ( SIN ( (latitude - latitude_bj) * PI () / 360 ), 2 )+ COS ( latitude * PI () / 180 )* COS ( latitude_bj * PI () / 180 )* POWER ( SIN ( (longitude - longitude_bj) * PI () / 360 ), 2 ) )) 结果如下: 最后,需要说明的是,上述公式只是近似的计算,一方面受经纬度本身的精度所限,另一方面地球并不是个完美球体,从赤道到两极地球的半径是有差异的,因此计算结果与实际会有些许误差。 |
|