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 hat eine Python Plugin-Unterstützung für eine schnelle und effiziente Entwicklung und den Einsatz neuer Funktionen. 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. Weiterhin 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 in SLD/SE 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 den folgenden Abschnitten stellen wir eine Beispielkonfiguration eines QGIS Server auf Debian/Ubuntu Linux vor. Für Installationsanweisungen, unter Mitwirkung von anderen Benutzern, auf anderen Plattformen oder Distributionen, empfehlen wir eine der folgenden URLs zu lesen:

QGIS Server Installation unter Debian/Ubuntu

An dieser Stelle wollen wir eine kurze und einfache Installationsanleitung für minimale Arbeitskonfiguration mit Apache2 unter Debian Squeeze (oder mit vernachlässigbaren Variationen auf Ubuntu 14.04) geben. Viele andere OS bieten auch fertige Pakete für den QGIS Server. Wenn Sie alles aus dem Quellcode erstellen wollen, lesen Sie bitte die URLs oben.

Zunächst fügen Sie die folgenden Debian GIS Repository hinzu:

$ cat /etc/apt/sources.list.d/debian-gis.list
deb http://qgis.org/debian trusty main
deb-src http://qgis.org/debian trusty main

$ # Add keys
$ sudo gpg --keyserver keyserver.ubuntu.com --recv-key 3FF5FFCAD71472C4
$ sudo gpg --export --armor 3FF5FFCAD71472C4 | sudo apt-key add -

$ # Update package list
$ sudo apt-get update && sudo apt-get upgrade

Installieren Sie jetzt den QGIS Server:

$ sudo apt-get install qgis-server python-qgis

Installation eines HelloWorld Beispielplugins zum testen des Servers. Sie erstellen ein Verzeichnis um Serverplugins aufzunehmen. Dies wird in der Konfiguration des virtuellen Host angegeben werden und auf den Server über eine Umgebungsvariable weitergegeben:

$ sudo mkdir -p /opt/qgis-server/plugins
$ cd /opt/qgis-server/plugins
$ sudo wget https://github.com/elpaso/qgis-helloserver/archive/master.zip
$ # In case unzip was not installed before:
$ sudo apt-get install unzip
$ sudo unzip master.zip
$ sudo mv qgis-helloserver-master HelloServer

Installieren Sie den Apache-Server in einem separaten virtuellen Host auf den Port 80. Aktivieren Sie das Rewrite-Modul um HTTP BASIC auth headers durchzuführen:

$ sudo a2enmod rewrite
$ cat /etc/apache2/conf-available/qgis-server-port.conf
Listen 80
$ sudo a2enconf qgis-server-port

Dies ist die virtuelle Host Konfiguration, gespeichert in /etc/apache2/sites-available/001-qgis-server.conf :

<VirtualHost *:80>
  ServerAdmin [email protected]
  DocumentRoot /var/www/html

  ErrorLog ${APACHE_LOG_DIR}/qgis-server-error.log
  CustomLog ${APACHE_LOG_DIR}/qgis-server-access.log combined

  # Longer timeout for WPS... default = 40
  FcgidIOTimeout 120
  FcgidInitialEnv LC_ALL "en_US.UTF-8"
  FcgidInitialEnv PYTHONIOENCODING UTF-8
  FcgidInitialEnv LANG "en_US.UTF-8"
  FcgidInitialEnv QGIS_DEBUG 1
  FcgidInitialEnv QGIS_SERVER_LOG_FILE /tmp/qgis-000.log
  FcgidInitialEnv QGIS_SERVER_LOG_LEVEL 0
  FcgidInitialEnv QGIS_PLUGINPATH "/opt/qgis-server/plugins"

  # Needed for QGIS HelloServer plugin HTTP BASIC auth
  <IfModule mod_fcgid.c>
      RewriteEngine on
      RewriteCond %{HTTP:Authorization} .
      RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
  </IfModule>

  ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
  <Directory "/usr/lib/cgi-bin">
      AllowOverride All
      Options +ExecCGI -MultiViews +FollowSymLinks
      # for apache2 > 2.4
      Require all granted
      #Allow from all
  </Directory>
 </VirtualHost>

