Outdated version of the documentation. Find the latest one here.

.

QGIS als OGC Datenserver

QGIS Server ist eine open Source WMS 1.3, WFS 1.0.0 und WCS 1.1.1 Umsetzung die zusätzlich erweiterte kartografische Funktionen für thematische Karten zur Verfügung stellt. Der QGIS Server ist eine FastCGI/CGI (Common Gateway Interface)-Anwendung, ist in C++ geschrieben und arbeitet mit einem Webserver zusammen (z.B. Apache oder Lighttpd). Es wurde mit finanziellen Mitteln des EU Projekts Orchestra, Sany und der Stadt Uster aus der Schweiz entwickelt.

QGIS Server verwendet QGIS im Hintergrund für die GIS-Logik und für das Darstellen der Karte. Des weiteren wird die Qt-Bibliothek für Grafiken und für die plattformunabhängige C++-Programmierung verwendet. Im Gegensatz zu anderer WMS-Software verwendet der QGIS Server kartographische Regeln als Konfigurationssprache, sowohl für die Server Konfiguration als auch für die benutzerdefinierten kartographischen Regeln.

Da QGIS Desktop und QGIS Server die gleichen Visualisierungsbibliotheken verwenden sehen die Karten, die im Internet veröffentlicht werden genauso wie im Desktop GIS aus.

In einer der folgenden Anleitungen werden wir eine Beispielkonfiguration zum Aufsetzen eines QGIS Servers anbieten. Vorerst empfehlen wir eine der folgenden URLs zu lesen um mehr Informationen zu bekommen:

Beispielinstallation unter Debian Squeeze

An dieser Stelle zeigen wir Ihnen eine kurze und einfache Beispielinstallation für Debian Squeeze. Auch viele andere Betriebssysteme bieten Pakete für QGIS Server. Wenn Sie alles aus dem Quellcode bauen müssen, sehen in den oben angegebenen URLs nach.

Abgesehen von QGIS Desktop und QGIS Server benötigen Sie einen Webserver, in unserem Fall apache2. Sie können alle Pakete mit ‘aptitude’ oder ‘apt-get install’ zusammen installieren. Alle weiteren notwendigen Pakete werden dann mitinstalliert. Nach der Installation sollten Sie testen, ob der Webserver und der QGIS Server wie erwartet funktionieren. Vergewissern Sie sich, dass der Apache Webserver läuft. Ansonsten starten Sie ihn mit ‘/etc/init.d/apache2 start’. Öffen Sie nun einen Web-Browser und geben Sie sie URL http://localhost ein. Wenn alles in Ordnung ist, sollten Sie die Meldung ‘It works!’ sehen.

Jetzt testen wir die QGIS Server Installation. Die Datei qgis_mapserv.fcgi finden Sie unter /usr/lib/cgi-bin/qgis_mapserv.fcgi und stellt einen Test-WMS bereit, der die Grenzen von Alaska zeigt. Laden Sie den WMS mit der URL http://localhost/cgi-bin/qgis_mapserv.fcgi wie in Abschnitt WMS/WMTS Layer laden beschrieben.

Figure Server 1:

../../../_images/standard_wms_usa.png

Standard WMS mit USA boundaries im QGIS Server (KDE) nix

Erstellen eines WMS/WFS/WCS aus einem QGIS Projekt

Um einen neuen QGIS WMS, WFS oder WCS Server zur Verfügung zu stellen, müssen wir eine QGIS Projektdatei mit einigen Daten erstellen. Hier benutzen wir die ‘Alaska’ Shapedatei aus dem QGIS Beispieldatensatz. Definieren Sie die Farben und den Stil der Layer in QGIS und auch das Projekt KBS, falls die nicht schon definiert ist.

Figure Server 2:

../../../_images/ows_server_definition.png

Definitionen für ein QGIS WMS/WFS/WCS Server Projekt (KDE)

Gehen Sie dann zu dem OWS Server Menü des Einstellung ‣ Projekteigenschaften Dialog und geben Sie einige Informationen über den OWS in den Feldern unter Diensteigenschaften an. Diese werden dann in der GetCapabilities Antwort des WMS, WFS oder WCS auftauchen. Wenn Sie checkbox Diensteigenschaften nicht aktivieren wird der QGIS Server die Informationen aus der wms_metadata.xml Datei, die im cgi-bin Ordner gespeichert ist, verwenden.

WMS-Capabilities

