Preciso armazenar uma série de pontos de GPS com registros de data e hora no banco de dados (rastreamentos de vários veículos).
Gostaria de saber qual das duas abordagens escolher para armazená-las na tabela PostGIS: 1.) Cada ponto na própria linha com coluna separada para carimbo de data e hora e uma para identificação de faixa
2.) Use Linestring ou MultiLineString com a quarta coordenada M, que conteria o registro de data e hora do UNIX para o ponto na pista. Isso significaria uma única linha para cada faixa separada.
postgis
gps
tracklog
movement-data
Tomislav Muic
fonte
fonte
Respostas:
Depende do que você deseja fazer com os dados depois que eles forem carregados no banco de dados. Se cada ponto de dados tiver atributos associados além do tempo (por exemplo, leitura da temperatura do motor, uma foto) ou você desejar usar os dados do ponto em uma análise, então armazenar cada dado em sua própria linha é uma boa opção.
Se cada faixa tiver atributos associados (por exemplo, nome do evento) ou suas análises estiverem em faixas (por exemplo, encontrar passagens de faixa), faz mais sentido armazenar cada uma como uma (MULTI) LINESTRING.
Se você escolher uma abordagem, isso não impedirá que você faça as análises na outra. Isso exigirá apenas algumas etapas extras.
fonte
Pessoalmente, armazeno os dados coletados pela minha unidade GPS como uma camada pontual com um campo de carimbo de data / hora e, em seguida, posso usar ST_Makeline se precisar das sequências de linhas. Se você possui o Postgres 9.0+, pode usar um ORDER BY em suas chamadas agregadas para garantir que a linha vá de um ponto a outro em ordem cronológica. Perco os valores M ao longo das linhas criadas, mas se eu precisar deles sempre tenho a camada de pontos que posso usar em segundo plano.
fonte
Eu usei o valor do carimbo de data e hora da parte da coordenada 'z' do ponto xyz, aparada em segundos (não em milissegundos) menos o início da primeira coordenada para evitar o armazenamento do valor 'z' grande.
fonte