从坐标列表中获取访问量最大的区域

时间:2012-10-26 12:48:42

标签: c# sql coordinates latitude-longitude geography

我从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#中的解决方案

由于

0 个答案:

没有答案