Im WMS-Capabilities Bereich können Sie die von der WMS GetCapabilities Response angezeigten Ausmaße definieren indem Sie die minimalen und maximalen X und Y Werte in die Felder unter Angezeigte Ausmasse eingeben. Das Klicken von Aktuelle Anzeigegrenzen übernehmen stellt diese Werte auf die Ausmaße die gerade im QGIS Kartenfenster dargestellt werden ein. Wenn Sie checkbox KBS-Beschränkungen aktivieren können Sie einschränken in welchem Koordinatenbezugssystem (KBS) QGIS Server Karten zum Darstellen anbieten wird. Verwenden Sie den mActionSignPlus Knopf um diese KBS aus der Koordinatenbezugssystem-Auswahl auszuwählen oder klicken Sie Benutzte um das im QGIS Projekt benutzte KBS der Liste hinzuzufügen.

Wenn Sie Druckzusammenstellungen in Ihrem Projekt definiert haben werden diese in der GetCapabilities Response aufgelistet und sie können vom GetPrint Request verwendet werden um einen Druck zu erstellen, wobei eines der Druckzusammenstellungslayouts als Vorlage verwendet wird. Dies ist eine QGIS-spezifische Erweiterung zur WMS 1.3.0 Spezifikation. Wenn Sie die Veröffentlichung jedweder Druckzusammenstellung durch den WMS ausschließen wollen aktivieren Sie checkbox Druckzusammenstellungen ausschließen und klicken Sie unten den mActionSignPlus Knopf. Wählen Sie dann eine Druckzusammenstellung aus dem Druckzusammenstellung wählen Dialog um diese der Ausnahmeliste für die Zusammenstellungen hinzuzufügen.

