Jak zbiorczo importować pliki GPX do QGIS i scalić w jeden plik kształtu?

11

Chcę stworzyć własną „mapę cieplną” wszystkich jazd rowerowych, które zarejestrowałem za pomocą aplikacji Strava w QGIS.

Mam ponad 450 pojedynczych plików GPX i chciałbym scalić warstwy punktów ścieżki w jeden plik kształtu, dzięki czemu mogę połączyć je z warstwą wielokąta i symbolizować za pomocą join_count, jak pokazano w tym przykładzie:

wprowadź opis zdjęcia tutaj

Niektóre z moich plików GPX zawierają „ride” w nazwie pliku, a inne „run”, chciałbym filtrować pliki, pozostawiając tylko te z „ride”.

Jak mogę to skutecznie osiągnąć za pomocą QGIS?

MFBawls
źródło

Odpowiedzi:

13

Użyj narzędzia wiersza polecenia ogr2ogr, które jest dystrybuowane wraz z QGIS. W systemie Windows otwórz powłokę OSGeo4W z grupy programów QGIS i wpisz

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

Analogiczne polecenie w uniksowej powłoce bash byłoby

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

Upewnij się, że plik wyjściowy (gpx.shp) wcześniej nie istniał, wtedy ogr2ogr utworzy jeden plik shapefile ze wszystkich plików gpx z „jeździć” w nim. Kilka uwag na temat sterownika ogr gpx na stronie znaleźć stronie http://www.gdal.org/drv_gpx.html .

Redoute
źródło
3

Wiem, że jest późno, ale może kiedyś pomóc innym. Istnieje wtyczka QGIS o nazwie Batch GPS Importer, którą wyjaśniłem więcej w tej odpowiedzi .

Najnowsza wersja może filtrować pliki przy użyciu prefiksu i sufiksu. Batch GPS Importer

Mam nadzieję, że to pomoże.

zastanawiać się
źródło
2

Możesz zaimportować wiele plików GPX jednocześnie, jednak każdy plik zostanie poproszony o podanie żądanej warstwy danych. Z ponad 400 śladami, które nie będą zabawne.

Możesz zajrzeć na ogr2ogr . To szwajcarski scyzoryk konwersji plików geo, przekształci prawie każdy geoformat w dowolną inną kompatybilną (wektor / raster) geoformat.

wygląda jak wywołanie ogr2ogr

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

Możesz wywołać go programowo (np. Ze skryptu Pythona, pliku .bat lub skryptu bash) w celu iteracji po każdej przejażdżce * .gpx i przekonwertowania go na przykład na plik kształtu.

Powiedziawszy to, nie mogłem tego uruchomić na kilku losowych śladach GPX pobranych z OpenStreetMap (ogrinfo też ich nie lubił, chociaż załadował je QGIS). Ale udało mi się otworzyć pliki GPX z innego źródła.

Spróbuj uruchomić

ogrinfo example.gpx tracks

i sprawdź, czy otrzymasz jakieś przydatne dane wyjściowe. Jeśli pojawi się lista sterowników, nie powiodła się.

Twój przebieg może się różnić, warto spróbować.

Pamiętaj, że każdy plik shapefile będzie miał swój własny katalog, więc jeśli nie chcesz kłopotów z pisaniem kodu, możesz zamiast tego spróbować CSV. Zobacz ten post na blogu .

Aby wykonać scalanie, możesz (za pomocą kodu) skopiować wszystkie pliki kształtu do jednego katalogu, a następnie użyć Wektora> Narzędzia do zarządzania danymi> Scal pliki danych w jeden

Jeśli lubisz styl szesnastkowy, który zilustrowałeś, możesz spojrzeć na wtyczkę MMQgis . Umożliwia to tworzenie siatek heksagonalnych, które można następnie wykorzystać do wykonania analizy „punktów w wielokącie”.

Steven Kay
źródło
4
W systemie Windows otworzyłem powłokę OSGeo4W z grupy programów QGIS i próbowałem for %p in (C:\Data\*.gpx) do ogr2ogr gpx.shp -append %p track_points -fieldTypeToString DateTime. gpx.shp nie może istnieć wcześniej, wtedy ogr2ogr tworzy pojedynczy plik shapefile.
Redoute
1
Powinieneś napisać to jako odpowiedź @Redoute!
Alex Leith,
@ Redoute Tak, czy możesz napisać pełną odpowiedź? Dzięki
MFBawls,
1
tłumaczenie doskonałej sugestii @Redoute dla użytkowników Linuksa, działa jak urok ...#!/bin/bash for i in $( ls ./*.gpx ); do ogr2ogr gpx.shp -append $i track_points -fieldTypeToString DateTime done
Steven Kay