为什么我在纬度和经度之间的距离计算还很遥远?

Why am I way off with distance calculation between latitude and longitude?

谁能告诉我为什么我离题太远了?我正在努力获取 Power BI 上两点之间的距离 /Excel。我在网上进行了研究,发现了一个每个人都使用的非常普遍的公式。所以测试了一下,我的距离很远。请看下面,

Logan 和 Draper 之间的距离是 111 英里,但我达到了 3750 英里。 我对公式进行了硬编码以对其进行测试。我知道这不是 100% 准确,但我完全不相信。

 Orginal formula =ACOS(SIN(Lat1)*SIN(Lat2) +COS(Lat1)*COS(Lat2)*COS(Lon2-Lon1)) *3958.756

My hard coded one = COS(SIN(40.51)*SIN(41.73) +COS(40.51)*COS(41.73)*COS(-111.78-(-111.87))) *3958.756

非常感谢

在您的搜索中,您可能已经看到这个帖子 here,但以防万一我提供它。

马上,我在你的公式中没有看到任何 Pi 的使用,这让我想知道你是否已经将你的纬度转换为弧度。当我做了一个快速、肮脏的餐巾纸背面计算并将拉特转换为用弧度表示时,答案就更接近了(错误可能是由于我可怕的四舍五入 PI/180.

This 网站也可能有用。

我希望我至少为您指明了正确的方向,让您继续前进。

根据上一个答案,您需要将纬度和经度转换为弧度。

根据 this website 中的公式,我在 134.9 公里的 DAX 中得到了相同的结果。该网站有一个计算器,我从中得到了相同的 DAX 结果。

Distance = 

var _lat1 = RADIANS(40.524670)
var _lon1 = RADIANS(-111.863823)
var _lat2 = RADIANS(41.7379)
var _lon2 = RADIANS(-111.8308)

var R = 6371

var _dif1 = (_lat2 - _lat1)
var _dif2 = (_lon2 - _lon1)

var _a = (sin(_dif1/2)^2) + cos(_lat1) * cos(_lat2) * (sin(_dif2/2) ^ 2)

var _c  =  2*ASIN(SQRT(_a))

return _c * R