我刚刚开始使用空间数据库,我想编写一个SQL(PostGIS)查询来自动概括原始GPS轨迹(具有固定的跟踪频率)。我要唤醒的第一件事是一个查询,该查询以查询形式(例如“ y米距离内的x个点”)标识停顿点,以用代表点代替大量点云。我已经意识到要在一定距离内捕捉点并计算捕捉的点。在下面的图片中,可以看到原始示例轨迹(小的黑点)和捕捉点的中心为彩色圆圈(大小=捕捉点的数量)。
CREATE table simplified AS
SELECT count(raw.geom)::integer AS count, st_centroid(st_collect(raw.geom)) AS center
FROM raw
GROUP BY st_snaptogrid(raw.geom, 500, 0.5)
ORDER BY count(raw.geom) DESC;
我对这个解决方案非常满意,但是存在时间问题:将轨道想象成一个城市中的全日轨道,人们可以返回到之前已经访问过的地方。在我的示例中,深蓝色圆圈代表该人两次访问过的房屋,但我的查询当然忽略了它。
在这种情况下,复杂的查询应仅收集带有连续时间戳(或id)的点,以便在此处产生两个代表点。我的第一个想法是将查询修改为3d版本(时间为三维),但似乎不起作用。
有人对我有什么建议吗?我希望我的问题清楚。
谢谢您的创意。我意识到要制作和简化线串,如下面的屏幕截图所示(点是原始点)。 我仍然需要确定休息地点(半径小于x米的x点),理想情况下是到达时间和离开时间的一个点……还有其他想法吗?