Existe uma boa biblioteca de análise de trilhas GPS?

35

Continuo escrevendo códigos personalizados para trabalhar com trilhas de GPS: arquivos GPX e registros NMEA do meu telefone, registrador GPS dedicado etc. Sinto que estou reinventando o volante e me pergunto se há alguma biblioteca / ferramenta padrão que eu possa usar para trabalhar. com trilhas de GPS. Algumas das coisas que gosto de fazer:

  • Calcular a distância percorrida na pista
  • Calcule a velocidade média e as velocidades instantâneas ao longo da pista
  • Calcular tempo em movimento x tempo estacionário
  • Simplifique a faixa, elimine segmentos estacionários
  • Segmente uma faixa em faixas separadas, uma por viagem
  • Suavizar erro de amostragem GPS
  • Crie um perfil de elevação procurando pontos em um DEM
  • Converta as faixas em GPX, KML, etc. para visualização

Há uma variedade de aplicativos que analisam trilhas de GPS. Estou procurando uma biblioteca de software ou um conjunto de ferramentas programáveis ​​para que eu possa escrever meus próprios aplicativos. Não me importo muito com formatos de entrada; qualquer tipo de pontos de lat / lon com timestamp está correto. Eu trabalho principalmente em Python no Unix, mas praticamente qualquer linguagem serve.

As ferramentas existentes que eu uso incluem GPSBabel e GDAL / OGR para conversão e PostGIS para trabalhar com a geometria da trilha como uma sequência de linhas. Mas, na maioria das vezes, acabo escrevendo meu próprio código Python, que funciona em matrizes de pares lat / lon e parece baixo demais. Além disso, algumas das tarefas acima (como remover erro de GPS) são bastante sutis. Existe alguma biblioteca existente por aí que eu deveria estar usando?

Nelson
fonte
11
Depois de uma semana ou duas e uma recompensa, acho que a resposta para minha pergunta aqui é "não, não há biblioteca para o processamento de trilhas GPX". Muitos aplicativos e códigos, mas nenhuma ferramenta de uso geral. É útil saber disso. Para mim, o caminho a seguir é escrever um código PostGIS que funcione com o esquema criado pela importação de GPX do ogr2ogr. Esse esquema contém um LineString simples para a trilha e uma tabela de pontos com registros de data e hora para a dimensão de tempo.
24412 Nelson
O código Delphi também é uma opção?
O Google acaba de anunciar uma API de trilhas que estou mencionando aqui por completo. Parece útil, mas em uma direção diferente da que estou procurando; mais sobre migalhas de pão e cercas geográficas.
1719 Nelson
11
@Nelson Dê uma olhada nesta resposta, a partir de uma das criador de (em vez excelente editor passeio on-line) Ride With GPS: stackoverflow.com/a/13084082/401828
heltonbiker
@ Nelson Esta pergunta ainda é muito atual para mim, quase 4 anos depois. Você encontrou uma boa solução nesse meio tempo?
amball

Respostas:

7

Bem, meio que depende da sua linguagem de programação preferida, mas eu desenvolvi o mineturer.org em Java (o site é essencialmente um site para upload, análise e exibição de dados GPX).

Iv'e usou JAX-B (http://jaxb.java.net/) para ler arquivos GPX (com base no esquema GPX) e JTS (http://www.vividsolutions.com/jts/) + código próprio para analisando.

O código fonte do mineturer.org está disponível sob uma licença MIT em https://bitbucket.org/atlefren/gpsorganizer/

Eu acho que o código poderia lhe dar algumas dicas, pelo menos?

Atlefren
fonte
Obrigado! Seu site parece ótimo (e é bastante utilizável pelo Google Tradutor, mesmo que você não leia norueguês). Você está fazendo exatamente o tipo de análise que eu quero e é uma grande ajuda que você abriu a fonte. Para Python, eu provavelmente usaria o GEOS em vez do JTS; há ligações decentes.
196 Nelson Nelson
2
se você gosta ... voto a favor !!
Stev_k
11
Apenas um follow-up aqui: eu comecei a portar este projeto para Python, usando Shapely e GeoAlchemy (e Flask), ele funciona, mas é bastante lento no momento. Código em github.com/atlefren/mineturer2 para os curiosos
atlefren
3

Eu escrevi uma matemática C # -lib para matemática 2d / 3d direcionada ao manuseio de GPS: leitura de GPX e TCX, filtragem e simplificação de trilhas, agrupamento de trilhas / segmentos e transformação em plano 2D.

https://www.nuget.org/packages/Math.Matthey/

https://www.nuget.org/packages/Math.Matthey.Tools.TrackReaders/

tma
fonte
É possível obter alguma descrição ou documentação para esses Nugets?
Petr Krampl 29/03
Vou ver se consigo adicionar um Readme.MD ao pacote NuGet.
tma 30/03
Obrigado, o repositório não está acessível. É possível analisar também arquivos gpx contendo <rte>e <rtept>elementos, além dos <trk>elementos?
Petr Krampl 30/03
11
No momento, apenas suporte trrk-> trkseg-> trkpt com extensões de pontos de rastreamento Garmin, mas eu adicionei o rte-> rtept na 2.3.0, mas nenhuma validação até o momento.
tma 30/03
11
Adicionada documentação para os dois pacotes no nuget.org.
tma
2

O GPS Toolkit deve ajudar. É uma biblioteca de código aberto e um conjunto de aplicativos que visa libertar pesquisadores de codificação de nível inferior.

Ele fornece a seguinte funcionalidade:

  • Utilitários RINEX
  • Posicionamento
  • Análise residual
  • Modelagem ionosférica
  • Simulação de rastreamento de sinal T
  • Transformações básicas
  • Coleta e conversão de dados de observação
  • Comparação e validação de arquivos.
  • Edição de dados
  • Posicionamento autônomo e relativo.
RK
fonte
Obrigado pela resposta! O GPSTk parece fascinante, mas está em um nível mais baixo do que estou procurando. Parece ser sobre como trabalhar com sinais de rádio GPS brutos e derivar correções de localização deles. Já tenho correções de localização no meu hardware GPS de consumidor e não tenho acesso aos dados de satélite de baixo nível.
194 Nelson Nelson
1

Há uma lib de código aberto que acabei de desenvolver (para estável) e a interface do usuário para analisar GPX, TCX e arquivos de ajuste.

A lib é https://github.com/jimmykane/quantified-self-lib A interface do usuário baseada em Angular https://github.com/jimmykane/quantified-self

Demonstração ao vivo https://www.quantified-self.io

O que ele pode fazer é analisar um arquivo GPX, TCX ou Fit, gerar estatísticas como subida, descida, distância,

Jimmy Kane
fonte
0

Excelente pergunta! Ultimamente, tenho trabalhado bastante com os dados GPX e a solução mais simples que encontrei foi converter seus track points em um formato db espacial e criar vistas (espaciais e tabulares) para resumir os dados conforme necessário. Não consegui obter os resultados necessários usando o OGR para importar meus dados GPX, então acabei usando um script python simples para percorrer a estrutura em árvore XML do GPX e carregá-lo no db (SpatiaLite no meu caso). Definitivamente, isso não ajuda a evitar a reinvenção da roda, no entanto, descobri que era possível obter os resultados desejados ao resumir trilhas por viagem, usando as funções SQL e SQL espaciais existentes.

Brent Edwards
fonte
11
A principal desvantagem que vi ao usar o PostGIS LineStrings é que eles não contêm dados de carimbo de data / hora. Certamente eu posso rastreá-los em um esquema separado, mas o PostGIS não está fazendo nada para me ajudar a fazer cálculos baseados em tempo. Você tem algum truque para isso?
196 Nelson Nelson
0

Estou desenvolvendo este pequeno soft para meu próprio uso. É principalmente para visualização e não suporta todas as suas necessidades, mas talvez possa ajudar!

julien
fonte
Obrigado! É de código aberto e em Java, então é definitivamente uma ajuda.
21412 Nelson
0

correndo o risco de não responder à sua pergunta real :-), deixe-me sugerir um ótimo aplicativo que você talvez nunca tenha ouvido falar, que faz tudo o que você listou -

é o meu balcão único para visualizar, editar e transferir GPX, entre outras coisas.

E talvez mais sobre o assunto, talvez faça check-out do namespace Positioning do dotSpatial (.NET): http://dotspatial.codeplex.com/wikipage?title=DotSpatial.Positioning

Saudações.

MC5
fonte
Obrigado! O TopoFusion é um ótimo aplicativo para Windows, mas eu realmente preciso de uma biblioteca. dotSpatial tem algum código de aparência útil para berço. Está sob licença pública Mozilla.
21412 Nelson
0

Se você deseja alguma especificação abstrata para uma API neutra em idioma, existe o GeoAPI:

"A comunidade de desenvolvimento na construção de soluções GIS está sustentando um enorme nível de esforço. O projeto GeoAPI visa reduzir a duplicação e aumentar a interoperabilidade, fornecendo APIs neutras, apenas de interface, derivadas das normas OGC / ISO".

http://www.geoapi.org/

e mais especificamente o padrão de implementação (PDF)

heltonbiker
fonte
0

Envie sua faixa GPX para este URL

Você receberá a maioria dos serviços solicitados, especificamente:

  • Calcular a distância percorrida na pista
  • Calcular a velocidade média
  • Calcular tempo em movimento x tempo estacionário (visível no perfil de velocidade)
  • Simplifique a faixa, elimine segmentos estacionários
  • Suavizar erro de amostragem GPS
  • Converte a faixa KML / KMZ etc para visualização
John
fonte