Aktivieren Sie nun den virtuellen Host und starten Sie Apache neu:

$ sudo a2ensite 001-qgis-server
$ sudo service apache2 restart

Testet den Server mit dem HelloWorld Plugin:

$ wget -q -O - "http://localhost/cgi-bin/qgis_mapserv.fcgi?SERVICE=HELLO"
HelloServer!

Sie können einen Blick auf den Standard GetCapabilities des QGIS Server werfen unter: http://localhost/cgi-bin/qgis_mapserv.fcgi?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities

Tipp

Wenn Sie mit einem Objekt arbeiten, welches viele Knoten modifiziert hat und ein neues Objekt hinzufügen, wird es fehlschlagen. In diesem Fall ist es möglich den folgenden Kode in 001-qgis-server.conf file: :: einzugeben

<IfModule mod_fcgid.c>
FcgidMaxRequestLen 26214400
FcgidConnectTimeout 60
</IfModule>

Erstellen eines WMS/WFS/WCS Server 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

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.

Warnung

Wenn Sie das QGIS Projekt mit Styling basierend auf SVG-Dateien mit relativen Pfaden verwenden, dann sollten Sie wissen, dass der Server den Pfad in Bezug auf seine qgis_mapserv.fcgi-Datei (nicht auf die`qgs` Datei) hält. Also, wenn Sie ein Projekt auf dem Server bereitstellen und die SVG-Dateien werden nicht entsprechend platziert, respektieren das Ausgangsbild das Desktop-Styling nicht. Um sicherzustellen, dass dies nicht der Fall, können Sie einfach die SVG Dateien relativ zu der qgis_mapserv.fcgi Datei kopieren. Sie können auch einen symbolischen Link in dem Verzeichnis erstellen, in dem sich die fcgi Datei befindet, dass auf das Verzeichnis der SVG-Dateien verweist (unter Linux/Unix).

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 signPlus 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 GetProjectSettings 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 signPlus 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 |signPlus| 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 GetProjectSettings 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.

QGIS unterstützt die folgenden Anforderungen für WMS-Dienste:

  • GetCapabilities
  • GetMap
  • GetFeatureInfo
  • GetLegendGraphic (SLD Profil)

  • DescribeLayer (SLD Profil)

  • GetStyles (benutzerdefiniertes QGIS Profil)

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.

QGIS unterstützt die folgenden Anforderungen für WFS-Dienste:

  • GetCapabilities
  • DescribeFeatureType
  • GetFeature
  • Transaktionen

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

QGIS unterstützt die folgenden Anforderungen für WCS-Dienste:

  • GetCapabilities
  • DescribeCoverage
  • GetCoverage

GetCapabilities Caching

Um die Reaktionszeit zu verbessern, antwortet der QGIS Server auf die GetCapabilities Anfragen. Wenn eine solche Anfrage kommt, wird das Caching QGIS Server antworten und den Cache gültig markieren. Zur gleichen Zeit, beobachtet er, ob die Projektdatei sich ändert. Wenn das Projekt verändert wird, dann wird der Cache als ungültig markiert und QGIS Server wartet auf eine neue Anforderung, um den Cache neu zu erstellen.

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.

Server Konfigurationen und unterstütze Parameter

QGIS Server unterstützt einige Anbieter Parameter und Anforderungen, die die Möglichkeiten der Anpassung ihres Verhaltens erheblich verbessern. In den folgenden Abschnitten wird aufgeführt, welche Lieferanten Parameter und Umgebungsvariablen vom Server unterstützt werden.

Zusätzliche Paramter die von allen Requests unterstützt werden.

  • FILE_NAME Parameter: Wenn eingestellt, wird die Antwort des Servers mit dem angegebenen Dateinamen an den Client als Dateianhang gesendet werden.

  • 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&...

Bemerkung

Sie können eine QGIS_PROJECT_FILE als Umgebungsvariable definieren um dem Server zu sagen, wo die ausführbare QGIS Projektdatei zu finden ist. Diese Variable ist der Ort, an dem QGIS die Projektdatei sucht. Wenn sie nicht definiert ist, wird sie die MAP-Parameter in der Anfrage verwenden und schließlich in dem Server-Programmverzeichnis suchen.

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

