我有来自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