Como importar em massa arquivos gpx para QGIS e mesclar em um único shapefile?

11

Estou procurando criar meu próprio 'mapa de calor' de todos os passeios de bicicleta que gravei usando o aplicativo Strava no QGIS.

Eu tenho mais de 450 arquivos gpx individuais e gostaria de mesclar as camadas dos pontos de trilha em um único shapefile para que eu possa uni-las a uma camada de polígono e simbolizar join_count, como visto neste exemplo:

insira a descrição da imagem aqui

Alguns dos meus arquivos gpx contêm 'ride' no nome do arquivo e outros 'run'. Gostaria de filtrar os arquivos deixando apenas aqueles com 'ride'.

Como posso conseguir isso de forma eficiente usando o QGIS?

MFBawls
fonte

Respostas:

13

Use a ferramenta de linha de comando ogr2ogr, distribuída com o QGIS. No Windows, abra o OSGeo4W Shell no grupo de programas QGIS e digite

for %p in (path_to_gpx_files\*ride*.gpx) do ogr2ogr path_for_output\gpx.shp -append %p track_points -fieldTypeToString DateTime

O comando equivalente em um shell bash do Unix seria

for file in path_to_gpx_files/*ride*.gpx; do ogr2ogr path_for_output/gpx.shp -append "${file}" track_points -fieldTypeToString DateTime; done

Verifique se o arquivo de saída (gpx.shp) não existe antes, ogr2ogr produzirá um único arquivo de forma a partir de todos os arquivos gpx com "ride" nele. Há algumas notas sobre o driver ogr gpx em http://www.gdal.org/drv_gpx.html .

Reduzir
fonte
3

Eu sei que é tarde, mas pode ajudar os outros um dia. Existe um plug-in QGIS chamado Batch GPS Importer, que expliquei mais nesta resposta .

A versão mais recente pode filtrar arquivos usando texto de prefixo e sufixo. Importador de GPS em lote

Espero que ajude.

maravilhoso
fonte
2

Você pode importar vários arquivos GPX de cada vez, embora seja solicitado a cada arquivo a camada de dados que você deseja. Com mais de 400 traços, isso não será divertido.

Você pode querer olhar para ogr2ogr . Este é o canivete suíço das conversões de arquivos geográficos; ele converterá quase todo geoformato em qualquer outro geoformato compatível (vetor / raster).

uma chamada ogr2ogr se parece com

ogr2ogr -f "ESRI Shapefile" example.shp example.gpx

Você pode chamá-lo programaticamente (por exemplo, de um script python, arquivo .bat ou script bash) para iterar cada passeio * .gpx e convertê-lo em um shapefile, por exemplo.

Dito isso, não consegui fazer isso funcionar em alguns rastros aleatórios de gpx que baixei do OpenStreetMap (ogrinfo também não gostava deles, embora o QGIS os carregasse). Mas consegui abrir arquivos GPX de outra fonte.

Tente correr

ogrinfo example.gpx tracks

e veja se você obtém alguma saída útil. Se você receber uma lista de drivers, ela falhará.

Sua milhagem pode variar, vale a pena tentar.

Observe que cada shapefile terminará com seu próprio diretório; portanto, se você não quiser o incômodo de escrever código, tente o CSV. Consulte esta postagem do blog .

Para fazer a mesclagem, você pode (usando o código) copiar todos os arquivos de forma em um único diretório e usar o Vetor> Ferramentas de gerenciamento de dados> Mesclar arquivos de forma em um

Se você gosta do estilo hexbin ilustrado, pode gostar de ver o plugin MMQgis . Isso permite a criação de grades hexagonais, que você pode usar para fazer a análise de 'pontos no polígono'.

Steven Kay
fonte
4
No Windows, abri o OSGeo4W Shell do QGIS Program Group e tentei for %p in (C:\Data\*.gpx) do ogr2ogr gpx.shp -append %p track_points -fieldTypeToString DateTime. O gpx.shp não deve existir antes, ogr2ogr produz um único arquivo de forma.
Redoute
1
Você deve escrever isso como resposta @Redoute!
Alex Leith
@Redoute Sim, por favor, você pode escrever como resposta completa? Graças
MFBawls
1
tradução de excelente sugestão por @Redoute para usuários de Linux, ele funciona como um encanto ...#!/bin/bash for i in $( ls ./*.gpx ); do ogr2ogr gpx.shp -append $i track_points -fieldTypeToString DateTime done
Steven Kay