Skip to content

wm87/wms-opendata

Repository files navigation

WMS-Dienste auf Basis von Open Data

Dieses Projekt stellt selbst ausgwählte WMS-Dienste (Web Map Service) aus Deutschland bereit. Beispielsweise sind Bodenrichtwerte zu nennen, welche zur Orientierung über den Wert von Grundstücken dienen und in GIS-Anwendungen wie QGIS eingebunden werden können.

Inhalt

Voraussetzungen

Um den Dienst selbst zu betreiben, benötigst du:

  • Docker
  • Shell (Bash)
  • Zugriff auf die Bodenrichtwertdaten des LVermGeo Brandenburg
# Installation des Containers
bash build.sh

# Update Service
docker-compose up db importer

Debugging

docker logs pg

docker exec -it mapserver tail -f /var/log/apache2/error.log
docker exec -it mapserver tail -f /var/log/mapserver.log

# Testaufruf der Capabilties des BORIS-Dienstes
curl "http://localhost:8081/wms/bb/boris_bb.fcgi?SERVICE=WMS&REQUEST=GetCapabilities"
curl "http://localhost:8081/wms/nrw/boris_nrw.fcgi?SERVICE=WMS&REQUEST=GetCapabilities"

Nutzung als WMS in QGIS

http://localhost:8081/wms/bb/boris_bb.fcgi?
http://localhost:8081/wms/nrw/boris_nrw.fcgi?

📊 Screenshot's aus QGIS

BORIS BB 2022

BORIS_BB

Umgebungslärm BB 2017 / 2022

Umgebungslaerm_BB

BORIS NRW 2025

BORIS_NRW

TFIS NRW 2025

TFIS_NRW

🗘️ MapServer WMS: tfis_nrw

Dieses Repository enthält ein Python-Skript mapbox2mapserver.py zur automatischen Erstellung eines MapServer-WMS für TFIS NRW auf Basis von Mapbox-Sprites und GeoJSON-Daten.

✅ Funktionen

  • 🎨 Extraktion von Symbolen/Icons aus Mapbox-Sprite-Dateien (sprite@2x.json, sprite@2x.png)
  • 🔄 Konvertierung in MapServer-konforme Layerdefinitionen
  • 🧱 Automatische Erstellung von .map und symbols.map
  • 🗘️ Unterstützung für PostGIS-basierte Linien- und Punktlayer

🔧 Voraussetzungen

  • Python 3.x
  • Pillow: pip install pillow
  • PostGIS-Datenbank tfis_nrw
  • Mapbox-Sprite-Dateien:
    • sprite@2x.png
    • sprite@2x.json
  • GeoJSON-Dateien im Verzeichnis /data/tfis_nrw/

📂 Projektstruktur

/products/tfis_nrw/build/
├── sprite@2x.json          # Mapbox Sprite JSON
├── sprite@2x.png           # Mapbox Sprite PNG

/data/tfis_nrw/             # GeoJSON-Dateien für die Layer

/etc/mapserver/
├── wms_tfis_nrw.map        # Generiertes Mapfile
├── symbols.map             # Symboldefinitionen
└── icons/                  # Extrahierte PNG-Icons (Pixmaps)

🔁 Konvertierung: Mapbox ➔ MapServer

1. 🎨 Symbol- und Icon-Generierung

Mapbox-Sprite-Dateien werden analysiert. Für jedes Symbol wird ein PNG ausgeschnitten und gespeichert:

extract_icons_from_sprite(sprite_json_path, sprite_image_path, output_dir)
  • Bounding Box aus sprite@2x.json wird verwendet
  • Unicode-Namen werden Dateisystem-kompatibel (z. B. ä → ae, ß → ss)
  • Ergebnis: PNG-Dateien in /etc/mapserver/icons/

2. 🧠 Symboldefinitionen (symbols.map)

Für jedes Icon wird ein Symbolblock erzeugt:

SYMBOL
  NAME "beispiel_symbol"
  TYPE PIXMAP
  IMAGE "icons/beispiel_symbol.png"
END

Alle Blöcke landen gesammelt in:

/etc/mapserver/symbols.map

3. 🗘️ Mapfile-Struktur (wms_tfis_nrw.map)

Aufbau des Mapfiles:

  • MAP_HEADER: WMS-Metadaten, Projektion (EPSG:25832)
  • Layerblöcke:
    • Linienlayer: wanderwege (nach kat typisiert)
    • Linienlayer: schifffahrt (nach fkt typisiert)
    • Punktlayer: freizeiteinrichtungen (nach snr typisiert)
  • Fußbereich: END

Beispiel für einen Punktlayer mit Pixmap-Symbol:

LAYER
  NAME "freizeiteinrichtungen"
  TYPE POINT
  ...
  CLASSITEM "snr"
  CLASS
    EXPRESSION "123"
    STYLE
      SIZE 100
      SYMBOL "123"
    END
  END
END

🛠️ Automatische Generierung

Das Hauptskript übernimmt alle Schritte automatisiert:

if __name__ == "__main__":
    generate_files()

Aufruf:

python3 generate_mapfile.py

Dabei geschieht:

  • Extraktion der Icons → icons/*.png
  • Generierung der symbols.map
  • Analyse und Klassifizierung der GeoJSON-Layer
  • Erzeugung der wms_tfis_nrw.map

📄 .gitignore-Hinweis

Wenn du generierte Icons vom Git-Tracking ausschließen willst:

# Nur PNGs im icons-Verzeichnis ignorieren
mapserver/mapfiles/icons/*.png

✅ Ergebnis

Nach Ausführung findest du:

  • 🗘️ wms_tfis_nrw.map – vollständiges WMS-Mapfile
  • 🎨 symbols.map – Symboldefinitionen für MapServer
  • 🖼️ PNG-Icons im icons/-Verzeichnis

📌 Anwendungszweck

Dieser WMS-Dienst stellt Tourismus- und Freizeitinformationen (TFIS) für NRW dar – ideal für:

  • Integration in OpenLayers, QGIS oder ArcGIS
  • Darstellung von POIs, Wanderwegen, Schifffahrtsrouten
  • WMS-Dienste im Kontext von INSPIRE / OGC-Standards

📌 Datenquellen und Lizenzen

Dieses Projekt verwendet Daten aus folgenden Quellen:

Die Daten unterliegen nicht der MIT-Lizenz dieses Repositories. Für deren Nutzung gelten die jeweiligen Bedingungen.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors