Bessere kleine Karten mit mapshaper
Als Antwort auf meinen Beitrag Nur eine Karte zeichnen bekam ich den Tipp, mir doch mal die Software mapshaper anzusehen. Das habe ich gemacht und werde euch hier zeigen, wie man damit noch bessere, sehr platzsparende Vektorkarten erstellen kann.
Wie man mapshaper installiert, findet man auf der GitHub Seite von mapshaper, daher muss ich das hier nicht wiederholen. Interessanter ist der genaue Aufruf des Programms.
Ausgangsdaten
Als Ausgangspunkt nehmen wir uns dieses Mal die Geometrien der Gemeinden in Schleswig-Holstein. Man findet sie etwas versteckt im Open-Data-Portal Schleswig-Holstein im Datensatz ALKIS Schleswig-Holstein (ohne Eigentümerangaben) Der Einfachheit halber verlinke ich hier aber gleich alle drei in diesem Zusammenhang interessanten GML-Files:
- kreise.gml 4,9 MB
- ämter.gml 16 MB
- gemeinden.gml 34 MB
GeoJSON
Um mit mapshaper arbeiten zu können, müssen wir zunächst die Shape-Dateien in GeoJSON umwandeln:
ogr2ogr -f "GeoJSON" kreise.geojson kreise.gml VerwaltungsEinheit
ogr2ogr -f "GeoJSON" ämter.geojson ämter.gml VerwaltungsEinheit
ogr2ogr -f "GeoJSON" gemeinden.geojson gemeinden.gml VerwaltungsEinheit
Verkleinern
Damit man diese Karten sinnvoll (z.B. auf einer Webseite) nutzen kann, kommt mapshaper ins Spiel.
mapshaper kreise.geojson -simplify 1% -o format=geojson kreise.min.geojson
mapshaper ämter.geojson -simplify 1% -o format=geojson ämter.min.geojson
mapshaper gemeinden.geojson -simplify 1% -o format=geojson gemeinden.min.geojson
Dadurch wird die Größe auf 1% der Ursprungsgröße reduziert. Für eine optisch ansprechende Darstellung von Werten auf einer Karte reicht das völlig aus.
Filtern
Ist man nur an den Gemeinden eines Kreises interessiert, so lassen sich die Daten beispielsweise mit dem Programm jq
filtern.
Angenommen, ich bin nur am Kreis Plön interessiert. Dieser hat die Kreisnummer DE01057.
Dann kann ich meine zuvor erstellte Datei aller Gemeinden gemeinden.min.geojson
folgendermaßen filtern:
jq '.features |= map(select(.properties.uebobjekt | startswith("DE01057")))' < gemeinden.min.geojson |\
sed 's/\.[0-9]*//' |\
jq -c | gzip > gemeinden_DE01057.geojson.gz
Größenvergleich
Inhalt | Shape-Datei | GeoJSON | mapshaper 1% | gzip |
---|---|---|---|---|
Kreise | 4,9 MB | 9,7 MB | 53 kB | 19 kB |
Ämter | 16 MB | 31 MB | 239 kB | 79 kB |
Gemeinden | 34 MB | 69 MB | 894 kB | 280 kB |
Die Datei mit den Vektordaten der Gemeinden des Kreises Plön ist übrigens nur 12 kB groß.
Update 2025-01-16: Es sind im Original gar keine Shape-Dateien sondern GML.
Kommentare
Mit einem Konto im Fediverse oder auf Mastodon kannst du auf diesen Beitrag antworten. Da Mastodon dezentral funktioniert, kannst du dein bestehendes Konto auf einem Mastodon-Server oder einer kompatiblen Plattform verwenden.
Nach einem Klick auf "Lade Kommentare" werden nicht-private Antworten vom Server norden.social geladen und unten angezeigt.
Wie das technisch funktioniert, kann man hier erfahren.