J'ai besoin de stocker une série de points GPS avec des horodatages dans la base de données (traces de divers véhicules).
Je me demande laquelle des deux approches choisir pour les stocker dans la table PostGIS: 1.) Chaque point dans sa propre ligne avec une colonne distincte pour l'horodatage et une pour l'ID de piste
2.) Utilisez Linestring ou MultiLineString avec la quatrième coordonnée M qui contiendrait l'horodatage UNIX de l'heure pour le point sur la piste. Cela signifierait une seule ligne pour chaque piste distincte.
postgis
gps
tracklog
movement-data
Tomislav Muic
la source
la source
Réponses:
Cela dépend de ce que vous voudrez faire avec les données une fois qu'elles sont chargées dans la base de données. Si chaque point de données a des attributs associés en plus du temps (par exemple, la lecture de la température du moteur, une photo) ou si vous souhaitez utiliser les données de point dans une analyse, le stockage de chaque donnée dans sa propre ligne est un bon choix.
Si chaque piste a des attributs associés (par exemple, le nom de l'événement) ou vos analyses seront sur des pistes (par exemple, trouver des croisements de pistes), alors il est plus logique de les stocker en tant que (MULTI) LINESTRING.
Si vous choisissez une approche, cela ne vous empêchera pas de faire les analyses dans l'autre. Cela nécessitera juste quelques étapes supplémentaires.
la source
Personnellement, je stocke les données collectées par mon unité GPS sous la forme d'une couche de points avec un champ d'horodatage, puis je peux utiliser ST_Makeline si j'ai besoin des chaînes de ligne. Si vous avez Postgres 9.0+, vous pouvez utiliser un ORDER BY dans vos appels globaux pour vous assurer que la ligne va d'un point à un autre dans l'ordre chronologique. Je perds les valeurs M le long des lignes créées, mais si j'en ai besoin, j'ai toujours la couche de points sur laquelle je peux jeter en arrière-plan.
la source
J'ai utilisé pour la valeur d'horodatage de la coordonnée 'z' une partie du point xyz, ajustée en secondes (pas en millisecondes) moins le début de la première coordonnée pour éviter de stocker une grande valeur 'z'.
la source