In the WMS GetMap request, QGIS Server accepts a couple of extra parameters in addition to the standard parameters according to the OGC WMS 1.3.0 specification:

  • 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&...
  • FILTER Parameter: (Verfügbar in QGIS 1.8 und darüber). Untermenge aus Layern

    kann mit dem FILTER Parameter ausgewählt werden. Syntax ist im Grunde die gleiche wie für die QGIS Teilmenge Zeichenkette. Allerdings gibt es einige Einschränkungen, um SQL-Injektionen in den Datenbanken über QGIS Server zu vermeiden:

    Text-Strings müssen mit Anführungszeichen (einfache Anführungszeichen für Strings, doppelte Anführungszeichen für Attribute) eingeschlossen werden Ein Leerzeichen zwischen jedem Wort/Sonderzeichen ist obligatorisch. Erlaubt Schlüsselwörter und Sonderzeichen sind ‘AND’,’OR’,’IN’,’=’,’<’,’>=’, ‘>’,’>=’,’!=*,’(‘,’)’. Semikolons in String-Ausdrücken sind nicht erlaubt

    Beispiel:

    http://myserver.com/cgi/qgis_mapserv.fcgi?REQUEST=GetMap&LAYERS=mylayer1,mylayer2&FILTER=mylayer1:"OBJECTID" = 3;mylayer2:'text' = 'blabla'&....

Bemerkung

Es ist möglich eine Attributsuche via GetFeatureInfo durchzuführen und die X/Y Parameter wegzulassen, wenn ein FILTER aktiviert ist. QGIS Server liefert dann Informationen über die passenden Merkmale und erzeugt eine kombinierte Boundingbox in der XML-Ausgabe.

  • AUSWAHL Parameter: (Verfügbar in QGIS 1.8 und darüber). Untermenge aus Layern

    Vektorobjekte können ausgewählt werden, indem man durch Komma getrennte Listen mit Feature-IDs in GetMap und GetPrint.

    Beispiel:

    http://myserver.com/cgi/qgis_mapserv.fcgi?REQUEST=GetMap&LAYERS=mylayer1,mylayer2&SELECTION=mylayer1:3,6,9;mylayer2:1,5,6&...

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

QGIS Server WMS GetFeatureInfo Anfragen unterstützen die folgenden zusätzlichen optionalen Parameter um die Toleranz für Punkt-, Linien- und Polygon-Layer einzustellen:

  • FI_POINT_TOLERANCE Parameter: Toleranz für Punktlayer GetFeatureInfo Anfragen in Pixeln.

  • FI_LINE_TOLERANCE Parameter: Toleranz für Linienlayer GetFeatureInfo Anfragen in Pixeln.

  • FI_POLYGON_TOLERANCE Parameter: Toleranz für Polygonlayer GetFeatureInfo Anfragen in Pixeln.

GetPrint Anfrage

QGIS Server hat die Fähigkeit Druckzusammenstellungen als PDF oder Pixelformat zu erstellen. Druckzusammenstellungsfenster im veröffentlichten Projekt werden als Vorlage genutzt. In der GetPrint Anfrage hat der Kunde die Möglichkeit die Parameter der enthaltenden Zusammenstellungskarte und der Beschriftung zu spezifizieren.

Beispiel:

Das veröffentlichte Projekt hat zwei Zusammenstellungskarten. In der GetProjectSettings Reaktion, werden sie als mögliche Druckvorlagen aufgelistet:

<WMS_Capabilities>
...
<ComposerTemplates xsi:type="wms:_ExtendedCapabilities">
<ComposerTemplate width="297" height="210" name="Druckzusammenstellung 1">
<ComposerMap width="171" height="133" name="map0"/>
<ComposerMap width="49" height="46" name="map1"/></ComposerTemplate>
</ComposerTemplates>
...
</WMS_Capabilities>

Der Kunde hat nun die Informationen eine Druckausgabe anzufordern:

http://myserver.com/cgi/qgis_mapserv.fcgi?...&REQUEST=GetPrint&TEMPLATE=Druckzusammenstellung 1&map0:EXTENT=xmin,ymin,xmax,ymax&map0:ROTATION=45&FORMAT=pdf&DPI=300

Parameter in der GetPrint Anfrage sind:

  • <map_id>:EXTENT gibt das Ausmaß für eine Zusammenstellungskarte in xmin,ymin,xmax,ymax aus.

  • <map_id>:Drehung Kartendrehung in Grad

  • <map_id>:GRID_INTERVAL_X, <map_id>:GRID_INTERVAL_Y Gitter Liniendichte für eine zusammenstellungskarte in X- und Y-Richtung

  • <map_id>:SCALE Setzt einen Maßstab für die Zusammenstellungskarte. Dies ist nützlich, eine skalenbasierte Sichtbarkeit der Layer und Beschriftungen sicherzustellen, auch wenn Klient und Server verschiedene Algorithmen zum berechnen des Maßstabs haben

  • <map_id>:LAYERS, <map_id>:STYLES Möglichkeit um Layern und Stilen Listen für Zusammenstellungskarten zu geben (nützlich bei Übersichtskarten, welche nur einen Teil der Layer beinhalten sollen)

GetLegendGraphics-Abfrage

Mehrere zusätzliche Parameter sind verfügbar, um die Größe der Legendenobjekte zu ändern:

  • BOXSPACE Raum zwischen Legendenrahmen und Inhalt (mm)

  • LAYERSPACE vertikaler Raum zwischen den Layern (mm)

  • LAYERTITLESPACE vertikaler Raum zwischen dem Layertitel und den folgenden Objekten (mm)

  • SYMBOLSPACE vertikaler Raum zwischen Symbolen und den folgenden Objekten (mm)

  • ICONLABELSPACE horizontaler Raum zwischen Symbolen und Beschriftungstext (mm)

  • SYMBOLWIDTH Breite der Symbolvorschau (mm)

  • SYMBOLHEIGHT Höhe der Symbolvorschau (mm)

