sql-server – 如何计算SQL Server中多个点之间的距离?

前端之家收集整理的这篇文章主要介绍了sql-server – 如何计算SQL Server中多个点之间的距离?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有来自GPS的数据表,例如:纬度,经度,时间,UserId

如何在指定的时间范围内聚合总距离,按所有点(按时间排序)和用户分组数据对所有距离进行求和?

谢谢

解决方法

如果您使用sql Server,您可能有兴趣使用地理数据类型,以便您可以使用专用方法和地理索引请求数据库.

地理数据类型自sql Server 2008可用,您可以在这里获得更多信息:

http://msdn.microsoft.com/en-us/library/cc280766.aspx

将数据存入地理位置列后,您将能够使用STDistance()方法计算两点之间的距离,请参阅MSDN:

http://msdn.microsoft.com/en-us/library/bb933808.aspx

以下示例使用STDistance()来计算以米为单位返回的两点之间的距离(与地理变形))(国际标准单位):

DECLARE @pointA geography;
DECLARE @pointB geography;
SET @pointA = geography::STGeomFromText('POINT(-122.34900 50)',4326);
SET @pointB = geography::STGeomFromText('POINT(-122.34900 47.65100)',4326);
SELECT @pointA.STDistance(@pointB);

如果您使用sql Server 2005(或者如果您想避免使用地理数据类型),可以查看CodePlex上的MssqlSpatial项目,可以在这里找到:http://mssqlspatial.codeplex.com/wikipage?title=Features&referringTitle=Home

猜你在找的MsSQL相关文章