Wenn Sie einen Layer oder eine Layergruppe davon ausschließen wollen vom WMS veröffentlicht zu werden aktivieren Sie checkbox Layer ausschließen und klicken Sie auf den |mActionSignPlus| Knopf darunter. Dies öffnet den :guilabel:`Eingeschränkte Layer und Gruppen wählen Dialog, der es Ihnen ermöglicht die Layer und Gruppen die nicht veröffentlicht werden sollen auszusuchen. Verwenden Sie den Umschalt oder Strg Knopf wenn Sie mehrere Einträge auf einmal auswählen wollen.

Sie können requestete GetFeatureInfo als Klartext, XML und GML empfangen. Standard ist XML, das Text- oder GML-Format hängt vom verwendeten Ausgabeformat für den GetFeatureInfo Request ab.

Wenn Sie es wünschen können Sie das checkbox Geometrie der Objektantwort beifügen Kontrollkästchen aktivieren. Dies wird die Geometrien der Objekte der GetFeatureInfo Response im Textformat hinzufügen. Wenn Sie wollen dass QGIS Server spezifische Request URLs in der WMS GetCapabilities Response angbit, geben sie die enstprechende URL im Angezeigte URL Feld an. Darüberhinaus können Sie die Maximalgröße der Karten, die vom GetMap Request wiedergegeben wird, durch das Eingeben der Maximalen Breite und Höhe in die entsprechenden Felder unter Maxima für GetMap-Abfragen einschränken.

Wenn einer Ihrer Layer Kartentippanzeige verwendet (z.B. um Text anhand von Ausdrücken zu zeigen) wird dies innerhalb der GetFeatureInfo Ausgabe aufgelistet. Wenn der Layer eine Wertabbildung für eines seiner Attribute verwendet wird diese Information ebenfalls in der GetFeatureInfo Ausgabe gezeigt.

WFS-Capabilities

Im WFS-Capabilities Bereich können Sie die Layer auswählen die Sie als WFS veröffentlichen wollen und festlegen ob Sie die Update, Insert und Delete Operationen erlauben. Wenn Sie eine URL in das Angezeigte URL Feld des WFS-Capabilities Bereichs eingeben, wird QGIS Server diese bestimmte URL in der WFS GetCapabilities Response angeben.

WCS-Capabilities

Im WCS-Capabilities Bereich können Sie die Layer auswählen die Sie als WCS veröffentlichen wollen. Wenn Sie eine URL in das Angezeigte URL Feld des WFS-Capabilities Bereichs eingeben, wird QGIS Server diese bestimmte URL in der WCS GetCapabilities Response angeben.

Speichern Sie die Sitzung jetzt in eine Projektdatei alaska.qgs. Um das Projekt als WMS/WFS bereitzustellen erstellen wir einen neuen Ordner /usr/lib/cgi-bin/project mit Verwaltungsrechten und fügen eine Projektdatei alaska.qgs und eine Kopie der qgis_mapserv.fcgi Datei hinzu - das ist alles.

Jetzt testen wir unser WMS, WFS und WCS Projekt. Fügen Sie QGIS den WMS, WFS und WCS wie in WMS/WMTS Layer laden, WFS und WFS-T Klient und WCS Client beschrieben zu und laden Sie die Daten. Die URL ist:

http://localhost/cgi-bin/project/qgis_mapserv.fcgi

Den OWS feinabstimmen

Bei Vektorlayern ermöglicht Ihnen das Felder Menü des Layer ‣ Eigenschaften Dialogs für jedes Attribut zu definieren ob es veröffentlicht wird oder nicht. Standardmäßig werden alle Attribute von Ihrem WMS und WFS veröffentlicht. Wenn Sie nicht wollen dass ein Attribut veröffentlicht wird deaktivieren Sie das entsprechende Kontrollkästchen in der WMS oder WFS Spalte.

Sie können Wasserzeichen über die Karten legen, die von Ihrem WMS produziert werden, indem Sie Beschriftungstexte oder SVG-Anmerkungen hinzufügen. Siehe Beschriftungstools unter Allgemeine Werkzeuge für Anleitungen zum Erstellen von Anmerkungen. Für Anmerkungen die als Wasserzeichen in der WMS Ausgabe dargestellt werden sollen muss das Feste Kartenposition Kontrollkästchen im Anmerkungstext Dialog deaktiviert sein. Dies können Sie erreichen indem Sie auf die Anmerkung doppelklicken während eines der Beschriftungstools aktiv ist. Bei SVG-Anmerkungen werden Sie entweder das Projekt einstellen müssen um absolute Pfade zu speichern (im Allgemein Menü des Projekt ‣ Projekteigenschaften Dialogs) oder den Pfad zum SVG-Bild manuell so verändern dass es einen gültigen relativen Pfad darstellt.

Zusätzliche Paramter die vom WMS GetMap Request unterstützt werden.

Im WMS GetMap Request akzeptiert der QGIS Server ein paar zusätzliche Paramter zusätzlich zu den Standardparametern gemäß der OGC WMS 1.3.0 Spezifikation:

  • MAP Parameter: Ähnlich wie MapServer kann der MAP Parameter zum Angeben des Pfads zur QGIS Projektdatei verwendet werden. Sie können einen absoluten Pfad oder einen Pfad relativ zum Speicherort der ausführbaren Serverdatei (qgis_mapserv.fcgi) angeben. Wenn nichts angegeben ist sucht QGIS Server nach .qgs Dateien in dem Verzeichnis in dem die ausführbare Serverdatei gespeichert ist.

    Beispiel:

    http://localhost/cgi-bin/qgis_mapserv.fcgi?\
      REQUEST=GetMap&MAP=/home/qgis/mymap.qgs&...
  • DPI Parameter: Der DPI Parameter kann verwendet werden um die angefragte Ausgabeauflösung anzugeben.

    Beispiel:

    http://localhost/cgi-bin/qgis_mapserv.fcgi?REQUEST=GetMap&DPI=300&...
  • OPACITIES Parameter: Die Deckkraft kann auf Layer- oder Gruppenebene eingestellt werden. Zugelassene Werte bewegen sich von 0 (ganz transparent) bis 255 (volle Abdeckung).

    Beispiel:

    http://localhost/cgi-bin/qgis_mapserv.fcgi?\
      REQUEST=GetMap&LAYERS=mylayer1,mylayer2&OPACITIES=125,200&...

QGIS Server Logging

Um Requests zu loggen, die zum Server gesendet werden, stellen Sie die folgenden Umgebungsvariablen ein:

  • QGIS_SERVER_LOG_FILE: Legen sie Pfad und Dateiname fest. Vergewissern Sie sich dass der Server die richtigen Rechte zum Schreiben in eine Datei hat. Die Datei sollte automatisch erstellt werden, senden Sie einfach ein paar Requests an den Server. Wenn sie nicht auftaucht überprüfen Sie die Rechte.

  • QGIS_SERVER_LOG_LEVEL: Bestimmen Sie den gewünschten Loglevel. Mögliche Werte sind:

    • 0 INFO (alle Requests loggen),

    • 1 WARNING,
    • 2 CRITICAL (loggt nur kritische Fehler, geeignet für Produktionszwecke).

    Beispiel:

    SetEnv QGIS_SERVER_LOG_FILE /var/tmp/qgislog.txt
    SetEnv QGIS_SERVER_LOG_LEVEL 0

Beachten Sie

  • Wenn Sie das Fcgid Modul benutzen verwenden Sie FcgidInitialEnv anstelle von SetEnv!

  • Das Server Logging ist auch aktiviert wenn die ausführbaren Dateien im Release Modus kompiliert sind.

Umgebungsvariablen

  • QGIS_OPTIONS_PATH: Die Variable legt den Pfad zun Verzeichnis mit Einstellungen fest. Es funktioniert auf die gleiche Weise wie die QGIS Application -optionspath Option. Sie schaut nach einer Einstellungsdatei in <QGIS_OPTIONS_PATH>/QGIS/QGIS2.ini . Um z.B. QGIS Server auf einem Apache einzurichten um die /path/to/config/QGIS/QGIS2.ini Einstellungsdatei zu verwenden, fügen Sie Apache config folgendes hinzu:

    SetEnv QGIS_OPTIONS_PATH "/path/to/config/"