Software-Tipps

FeatureInfo-Highlighting im Mapbender mit QGIS Server

QGIS Server ist neben Mapserver und Geoserver eine der beliebtesten Anwendungen, um Geodaten im Internet zu veröffentlichen. Gerade im Zusammenspiel mit dem Open Source WebGIS Mapbender bietet sich die Verwendung von QGIS Server an, da mit dem QGIS Plugin QGIS2Mapbender die Veröffentlichung sehr einfach ist. Neben dem Karten-Rendering an sich ist auch die FeatureInfo, die Objektabfrage zu einem bestimmten Feature auf der Karte, eine häufig genutzte Funktionalität. Dieser Blogartikel erklärt detailliert, welche Schritte nötig sind, um im Mapbender einen per QGIS Server gehosteten WMS-Dienst inklusive benutzerdefinierter FeatureInfo und Highlighting einzubinden.

Konfiguration des QGIS-Projektes

Als ersten Schritt muss das QGIS-Projekt vorbereitet werden. Damit FeatureInfo-Highlighting im Mapbender funktioniert, müssen im benutzerdefinierten HTML, das per FeatureInfo ausgeliefert wird, die Koordinaten der Geometrie im Well-Known-Text (WKT)-Format mitgeliefert werden. In QGIS braucht es dafür ein virtuelles Feld.

Zunächst müssen die Ebenen-Eigenschaften durch Rechtsklick auf die entsprechende Ebene aufgerufen werden.

Im Bereich „Felder“ kann durch das Icon ganz rechts (das einen Abakus darstellt) ein neues virtuelles Feld hinzugefügt werden.

Der Feldname kann frei gewählt werden. Wir empfehlen „wkt_geom“. Der Feldtyp muss auf „Text“ gestellt sein.

Im Ausdruck muss folgendes eingegeben werden:

geom_to_wkt(@geometry)

Nach der Konfiguration des virtuellen Felds kann im Bereich „Anzeigen“ die FeatureInfo-Darstellung als HTML konfiguriert werden. Dort muss die Checkbox „Kartentipps einschalten“ aktiviert sein. Die Darstellung kann dann beliebig an die persönlichen Bedürfnisse angepasst werden. Formatierung über <style>-Tags und Interaktivität über Javascript <script> Tags sind möglich.

Wichtig für das FeatureInfo-Highlighting im Mapbender ist, dass ein <div>-Element mit der Klasse geometryElement und den Koordinaten als WKT in data-attributen existiert (Mapbender-Dokumentation). Dafür wird das eben angelegte virtuelle Feld verwendet. In QGIS Server sieht das folgendermaßen aus:

<div class="geometryElement" id="[% id %]" data-geometry="[% wkt_geom %]" data-srid="[% @layer_crs %]">

Darüber hinaus kann das HTML frei konfiguriert werden. Andere Felder/Spalten der Geometrie können über [% Spaltenname %] eingesetzt werden. Enthält der Spaltenname ein Leerzeichen, muss er in Anführungszeichen gesetzt werden. Auch die Verwendung von QGIS-Funktionen wie beispielsweise format_date sind möglich (Liste an QGIS-Funktionen).

<tr>
    <td><b>Letzte Aktualisierung</b></td>
    <td>[% format_date(bearbeitungsdatum,'dd.MM.yyyy HH:mm','de') %]</td>
</tr>

Das sind alle Einstellungen, die in QGIS getroffen werden müssen. Die Projektdatei kann nun auf den Server übertragen werden, am einfachsten geht das über das Plugin QGIS2Mapbender.

Konfiguration der Mapbender-Anwendung

Das gerade veröffentlichte Projekt muss nun zunächst als Datenquelle im Mapbender eingebunden werden. Dies funktioniert im Mapbender über den Hauptpunkt „Datenquellen“ und den großen Button „Datenquellen hinzufügen“. Wählen Sie „OGC WMS“ als Datenquelle und fügen Sie den Link zum Dienst im daraufhin erscheinenden Fenster ein. Wird das QGIS2Mapbender-Plugin genutzt, passiert dies automatisch. In diesem Fall kann direkt zur Anwendung gewechselt werden.

Gehen Sie danach ins Bearbeitungsfenster der Anwendung, zu der der Dienst hinzugefügt werden soll und fügen Sie dort über das kleine + die gerade hinzugefügte Datenquelle zu einem Layerset hinzu.

Es öffnet sich ein Fenster, in dem die Datenquelleninstanz konfiguriert werden kann.

Zunächst muss das Infoformat auf „text/html“ gestellt werden. Ansonsten fragt der Mapbender beim QGIS Server die Information im Textformat ab, dabei ist kein FeatureInfo-Highlighting möglich.

Außerdem muss noch ein sogenannter „vendor specific parameter“ hinzugefügt werden, um QGIS mitzuteilen, dass ausschließlich das benutzerdefinierte HTML ausgeliefert werden soll. Das geht in der rechten Spalte in einem eigenen Kasten. Es muss folgendes eingetragen werden:

Parameter-Typ Parameter-Name Wert
Simple WITH_MAPTIP HTML_FI_ONLY_MAPTIP

Zusätzlich kann über den Parameter FI_POINT_TOLERANCE eingestellt werden, bis zu welcher Toleranz ein Punkt erkannt wird. Der Wert wird in Pixeln angegeben. Hier bietet es sich an, mit dem Wert etwas zu experimentieren.

Nun muss im Informations-Element noch aktiviert werden, dass FeatureInfo-Highlighting aktiv ist. Das geht im Bereich „Layouts“ innerhalb der Anwendung.

 In den Spalten „Standard“ und „Hover“ kann konfiguriert werden, in welchem Format das Highlighting dargestellt werden soll. „Hover“ beschreibt dabei das Styling, wenn die Geometrie mit der Maus überfahren wird.

Nun kann die Anwendung im Frontend aufgerufen werden. Ist die Feature-Information aktiv, werden die ausgewählten Features aus der Karte jetzt hervorgehoben.

Über den Autor

Steckbrief

Während ihres Studiums der Geophysik und Geoinformatik an der TU Bergakademie Freiberg lernte Annika Fröde den Umgang mit vielfältigen Geodaten kennen. Seit 2022 ist sie bei der WhereGroup am Standort Berlin als GIS-Expertin angestellt, wo sie an umfangreichen GIS-Projekten für verschiedene Kunden arbeitet.

Annika Fröde WhereGroup