Como modelar melhor as trilhas de GPS para armazenamento, visualização e análise?

17

Estou pensando em escrever um software para lidar com trilhas e pontos de rota de GPS (principalmente armazenando, exibindo e calculando métricas como velocidade, nota e algumas estatísticas simples).

Gostaria de saber qual deve ser o modelo de dados mais conceitualmente robusto em relação aos pontos de controle, e aqui estão alguns "candidatos":

  1. Considerando Faixas como sequências de Trackpoints:

    1.1 As faixas são consideradas "2D", pois as projeções do mapa são 2D. Os pontos de trilha podem ou não ter elevação, podem ou não ter timestamp. Elevação e registro de data e hora são considerados "extras", "opcionais". Para aplicações terrestres, a elevação é uma função direta de lat / lon (obtida via DEM);

    1.2 As trilhas são consideradas "3D", pois o espaço geográfico é, de fato, 3D, e a trajetória do receptor é 3D (a projeção em 2D é, portanto, uma forma de redução de dados). O registro de data e hora pode ou não estar presente (a faixa pode ter sido desenhada à mão).

    1.3 As faixas são consideradas "4D" (3 espaciais + tempo). Assim, um mapa desenhado à mão é um caso especial em que a elevação e o carimbo de data / hora estão nullou não presentes, mas as propriedades do Trackpoint estão sempre "lá".

  2. As faixas são consideradas dicionários de fluxos, onde todos os fluxos têm comprimentos iguais. Há uma lista de latitudes, uma lista de longitudes, uma lista de elevações, uma de registros de data e hora, etc. Isso facilita o cálculo de estatísticas de cada propriedade, e o conceito de Trackpoint se torna "virtual" em certo sentido, pois é um seção transversal de muitos fluxos.

Se bem entendi, o formato GPX adota 1.1., O KML adota 1.2. (sem suporte para registro de data e hora) e a API Strava adota 2. (no formato JSON), mas no final são apenas formatos de arquivo para serialização e armazenamento, não necessariamente para modelagem, representação computacional e processamento de números.

Existe alguma forma preferível, no sentido orientado a objetos, e por quê? (Acredito que digitação forte e modelagem sensível pelo menos evitariam operações que não fazem sentido).

EDIT: algumas perguntas adicionais "intrigantes":

  • Uma trilha desenhada à mão é CONCEPTUALMENTE a mesma coisa que uma trilha registrada por dispositivo? Eles devem ter diferentes tipos de dados?
  • Deve ser considerado "correto" que o KML armazene elevações nulas como zero? Zero É uma elevação e, se você não conhece a elevação, não deve atribuir um zero numérico a ela, não é?
  • Importa, em uma pista com elevação, se a elevação é extraída de dados DEM ("offline") ou de dados GPS ou dados barométricos ("no campo")? Isso deve ser sinalizado no objeto Track? Salvo em diferentes propriedades do Trackpoint? Ignorado? Eles devem ser tipos de dados de coleção diferentes?
  • Se eu editar uma faixa gravada por dispositivo em um editor de mapas (adicionar, mover e remover pontos) ou combinar faixas de datas diferentes, como os carimbos de data e hora nos pontos de trilha devem ser tratados? Eles devem ser "redefinidos" para nulos? Um objeto (coleção de trackpoints) de um tipo diferente deve ser criado a partir dos anteriores?
heltonbiker
fonte
3
3. As trilhas são uma coleção de pontos com os atributos x, y, z, m [] e tempo. Um arquivo CSV contendo esses 5 valores para cada ponto capturado é mais que suficiente para um modelo de dados robusto. Se você precisar de coisas sofisticadas como <>e {}para ajudá-lo a organizar seus dados - e metadados -, você está fazendo errado.
Nagytech 20/06
1
Concordo com apenas um bom e velho CSV, ele representa tudo o que o GPS está gravando. Mas, o formato GPX é bastante comum para dispositivos GPS. Esse link pode valer algo, pois o GPS e o KML são formatos de dados XML. stackoverflow.com/questions/1820129/…
Pete
Embora o XML seja 'ótimo' e todos (pelos motivos da postagem vinculada do @ Pete), nenhum desses pontos é relevante. De qualquer forma, a sobrecarga não faz nada além de diminuir o processamento de números e inchar seus métodos de armazenamento e transmissão de dados. É verdade que, se você é uma mãe-e-pop, nunca terá dados suficientes para encontrar esses problemas, e seu processamento de números não será intenso. De qualquer forma, você não terá os recursos para sustentar a operação tão perto do metal - portanto, XML de distância.
Nagytech
1
Observe que esta questão tem muito mais a ver com modelagem e design de dados (representação de sua essência conceitual) do que com a implementação real. Os comentários até agora se concentram nos formatos de arquivo, o que é, pelo que penso, ainda mais distante, porque os formatos de arquivo dependem mais do meio de implementação do que da natureza dos dados.
heltonbiker
1
Em termos de OO, usei uma classe de linha que pode conter os pontos (lat, lng, ele, tempo, velocidade, rumo, etc.). E, a partir daí, rotas que representam "trilhas" desenhadas à mão ou pretendidas e trilhas que representam uma trilha real com dados de tempo / velocidade. Conceitualmente, acho que eles são diferentes (desenhados à mão e / ou fornecidos por um cartógrafo, ou algo assim, em comparação a uma pista real). Os termos são apenas semânticos, com certeza, mas o uso de tipos reais tem sido útil (em vez de apenas juntar tudo isso como uma "faixa"). Além disso, quando se trata de formatos de serialização, considero GeoJSON: en.wikipedia.org/wiki/GeoJSON .
Charlie Collins

