我从MSSQL数据库中的GPS跟踪器获得了一个坐标列表。
我想获得前5个访问量最多的地方(最好在500米范围内)。
到目前为止,我得到的是:
SELECT DeviceTime, LastValidLongitude, LastValidLatitude,
(SELECT COUNT(*) FROM
(SELECT CAST(
(SELECT geography::Point(DP1.LastValidLatitude, DP1.LastValidLongitude, 4326).STDistance(geography::Point(DP2.LastValidLatitude, DP2.LastValidLongitude, 4326))) as int
) AS DistanceInMeters FROM DevicePositions AS DP2 WHERE DeviceId = 110204443045041
) AS DIM WHERE DistanceInMeters < 500) AS NumberWithin500
FROM DevicePositions AS DP1 WHERE DeviceId = 110204443045041
DeviceId是跟踪器的ID DeviceTime是它跟踪的时间 LastValidLongitude和LastValidLatitude是wgs84中的坐标
这给我列出了所有坐标和500米内其他坐标的数量。
示例:
DeviceTime LastValidLongitude LastValidLatitude NumberWithin500
2012-10-23 17:46:14.000 9.88183333333333 56.9835 2
2012-10-25 13:45:17.000 9.88183333333333 56.9835 2
2012-09-14 14:08:16.000 10.0173333333333 57.4558333333333 1
但是我如何从这里得到? 我不能只将NumberWithin500分组,因为如果有2个地方我去过12次,我只会看到其中一个。
也将接受C#中的解决方案
由于