J'ai un tableau PostGIS des positions GPS toutes les cinq secondes:
2011-01-01 00:00:05, POINT(x1,y1)
2011-01-01 00:00:10, POINT(x2,y2)
2011-01-01 00:00:15, POINT(x3,y3)
...
Je recherche une requête qui retournera des valeurs (horodatage et point) pour chaque seconde. Il est normal de supposer que les points sont reliés par une ligne droite.
Je cherche spécifiquement un moyen de le faire à l'intérieur de la base de données et non en écrivant un script externe.
postgis
sql
interpolation
obscur
la source
la source
Réponses:
Bonjour
Si votre table d'origine s'appelle gps_p, votre champ d'horodatage s'appelle ts et les points s'appellent th_geom:
Ce qu'il fait, c'est qu'il construit des lignes entre les points et utilise st_segmentize pour diviser la ligne en 5 segments.
Si ce n'est pas exactement 5 secondes entre vos points d'origine, cela ne fonctionnera pas. Ensuite, vous pouvez simplement ajouter un champ id avec une séquence et l'utiliser à la place pour rejoindre la table avec id1 + 1 = id2.
HTH
/ Nicklas
la source
voici un projet de code pour pl / python, c'est juste l'idée de base de traduire les points par une distance et un azimut donnés.
Pour exécuter les fonctions postgis en pl / python, la seule solution que j'ai trouvée est d'utiliser plpy.prepare et plpy.execute (très ennuyeux).
la source
Si je ne me trompe pas ...
Ce que vous devez faire est de déterminer la ligne de connexion, puis de la diviser.
la source