1

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 をグループ化することはできません。12 回訪れた場所が 2 つある場合、そのうちの 1 つしか表示されないからです。

C# でのソリューションも受け入れられます

ありがとう

4

0 に答える 0