C# 从坐标列表中获取访问最多的区域
我从MSSQL数据库中的GPS跟踪器中获得了坐标列表 我想得到五个最受欢迎的地方(至少在500米以内) 到目前为止,我得到的是:C# 从坐标列表中获取访问最多的区域,c#,sql,coordinates,latitude-longitude,geography,C#,Sql,Coordinates,Latitude Longitude,Geography,我从MSSQL数据库中的GPS跟踪器中获得了坐标列表 我想得到五个最受欢迎的地方(至少在500米以内) 到目前为止,我得到的是: SELECT DeviceTime, LastValidLongitude, LastValidLatitude, (SELECT COUNT(*) FROM (SELECT CAST( (SELECT geography::Point(DP1.LastValidLatitude, DP1.LastValidLongi
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
但是我怎么从这里走呢?
我不能把数字归为500,因为如果有两个地方我去过12次,我只会看到其中一个
C#中的解决方案也将被接受
谢谢你还有更大的问题。想象一下一个陆地标记。然后围绕它画一个半径为500米的圆。圆圈上的任何GPS跟踪器记录都离那个地标500米。但是,您可能没有该地标的任何GPS记录,并且GPS记录之间的距离可能不在500米以内。(例如,你有三个点,围绕该圆等距分布。)除非你也记录了地标,否则推断GPS记录所在的中心点无论如何都不是小事。是的,这可能是个问题。但我可以接受,因为那时它还没有在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