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 ist auch die FeatureInfo-Abfrage, die Objektabfrage zu einem bestimmten Feature auf der Karte, eine häufig genutzte Funktionalität. Im Blogartikel „QGIS Server: Ansprechende FeatureInfo-Ausgaben dank HTML-Templates“ hat Annika Fröde bereits gezeigt, wie in QGIS-Server HTML-Templates für die individuelle FeatureInfo-Abfrage erstellt und im Mapbender konfiguriert werden können. Darüber hinaus unterstützt der Mapbender auch das Hervorheben von Treffern auf der Karte. Welche Schritte hierfür notwendig sind, beschreibt dieser Artikel.
Konfiguration des QGIS-Projektes
Zunächst 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, um die Geometrieinformationen an den Mapbender weiterzugeben.
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 sowie das Koordinatensystem 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 %]" data-label="[% ADMIN %]">
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>
Im Beispiel aus dem Screenshot wird die Konfiguration aus dem Blogartikel von Annika Fröde übernommen und um die für das Highlighting nötigen Attribute erweitert.
Nun wurden alle notwendigen Einstellungen in QGIS vorgenommen und die Projektdatei kann auf den Server übertragen werden. Das geht am einfachsten über das Plugin QGIS2Mapbender.
Konfiguration der Mapbender-Anwendung
Das gerade veröffentlichte Projekt muss nun zunächst als Datenquelle im Mapbender eingebunden werden.
Navigieren Sie zunächst zum Hauptpunkt „Datenquellen“ und klicken den großen Button „Datenquelle 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 welcher 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 Mapbender beim QGIS Server die Information im Textformat ab, in diesem Format ist kein Highlighting möglich.
Außerdem muss noch ein "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 ein 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.
Danach kann die Anwendung im Frontend aufgerufen werden. Ist die Feature-Information aktiv, werden die ausgewählten Features aus der Karte jetzt hervorgehoben.
Zusammenfassung
Um FeatureInfo-Highlighting im Mapbender zu ermöglichen, sind einige Vorbereitungen notwendig. Ist die Konfiguration aber abgeschlossen, sind über die Informationsabfrage interaktive Visualisierungen der abgefragten Geometrien möglich.
Zum selbst Ausprobieren und Abändern hier noch das verwendete vollständige HTML:
<style>
.feature-info {
font-family: Arial, sans-serif;
font-size: 0.9em;
padding: 10px;
background-color: #f9f9f9;
border-left: 4px solid #b11e40;
}
.feature-info h3 {
margin: 0 0 10px 0;
color: #b11e40;
}
.feature-info p {
margin: 5px 0;
}
</style>
<div class="feature-info geometryElement" id="[% id %]"
data-geometry="[% wkt_geom %]" data-srid="[% @layer_crs %]">
<h3>[% "name_de" %]</h3>
<p><b>Einwohner:</b> [% "POP_EST" %]</p>
<p><b>Fläche: </b>[% round($area/1000000) %] km²</p>
</div>
Über den Autor
Steckbrief
Thorsten Hack ist seit 2022 am Freiburger Standort der WhereGroup GmbH als Softwareentwickler beschäftigt. Er ist hauptverantwortlicher Entwickler für das Open-Source-Projekt Mapbender. Außerdem arbeitet er in diversen Kundenprojekten unter anderem mit PHP, JavaScript und Python.