Je viens de commencer à travailler avec des bases de données spatiales et je veux écrire une requête SQL (PostGIS) pour la généralisation automatique des traces GPS brutes (avec une fréquence de suivi fixe). La première chose sur laquelle je travaille est une requête qui identifie les points d'arrêt sous forme de requête comme "x points à une distance de y mètres" pour remplacer les nuages de points massifs par des points représentatifs. Je me suis déjà rendu compte de prendre des points à une certaine distance et de compter les points cassés. Dans l'image ci-dessous, on peut voir un exemple de piste brute (petits points noirs) et les centres des points cassés sous forme de cercles colorés (taille = nombre de points cassés).
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;
Je serais tout aussi satisfait de cette solution, mais il y a le problème de temps: en imaginant la piste comme une piste d'une journée dans une ville, la personne peut retourner dans des endroits déjà visités auparavant. Dans mon exemple, le cercle bleu foncé représente le domicile de la personne qu'il a visité deux fois, mais ma requête l'ignore bien sûr.
Dans ce cas, la requête sophistiquée ne doit collecter que des points avec des horodatages (ou id) contigus, afin de produire ici deux points représentatifs. Ma première idée a été de modifier ma requête en version 3D (le temps comme troisième dimension), mais cela ne semble pas fonctionner.
Quelqu'un a-t-il des conseils pour moi? J'espère que ma question est claire.
Merci pour l'idée de ligne. J'ai réalisé pour faire et simplifier une chaîne de lignes comme vous pouvez le voir dans la capture d'écran ci-dessous (les points sont des points originaux). Il me reste à déterminer les lieux de repos (> x points dans <x mètres de rayon), idéalement comme un point avec une heure d'arrivée et une heure de départ ... d'autres idées?