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

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...