Geometer Schweiz

Open Data mit QGIS im Web darstellen

In der Schweiz gibt es über 200 Geometerbüros, welche für die Amtliche Vermessung in fast 2500 Gemeinden zuständig sind. Dabei ist es kein leichtes Unterfangen, den Überblick zu behalten, an welches Büro man sich in der jeweiligen Gemeinde wenden muss bei vermessungstechnischen Anliegen. Um diesen Problem entgegenzuwirken haben wir daher eine Karte erstellte, in welcher man durch das Anwählen der gewünschten Gemeinde sofort den Standort und die nötigen Angaben zum zuständigen Geometerbüro erhält.

Funktionsweise:

Durch das Anklicken einer Gemeinde wird ein Popup mit dem Gemeindenamen und dem zuständigen Geometerbüro geöffnet. Gleichzeitig erscheint ein Marker, welcher den Standort des Geometerbüros markiert. Im Popup erscheinen alle nötigen Angaben über das Büro wie beispielsweise Adresse, Telefonnummer oder Mailadresse.

Als weitere Hilfestellung ist eine Suchfunktion in der Karte hinzugefügt, in welcher nach Gemeinden gesucht werden kann.

Vorgehensweise zur Erstellung der Karte:

Sammeln der Daten:

Die Daten mit den Zuständigkeitsbereichen pro Geometer werden als Layer von geo.admin.ch zur Verfügung gestellt. Mittels Programmierschnittstelle (API) von api3.geo.admin.ch konnten wir die Layer herunterladen. Dies benötigte ein Python-Script, welches auf die entsprechende URL zugreift und die Daten als GeoJSON-File abspeichert. Der vom Bund bereitgestellte Layer war sehr inkonsistent. Daher mussten wir den Layer vor Gebrauch stark bereinigen und vereinheitlichen. Dabei wurde auch die Geometrie mit Hilfe des Datensatzes swissBoundaries3D des Bundes neu definiert.

Geocodierung:

Damit wir die Standorte der Geometerbüros auf der Karte lokalisieren können, mussten wir die Adressen geocodieren. Dazu erstellten wir aus den Daten von geo.admin.ch ein CSV-File, welches spaltenweise die Adressen der Büros enthält. Dieses File wurde anschliessend in ein Python-Script eingelesen. Zur Geocodierung bedienten wir uns der Programmierschnittstelle von Google. Das Python-Script enthält eine Schlaufe, die im CSV-File pro Spalte auf den URL von Google zugreift. Die URL enthält die WGS-Koordinaten der jeweiligen Adresse. Diese wurden anschliessend dem eingelesenen CSV-File als zusätzliche Spalte hinzugefügt und exportiert.

QGIS-Layer:

Als nächstes importierten wir das CSV-File mit den Adressen als Punklayer und die Zuständigkeitsbereiche (GeoJSON) als Flächenlayer. Die Zuständigkeitsbereiche wurden unterschiedliche eingefärbt und transparent gemacht, damit die darunterliegende Karte von OpenStreetMap ersichtlich ist. Zudem mussten die Attribute so bearbeitet werden, dass nur die gewünschten anschliessend im Webbrowser im Popup erscheinen.

Bearbeitungen im HTML:

Nach den Bearbeitungen der Layer im QGIS exportierten wir die Karte mittels dem Plugin «qgis2web» in den Webbrowser. Beim Export konnte zwischen Leaflet und Openlayer3 als Grundlage gewählt werden. Da der Export über Openlayer3 fehlerbehaftet war, entschieden wir und für den komplexeren Strukturexport über Leaflet. Dargestellt waren dabei nur die Standorte der Geometerbüros und deren jeweilige Zuständigkeitsbereiche. Nun erfolgten die Feinbearbeitung des Layouts und der Funktionen im HTML-File.

Als erstes wurde einer Zusatzfunktion erstellt, bei welcher bei einem Klick ausserhalb der Schweiz die Meldung auftaucht, dass keine Nachführungsgemeinde gewählt wurde. In einem weiteren Schritt wurde die Darstellung des Pop-up wie z.B. die Grösse der Fensters oder die Schriftart angepasst. Doch die grösste Herausforderung bestand darin, einen «clickevent» zu erstellen, durch welchen auf der Karte sofort der Standort des Büros angezeigt wird.

Der click event besteht aus 3 Teilen:

  1. Vergleich des Attributs «Geometer» beim angeklickten Layer   (Nachführungsgeometer) und dem Punklayer mit einer «if-Schlaufe». Wenn beide Attribute identisch sind, wird vom Punktlayer die Koordinate des Standorts des Büros zurückgegeben.
  2. Erstellung einer Markergruppe. In dieser Gruppe wird ein Marker erstellt, welcher den Standort aus den Koordinaten vom Punktlayer aufweist. Dieser Marker wird nun dort abgesetzt.
  3. Beim 1. Click in die Karte wird die Markergruppe erstellt und bei jedem weiteren Click wird die Markergruppe vor Neugenerierung wieder geleert.

Hier gehts zur Karte

(lange Ladezeit, Performenc nicht optimiert)

Autoren: Markus Schär, Claude Haldi
GeoSeminar: OpenData
Klasse: G2014 FHNW
Datum: 03.11.2016