Em nossas pesquisas aéreas sobre a vida selvagem, geralmente geramos dezenas de arquivos GPX e geralmente convertemos a maioria deles em arquivos shapefiles para exibição em um aplicativo GIS. Os arquivos GPX são uma excelente maneira de manter todos (ou quase todos) os seus dados de GPS em um só lugar - são arquivos xml que armazenam informações de trilhas, waypoints e rotas em um formato conveniente. Eles armazenam várias faixas, até mesmo faixas salvas antigas de um Garmin.
Eu gostaria de armazenar todos esses dados de rastreamento em um banco de dados espacial, em paralelo com outras tabelas que apontam dados observacionais da mesma pesquisa.
ogr2ogr me permitirá converter a trilha em um banco de dados espacial:
ogr2ogr -append -f "SQLite" -dsco SPATIALITE=yes # add to table with Spatialite filetype
-dsco INIT_WITH_EPSG=yes -t_srs epsg:4326 # using WGS84
SURVEYDATA.sqlite GPXFILE.gpx tracks -nln tracktable; # adding tracks to 'tracktable'
No entanto, isso importa cada trilha salva como uma linha - perdendo as informações de hora / local para cada ponto de trilha!
Alguém conhece alguma maneira inteligente de construir um banco de dados de trilhas que preservará essas informações?
EDIT :
As trilhas não são apenas uma linha - são coleções de pontos seqüenciais, cada um com um atributo de elevação e tempo. Cada ponto pertence a um segmento de faixa, que por sua vez pertence a uma determinada faixa, e os pontos dentro de cada segmento de faixa foram obtidos sem interrupção e pode-se presumir que estejam vinculados. Por exemplo:
<trk><name>ACTIVE LOG</name>
<trkseg>
<trkpt lat="-13.471403" lon="31.382982"><ele>467.818725585938</ele><time>2009-09-09T03:53:38Z</time></trkpt>
<trkpt lat="-13.471403" lon="31.382982"><ele>468.780029296875</ele><time>2009-09-09T03:53:50Z</time></trkpt>
<trkpt lat="-13.471403" lon="31.382982"><ele>465.896118164063</ele><time>2009-09-09T03:54:43Z</time></trkpt>
</trkseg>
Portanto, para salvar uma trilha, você precisa salvar essa coleção de pontos com os dados associados.
Uma solução pode ser carregar essas trilhas como pontos, com colunas adicionais para nome, segmento, elevação e tempo da trilha; Eu não acho que o ogr irá converter as faixas como pontos, no entanto.
Solução
Obrigado a @scruss, que apontou o gpx2spatialite , com o qual eu instalei (OS X 10.9) sudo easy_install gpx2spatialite
. Esse conjunto de ferramentas foi desenvolvido para o projeto 'drawinglife' (e, portanto, possui algumas informações sobre a 'cidade' que provavelmente são desnecessárias para a maioria de nós); a página principal gpx2spatialite não explica muito, mas o wiki do drawinglife é melhor. Ainda assim, muitos recursos não documentados - como remover duplicatas!
Crie um banco de dados espacial para arquivos GPX que conterão segmentos, trilhas, pontos de trilha e waypoints. Ele também possui 'usuários' configurados (o que parece estranho, já que o sqlite não é um sistema de acesso do usuário, mas foi criado para desenhar a vida) projetado para rotular as várias faixas:
gpx2spatialite create_db MyGPXArchive.db
Carregue uma pasta inteira de arquivos GPX, incluindo todas as subpastas, verificando e removendo duplicatas ao longo do caminho:
gpx2spatialite -s -d MyGPXArchive.db -u SL25 Selous2013/
Opções:
-s
= não verifique se os pontos de controle estão no banco de dados da cidade (acelera muito)-d MyGPXArchive.db
= banco de dados a ser usado;-u SL25
= adicione o usuário SL25 (apenas uma etiqueta que usei para o conjunto de faixas coletadas);Selous2013
= a pasta (com subpastas) que contém as faixas nas quais estou interessado.
Insetos:
Se você salvou faixas em um Garmin antigo que descarta informações de carimbo de data / hora, a importação será interrompida (remova essas faixas salvas usando um utilitário como GPSU). Se você possui gpsbabel , filtre o arquivo primeiro com algo como:
faixa gpsbabel -w -r -t -i gpx -f [INPUT.gpx] -x, start = 20000101 -o gpx -F [OUTPUT.gpx]
Respostas:
O ptrv / gpx2spatialite faz isso muito bem, economizando registros de data e hora para todos os pontos e derivando dados de velocidade e comprimento para trilhas. Ele também não importa faixas duplicadas, para que você possa alimentar uma pilha enorme de arquivos GPX e os reproduzirá adequadamente.
Atualização : exemplos de uso, conforme solicitado:
Inicialize o novo banco de dados:
Adicione um único arquivo gpx:
(Se o nome de usuário usuário não existir no banco de dados, ele consultará se você deseja criá-lo. O banco de dados é construído com trilhas / waypoints / rotas atribuídos a um ou mais usuários.)
Adicione todos os arquivos gpx na pasta / :
Uso: é uma base de dados espaciais, com mesa tracklines segurando as faixas como poligonais, Trackpoints contendo os pontos individuais (com o tempo, a altitude, etc.), e pontos de referência para quaisquer pontos definidos. Também existem inúmeros índices, algumas definições de cidades do mundo e, possivelmente, também informações de estilo de SLD incorporadas que ainda não explorei. Como um exemplo trivial, aqui está um mapa de como minha cidade natal (Toronto) é definida através de ~ 7 anos de registros de trilhas:
Usando linhas com 75% de transparência, as rotas mais frequentemente percorridas ficam mais escuras.
fonte
easy_install gpx2spatialite
realmente o instalaria como um script acessível a partir da linha de comando! Auser
opção também foi confusa, eles não explicam isso na página principal e o spatialite é um sistema sem acesso restrito.user
opção faz sentido para o projeto Drawinglife, pois permite que vários participantes adicionem suas faixas ao mesmo banco de dados. Obrigado pelas dicas sobre como excluir a marcação da cidade e por encontrar os motivos dos acidentes. Se você tiver arquivos GPX sem registro de data e hora, poderá sintetizar os dados de hora usando a opção de tempo de jogo do GPSBabel .gpx2spatialite import -u user -s -d db.spatialite file1.gpx …
Para aprofundar seu comentário - "o FME tem um método específico para salvar arquivos GPX?"
Sim, você tem controle total sobre rotas, waypoints, trilhas e metadados
O FME é uma ferramenta muito valiosa e poderosa para manipular dados de GIS e dados não espaciais juntos.
veja para mais detalhes http://evangelism.safe.com/fmeevangelist26/
fonte
Existem algumas idéias aqui para criar seu próprio programa para extrair dados gpx em python ou perl. A partir daqui, não é muito difícil colocar os dados em um banco de dados espacial. Você precisará pensar em um esquema adequado para armazenar no espaço espacial - quais atributos você deseja manter?).
fonte
Se você deseja seguir a rota do OGR, a melhor abordagem é exportar primeiro para o Shapefile, que exportará vários shapefiles que representam a distinção entre waypoint / trackpoint / way / track e os metadados associados e, em seguida, mesclará cada conjunto de arquivos no SQLite principal base de dados.
fonte
Tente adicionar
ao seu comando ogr2ogr
fonte