Stockage de traces GPS avec horodatage dans PostGIS


8

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.


Je ne comprends pas ce que vous entendez par une quatrième coordonnée M qui contiendrait l'horodatage UNIX. Peux-tu être plus précis? N'est-il pas préférable de stocker l'horodatage dans un champ séparé?
Benjamin Toueg

Réponses:


2

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.


4

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.


0

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'.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.