Diese Parameter ändern die Schrifteigenschaften für Layertitel und Objektbeschriftungen:

  • LAYERFONTFAMILY / ITEMFONTFAMILY Schriftfamilie für Layertitel/Objekttext

  • LAYERFONTBOLD / ITEMFONTBOLD ‘TRUE’ um eine fette Schrift zu nutzen

  • LAYERFONTSIZE / ITEMFONTSIZE Schriftgröße in Punkt

  • LAYERFONTITALIC / ITEMFONTITALIC ‘TRUE’ um eine kursive Schrift zu nutzen

  • LAYERFONTCOLOR / ITEMFONTCOLOR Hex Farbkode (z. B. #FF0000 für rot)

  • LAYERTITLE / RULELABEL (ab QGIS 2.4) setzen sie auf “false” um die Legende Grafiken ohne Beschriftungen zu bekommen

Wettbewerb basierte Legende. Diese Parameter lassen die Client-Anforderung eine Legende zeigen, allerdings nur die Symbole, für die die Funktionen in den gewünschten Bereich fällt:

  • BBOX das geographische Gebiet, für das die Legende gebaut werden soll

  • CRS / SRS das Koordinatenreferenzsystem übernimmt die Koordinaten der BBOX Koordinaten

  • Breite/Höhe wenn diese gesetzt ist, sollten die für die GetMap Anforderung entsprechend definiert sein, um QGIS Server Skala Symbole entsprechend der Kartenansicht die Bildgröße anpassen zu lassen.

Wettbewerb basierte Legenden Objekte basieren auf der UMN MapServer implementation:

GetProjectSettings Anfrage

Dieser Anforderungstyp funktioniert ähnlich wie GetCapabilities, aber er ist mehr QGIS Server spezifisch und ermöglicht es einem Client zusätzliche Informationen zu lesen, die nicht verfügbar inder GetCapabilities Ausgabe sind:

  • initial Sichtbarkeit der Layer

  • Informationen über Vektor Attribute und ihre Datentypen

  • Informationen zu Layer- und Zeichenreihenfolge

  • Liste der in WFS veröffentlichten Layer

DXF Export

Es ist möglich, Layer im DXF-Format zu exportieren, mit Hilfe der GetMap Anfrage. Nur Layer, die den Lesezugang in dem WFS-Service haben, werden im DXF-Format exportiert werden. Hier ist eine gültige ANFORDERUNG und eine Dokumentation der verfügbaren Parameter:

http://your.server.address/wms/liegenschaftsentwaesserung/abwasser_werkplan?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&LAYERS=Haltungen,Normschacht,Spezialbauwerke&STYLES=&CRS=EPSG%3A21781&BBOX=696136.28844801,245797.12108743,696318.91114315,245939.25832905&WIDTH=1042&HEIGHT=811&FORMAT=application/dxf&FORMAT_OPTIONS=MODE:SYMBOLLAYERSYMBOLOGY;SCALE:250&FILE_NAME=werkplan_abwasser.dxf

Parameter:

  • FORMAT=application/dxf
  • FILE_NAME=yoursuggested_file_name_for_download.dxf
  • FORMAT_OPTIONS=siehe unten, Schlüssel: Wert-Paare durch ein Semikolon getrennt

FORMAT_OPTIONS Parameter:

  • Skala:Skala um für Symbologieregeln, Filter und Stile verwendet zu werden (nicht eine tatsächliche Skalierung der Daten - Daten bleiben in der ursprünglichen Skala).

  • MODE:NOSYMBOLOGY|FEATURESYMBOLOGY|SYMBOLLAYERSYMBOLOGY entspricht den drei Exportoptionen angeboten in dem QGIS Desktop DXF-Export-Dialog.

  • LAYERSATTRIBUTES:yourcolumn_with_values_to_be_used_for_dxf_layernames - wenn nicht anders angegeben, werden die ursprünglichen QGIS Layer-Namen verwendet.

  • USE_TITLE_AS_LAYERNAME wenn aktiviert, wird der Titel des Layers als Layername verwendet werden.

Zusätzliche Paramter die vom WFS GetFeature Request unterstützt werden.

In the WFS GetFeature request, QGIS Server accepts two extra parameters in addition to the standard parameters according to the OGC WFS 1.0.0 specification:

  • GeometryNamen Parameter: dieser Parameter kann verwendet werden, um das Ausdehnung oder den Zentroid als Geometrie zu erhalten oder ohne Geometrie, wenn keine verwendet wird (d. h. nur Attribut). Zulässige Werte sind Ausdehnung, Zentroid oder keine.

  • StartIndex parameter: STARTINDEX is standard in WFS 2.0, but it’s an extension for WFS 1.0.0 which is the only version implemented in QGIS Server. STARTINDEX can be used to skip some features in the result set and in combination with MAXFEATURES will provide for the ability to use WFS GetFeature to page through results. Note that STARTINDEX=0 means start with the first feature, skipping none.

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

Bemerkung

  • 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.

Kurzname für Layer, Gruppen und Projekt

Eine Anzahl von Elementen hat sowohl einen <Name> als auch einen <Titel>. Der Name ist eine Textzeichenfolge, die für Maschine-zu-Maschine Kommunikation verwendet wird, während der Titel von den Menschen genutzt wird.

Beispielsweise kann ein Datensatz den beschreibenden Titel “Maximale atmosphärische Temperatur” haben und mit dem abgekürzten Namen “ATMAX” angefordert werden. Der Benutzer kann bereits Titel für Ebenen, Gruppen und Projekte festlegen.

Der Name OWS basiert auf dem Namen, der im Layerbaum verwendet wird. Dieser Name ist mehr eine Beschriftung für den Menschen, als ein Name für die Maschine-zu-Maschine Kommunikation.

QGIS Server Unterstützung:

  • Kurznamenbearbeitung zu Layereigenschaften

  • WMS-Daten-Dialog um Baumgruppen zu schichten (Kurzname, Titel, Zusammenfassung) Mit einem Rechtsklick auf eine Layergruppe und Auswahl des :gui-Labels: Set Group WMS data erhalten Sie:

    Figure set group wms data:

    ../../../_images/set_group_wms_data.png
  • Kurznamenbearbeitung zu Layereigenschaften- fügen Sie einen regexp Entwerter hinzu "^[A-Za-z][A-Za-z0-9\._-]*" um Kurznamenbearbeitung durch eine statistische Methode verfügbar zu machen

  • fügen Sie einen regexp Entwerter hinzu "^[A-Za-z][A-Za-z0-9\._-]*" um Kurznamenbearbeitung durch eine statistische Methode verfügbar zu machen

  • fügen Sie ein TreeName Element in die``fullProjectSettings`` hinzu

Wenn ein Kurzname für Layer, Gruppen und das Projekt eingestellt worden ist, wird es durch den QGIS Server als Layername verwendet.

Verbindung zur Servicedatei

Um den Apache auf die PostgreSQL-Dienstdatei aufmerksam zu machen (siehe Verbindungen in Datei speichern), müssen Sie die *.conf Datei wie folgt aussehen lassen:

SetEnv PGSERVICEFILE /home/web/.pg_service.conf

<Directory "/home/web/apps2/bin/">
  AllowOverride None
.....

Fügen Sie Schriften zu Ihrem Linux-Server hinzu

Beachten Sie, dass Sie QGIS-Projekte verwenden dürfen, die auf Fonts zeigen, die standardmäßig nicht auf anderen Rechnern existieren. Dies bedeutet, dass, wenn Sie das Projekt freigeben, es auf anderen Maschinen anders aussehen kann (wenn die Schriftarten auf dem Zielcomputer nicht vorhanden sind).

Damit dies nicht geschieht, müssen Sie nur die fehlenden Schriften auf dem Zielgerät installieren. Dies auf Desktop-Systemen ist in der Regel trivial (Doppelklick auf die Schriftarten).

Für Linux, wenn Sie keine Desktop-Umgebung installiert haben (oder die Befehlszeile bevorzugen), müssen Sie:

  • Auf Debian-basierten Systemen:

    sudo su
    mkdir -p /usr/local/share/fonts/truetype/myfonts && cd /usr/local/share/fonts/truetype/myfonts
    
    # copy the fonts from their location
    cp /fonts_location/* .
    
    chown root *
    cd .. && fc-cache -f -v
  • Auf Fedora-basierten Systemen

    sudo su
    mkdir /usr/share/fonts/myfonts && cd /usr/share/fonts/myfonts
    
    # copy the fonts from their location
    cp /fonts_location/* .
    
    chown root *
    cd .. && fc-cache -f -v

Umgebungsvariablen

Sie können einige Aspekte des QGIS-Servers konfigurieren, indem Sie die Umgebungsvariablen einstellen. Um beispielsweise den QGIS-Server auf Apache zu setzen, um die Datei /pfad/to/config/QGIS/QGIS2.ini zu verwenden, fügen Sie die Apache config hinzu:

SetEnv QGIS_OPTIONS_PATH "/path/to/config/"

oder, wenn Sie fcgi nutzen:

FcgidInitialEnv QGIS_OPTIONS_PATH "/path/to/config/"

Dies ist eine Liste der Variablen, die von QGIS Server unterstützt werden:

  • 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 .

  • QUERY_STRING: Der Query-String wird in der Regel vom Web-Server übergeben. Diese Variable kann nützlich sein, während QGIS Server-Binärdateien von der Kommandozeile zu testen.

  • QGIS_PROJECT_FILE: die .qgis Projektdatei, wird in der Regel als Parameter in der Abfrage-String übergeben, können Sie auch (unter Verwendung von mod_rewrite als Apache-Modul zum Beispiel) als Umgebungsvariable festgelegt.

  • 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: Geben Sie die gewünschte Protokollstufe an. Siehe QGIS Server Logging

  • MAX_CACHE_LAYERS: Geben Sie die maximale Anzahl der zwischengespeicherten Layer ein (Standard: 100).

  • DISPLAY: Dies wird verwendet, um X Server Display-Nummer zu bestehen (fake) (benötigt auf Unix-ähnlichen Systemen).

  • QGIS_PLUGINPATH: Nützlich, wenn Sie Python-Plugins für den Server verwenden, dies stellt den Ordner ein, indem für Python-Plugins gesucht wird.