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:

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ß.

Karte der Gemeinden des Kreises Plön

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.