Hier wird beschrieben, wie man mit den OGR-Tools der GDAL-Bibliothek die Verwaltungseinheiten (Landkreise, Departements, Kantone) ermitteln kann, durch die ein GPX-Track führt. In diesem Beitrag wurde bereits beschrieben, wie man das interaktiv mit QGIS machen kann. Die hier beschriebene Methode arbeitet nur mit der Kommandozeile und ist daher besonders dann geeignet, wenn man mehrere Tracks zu bearbeiten hat.
Neben der GPX-Datei mit dem Track werden die Grenzpolygonen der Verwaltungseinheiten in einem geeigneten Geoformat benötigt. Auf https://www.gadm.org/ stehen solche Daten länderweise im Geojson-Format zum Download zur Verfügung. Führt der Track durch mehrere Länder, werden die Daten der betreffenden Länder in einer Datei und einem Layer zusammengeführt:
ogrmerge.py -single -overwrite_ds\
-nln borders\
-o borders.geojson\
gadm41_FRA_2.json gadm41_DEU_2.json
Da ogr2ogr
nur eine Eingabedatei akzeptiert, wird zunächst der Track mit den Grenzpolygonen in einer Datei zusammengefasst:
ogrmerge.py -o merged.gpkg track.gpx borders.geojson
Damit kann die eigentliche Suche durchgeführt werden. Dazu nutzt man die Möglichkeit, mit ogr2ogr
spatiale Abfragen in SpatiaLite-Syntax auf den Eingabedaten auszuführen:
ogr2ogr -dialect SQLite\
-sql "select distinct borders.name_2,borders.geom\
from borders,track_tracks\
where not isEmpty(st_intersection(track_tracks.geom, borders.geom))"\
out.gpkg merged.gpkg
Die Datei out.gpkg
enthält die Geodaten der vom Track berührten Verwaltungseinheiten. Damit kann das Ergebnis z.B. in QGIS grafisch dargestellt werden. Ist man nur an den Namen der Verwaltungseinheiten interessiert, gibt man das Ergebnis in eine CSV-Datei aus:
ogr2ogr -dialect SQLite\
-sql "select distinct borders.name_2\
from borders,track_tracks\
where not isEmpty(st_intersection(track_tracks.geom, borders.geom))"\
out.csv merged.gpkg