Necesito almacenar una serie de puntos GPS con marcas de tiempo en la base de datos (rastros de varios vehículos).
Me pregunto cuál de los dos enfoques elegir para almacenarlos en la tabla PostGIS: 1.) Cada punto en su propia fila con una columna separada para la marca de tiempo y una para la ID de la pista
2.) Use Linestring o MultiLineString con la cuarta coordenada M que contendría la marca de tiempo UNIX de la hora para el punto en la pista. Esto significaría una sola fila para cada pista separada.
postgis
gps
tracklog
movement-data
Tomislav Muic
fuente
fuente
Respuestas:
Depende de lo que desee hacer con los datos una vez que se cargan en la base de datos. Si cada punto de datos tiene atributos asociados además del tiempo (p. Ej., Lectura de temperatura del motor, una foto) o si desea utilizar los datos del punto en un análisis, almacenar cada dato en su propia fila es una buena opción.
Si cada pista tiene atributos asociados (p. Ej., Nombre del evento) o sus análisis estarán en pistas (p. Ej., Encontrar cruces de pistas), entonces tiene más sentido almacenar cada uno como un LINESTRING (MÚLTIPLE).
Si elige un enfoque, no le impedirá hacer los análisis en el otro. Solo requerirá algunos pasos adicionales.
fuente
Personalmente, almaceno los datos recopilados por mi unidad GPS como una capa de puntos con un campo de marca de tiempo, luego puedo usar ST_Makeline si necesito las cadenas de línea. Si tiene Postgres 9.0+, puede usar ORDER BY en sus llamadas agregadas para asegurarse de que la línea vaya de punto a punto en orden cronológico. Pierdo los valores M a lo largo de las líneas creadas, pero si los necesito siempre tengo la capa de puntos que puedo lanzar en el fondo.
fuente
Utilicé el valor de la marca de tiempo de la parte 'z' de la coordenada del punto xyz, recortado a segundos (no milisegundos) menos el inicio de la primera coordenada para evitar el almacenamiento del gran valor 'z'.
fuente