我正在尝试计算地图上两个位置之间的距离。
我的数据中存储了经度、纬度、X坐标、Y坐标。
我以前使用的是下面的代码片段。
DECLARE @orig_lat DECIMAL
DECLARE @orig_lng DECIMAL
SET @orig_lat=53.381538 set @orig_lng=-1.463526
SELECT *,
3956 * 2 * ASIN(
SQRT( POWER(SIN((@orig_lat - abs(dest.Latitude)) * pi()/180 / 2), 2)
+ COS(@orig_lng * pi()/180 ) * COS(abs(dest.Latitude) * pi()/180)
* POWER(SIN((@orig_lng - dest.Longitude) * pi()/180 / 2), 2) ))
AS distance
--INTO #includeDistances
FROM #orig dest
然而,我不信任这里的数据,因为它似乎提供了略微不准确的结果。
以下是一些示例数据,如果需要的话:
Latitude Longitude Distance
53.429108 -2.500953 85.2981833133896
能否有人帮我调整一下代码?如果您有新的方法来实现这个问题,那就更好了。对于您已经修复的内容,我不介意。
请说明您的结果使用的是哪种计量单位。