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]