Respostas:

4

Eu não acho que essa pergunta possa realmente ser respondida definitivamente, pois existem muitas, muitas maneiras de abordar isso.

No entanto, esses pensamentos podem ser relevantes:

O armazenamento de dados é relativamente sem importância. Qualquer que seja o mecanismo usado, banco de dados, JSON, KML, etc, ainda é "armazenamento simples".

O importante é o software que você usa e como você representa os dados no software para poder realizar sua modelagem.

A velocidade está disponível de duas maneiras, distância x tempo ou como saída de um dispositivo GPS, de onde você está fornecendo seus dados. Portanto, o tempo se torna irrelevante, exceto como um item informativo.

Além disso, você também pode considerar o tempo usando um deslocamento desde o início da faixa. Se você tiver a velocidade e a distância, poderá calcular os horários nos pontos. (a distância entre dois pontos pode ser determinada por vários métodos diferentes )

A elevação deve ser considerada parte do Modelo Espacial, eles são relevantes para determinar toda uma série de informações interessantes sobre a pista em si, por exemplo, o grau pode ser calculado, o que permite entender as variações de velocidade ao longo de uma trilha. Se não houver inclinação, qualquer desaceleração ou aumento de velocidade pode ter sido causado pela remoção do pé do acelerador.

Em termos de mesclar faixas e faixas desenhadas à mão, o tempo é de pouca relevância. Você pode aplicar velocidades arbitrárias para determinar o tempo, por exemplo, quanto tempo percorrer uma pista a uma determinada velocidade. Se você estiver mesclando faixas com vários dias de diferença, seus dados simplesmente não farão sentido, portanto você terá que redefinir os campos de tempo, possivelmente usando deslocamentos no início da faixa.

Se a elevação não é conhecida, ela não é conhecida e, portanto, não deve ser zero. Também não deve ser negativo, pois as elevações negativas também são válidas. (Em um vale abaixo do nível do mar, poço de minas, etc)

Sim, DEMS estão disponíveis, sim, você pode extrair deles. A precisão será suficiente? Improvável, a menos que a precisão não seja um problema. GPS ou barometria, desde que as elevações sejam as melhores que você pode obter.

Então, para tentar dar uma resposta que se aproxima:

Armazene os dados em qualquer formato plano que desejar, mas eu recomendaria o PostGRES com PostGIS seja uma boa opção, ele lida com 3D de maneira agradável. Você pode usar as extensas funções espaciais no PostGIS para manipular / modelar seus dados.

Se você usar algum tipo de programa personalizado desenvolvido, use uma abordagem Orientada a Objetos em vez de matrizes. Se você usa matrizes, também pode usar um banco de dados.

Mark Cupitt
fonte
1
Muito obrigado pelo seu tempo e interesse, achei sua resposta muito interessante. Mas com uma coisa eu "não posso" concordar: que a velocidade é a variável canônica, enquanto o tempo não. Isso por muitas razões, mas principalmente porque a velocidade é a derivada da distância ao longo do tempo. Você sempre terá boa velocidade e boa velocidade média, especialmente (que eu achei mais úteis que a velocidade instantânea), se derivar a distância do segmento ao longo do tempo do segmento. Por outro lado, se você integrar velocidades, o erro de integração fornecerá resultados muito errados após um pequeno número de amostras.
heltonbiker
2
Sim, eu posso admitir esse ponto. no entanto, o uso de trilhas GPS está sujeito a erros de posição. É tudo uma questão de qual precisão você pode obter. Concordado, o tempo é bastante preciso, mas você também receberá erros ao usá-lo devido aos erros de posição do GPS. Os intervalos de um segundo nos pontos de rastreamento são apenas isso, um segundo, mas dentro do GPS, seus algoritmos podem muito bem estar interpolando de qualquer maneira para chegar a uma posição estimada. Obviamente, a granularidade dos dados terá um grande impacto sobre qualquer método de análise escolhido
Mark Cupitt
Muito bem colocado ... É por isso que eu já desisti de plotar a "velocidade instantânea" por completo, seguindo algum tipo de "velocidade média instantânea", ou seja: "para cada ponto da trajetória, sua velocidade média instantânea é a média velocidade dos últimos N minutos. " Ele é muito bonito e oferece uma sensação adequada de variações de velocidade ao longo de uma viagem. Mas o cálculo adequado pode ser complicado e provavelmente é um pouco intensivo em termos computacionais.
heltonbiker
0

Como já mencionado em outra resposta, existem muitas abordagens diferentes. Como solicitei "modelos de dados conceitualmente robustos", depois de muita pesquisa, encontrei dois grandes corpos de conhecimento que fornecem duas abordagens bastante diferentes para o conceito de "objetos em movimento" e têm muita sobreposição (no bom sentido):

  1. Os livros de Gennady e Natalia Andrienko, publicados por Springer Verlag, por exemplo, o excelente Visual Analytics of Movement (entre outros da mesma editora). Altamente recomendado.
  2. As Especificações Abstratas (esquemas conceituais) da ISO / OGC (normas ISO 191xx), especialmente ISO 19107 (Esquema Espacial), 19108 (Esquema Temporal), 19111 (Referências Espaciais por Coordenadas), 19141 (Características Móveis) e 19148 (Referências Lineares)
heltonbiker
fonte