我想用SQL服务器计算两点之间的距离。问题是我得到的结果不准确。计算2点之间的距离。我可以信任SQL服务器的GeoLocation.STDistance函数吗?
Create table #auxdist
( idempr int identity(1,1)
,emp_desc varchar(60)
,longitud float
,latitud float
,geolocation geography
)
insert into #auxdist values ('TIng',-55.769,-34.768,NULL)
insert into #auxdist values ('CComp',-55.74132,-34.19647,NULL)
Update #auxdist
SET [GeoLocation] = geography::STPointFromText('POINT(' + cast(CAST(cs.latitud AS decimal(30,20)) as varchar(30)) + ' ' +
cast(CAST(cs.longitud AS decimal(30,20)) as varchar(30))+ ')', 4326)
from #auxdist cs
select com1.idempr,com2.idempr, com1.GeoLocation.STDistance(com2.GeoLocation) as dist
from #auxdist com1
join #auxdist com2 on com1.idempr <> com2.idempr and com1.idempr=1
使用此查询我得到两点之间的距离是36016山。 后来我查使用http://www.onlineconversion.com/map_greatcircle_distance.htm 的结果,我发现了一个不同的答案:63673mts(haversine公式)
我忘了提及有一个更简单的方法来创建你的观点:https://msdn.microsoft.com/en-us/library/bb933811.aspx –
你是对的。 @本丘尔非常感谢你。 – EAguirre