WebFeatureService/en: Unterschied zwischen den Versionen

Aus Geoportal
(Die Seite wurde neu angelegt: „ <div class="mediawiki-article-title">Nutzung eines Web Feature Service (WFS)</div> ---- {{TOC limit|3}} == Einführung == === Funktionsweise eines Geodate…“)
 
K
Zeile 60: Zeile 60:
   
 
{| class="wikitable" style="width: 100%;"
 
{| class="wikitable" style="width: 100%;"
−
! !! Erforderlich/<br />
+
! !! Erforderlich/Optional
−
Optional
 
 
! Beschreibung
 
! Beschreibung
 
|-
 
|-
 
|width="15%" style="padding: 10px"| VERSION /<br />
 
|width="15%" style="padding: 10px"| VERSION /<br />
 
ACCEPTVERSIONS
 
ACCEPTVERSIONS
−
|width="25%" style="padding: 10px"| Optional
+
|width="15%" style="padding: 10px"| Optional
−
|width="60%" style="padding: 10px"| WFS-Version der Anfrage. (Aktuell: 2.0.0)<br />
+
|width="70%" style="padding: 10px"| WFS-Version der Anfrage. (Aktuell: 2.0.0)<br />
 
VERSION wird ab der Version 2.0.0 genutzt. Ältere WFS-Versionen verwenden ACCEPTVERSIONS.
 
VERSION wird ab der Version 2.0.0 genutzt. Ältere WFS-Versionen verwenden ACCEPTVERSIONS.
 
|-
 
|-
Zeile 98: Zeile 97:
   
 
{| class="wikitable" style="width: 100%;"
 
{| class="wikitable" style="width: 100%;"
−
! !! Erforderlich/<br />
+
! !! Erforderlich/Optional
−
Optional
 
 
! Beschreibung
 
! Beschreibung
 
|-
 
|-
 
|width="15%" style="padding: 10px"| VERSION /<br />
 
|width="15%" style="padding: 10px"| VERSION /<br />
 
ACCEPTVERSIONS
 
ACCEPTVERSIONS
−
|width="25%" style="padding: 10px"| Erforderlich
+
|width="15%" style="padding: 10px"| Erforderlich
−
|width="60%" style="padding: 10px"| WFS-Version der Anfrage. (Aktuell: 2.0.0)<br />
+
|width="70%" style="padding: 10px"| WFS-Version der Anfrage. (Aktuell: 2.0.0)<br />
 
VERSION wird ab der Version 2.0.0 genutzt. Ältere WFS-Versionen verwenden ACCEPTVERSIONS.
 
VERSION wird ab der Version 2.0.0 genutzt. Ältere WFS-Versionen verwenden ACCEPTVERSIONS.
 
|-
 
|-
Zeile 136: Zeile 134:
   
 
{| class="wikitable" style="width: 100%;"
 
{| class="wikitable" style="width: 100%;"
−
! !! Erforderlich/<br />
+
! !! Erforderlich/Optional
−
Optional
 
 
! Beschreibung
 
! Beschreibung
 
|-
 
|-
 
|width="15%" style="padding: 10px"| VERSION /<br />
 
|width="15%" style="padding: 10px"| VERSION /<br />
 
ACCEPTVERSIONS
 
ACCEPTVERSIONS
−
|width="25%" style="padding: 10px"| Erforderlich
+
|width="15%" style="padding: 10px"| Erforderlich
−
|width="60%" style="padding: 10px"| WFS-Version der Anfrage. (Aktuell: 2.0.0)<br />
+
|width="70%" style="padding: 10px"| WFS-Version der Anfrage. (Aktuell: 2.0.0)<br />
 
VERSION wird ab der Version 2.0.0 genutzt. Ältere WFS-Versionen verwenden ACCEPTVERSIONS.
 
VERSION wird ab der Version 2.0.0 genutzt. Ältere WFS-Versionen verwenden ACCEPTVERSIONS.
 
|-
 
|-
Zeile 210: Zeile 207:
 
Mit bestimmten Filterausdrücken gemäß „Filter Encoding Standard 2.0“ kann die Ausgabe der Objekte entsprechend einer Bedingung eingeschränkt werden. In dem folgenden Beispiel wird das Naturschutzgebiet abgerufen, dessen Name („NAME“) dem Wert „Ellbachtal“ entspricht.
 
Mit bestimmten Filterausdrücken gemäß „Filter Encoding Standard 2.0“ kann die Ausgabe der Objekte entsprechend einer Bedingung eingeschränkt werden. In dem folgenden Beispiel wird das Naturschutzgebiet abgerufen, dessen Name („NAME“) dem Wert „Ellbachtal“ entspricht.
   
−
https://geoportal.saarland.de/arcgis/services/Internet/Schutzgebiete_INS/MapServer/WFSServer?VERSION=2.0.0&SERVICE=WFS&REQUEST=GetFeature&TYPENAMES=Naturschutzgebiet&FILTER=<Filter><PropertyIsEqualTo><ValueReference>NAME</ValueReference><Literal>Ellbachtal</Literal></PropertyIsEqualTo></Filter>
+
[https://geoportal.saarland.de/arcgis/services/Internet/Schutzgebiete_INS/MapServer/WFSServer?VERSION=2.0.0&SERVICE=WFS&REQUEST=GetFeature&TYPENAMES=Naturschutzgebiet&FILTER=<Filter><PropertyIsEqualTo><ValueReference>NAME</ValueReference><Literal>Ellbachtal</Literal></PropertyIsEqualTo></Filter> https://geoportal.saarland.de/arcgis/services/Internet/Schutzgebiete_INS/MapServer/WFSServer?VERSION=2.0.0&SERVICE=WFS&REQUEST=GetFeature&TYPENAMES=Naturschutzgebiet&FILTER=<Filter><PropertyIsEqualTo><ValueReference>NAME</ValueReference><Literal>Ellbachtal</Literal></PropertyIsEqualTo></Filter>]
   
 
Bei einer GetFeature-Anfrage sind gemäß WFS-Standard Namespaces anzugeben. Die WFS-Namespace-Eigenschaft wird zur Unterscheidung von XML-Element-Namen verwendet. Diese werden von einigen Diensteservern automatisch ausgefüllt, so dass wie im Beispiel des WFS Schutzgebiete_INS auf die Angabe der Namespaces im Request verzichtet werden kann. Ein gültiger GetFeature-Request mit Angabe der Namespaces sieht wie folgt aus:
 
Bei einer GetFeature-Anfrage sind gemäß WFS-Standard Namespaces anzugeben. Die WFS-Namespace-Eigenschaft wird zur Unterscheidung von XML-Element-Namen verwendet. Diese werden von einigen Diensteservern automatisch ausgefüllt, so dass wie im Beispiel des WFS Schutzgebiete_INS auf die Angabe der Namespaces im Request verzichtet werden kann. Ein gültiger GetFeature-Request mit Angabe der Namespaces sieht wie folgt aus:

Version vom 11. April 2025, 09:12 Uhr


Nutzung eines Web Feature Service (WFS)

Einführung

Funktionsweise eines Geodatendienstes

  • Abbildung 1: Funktionsweise eines Geodatendienstes

Geodatendienste sind Webservices, die den Austausch von Geodaten über standardisierte Schnittstellen ermöglichen. Sie sind dadurch interoperabel in unterschiedlichen Softwareanwendungen nutzbar. Erreichbar ist ein Geodatendienst über eine Internetadresse (URL), die den Dienst eindeutig identifiziert. Geodaten lassen sich abrufen, in dem der Nutzer eine Anfrage (Request) an den Diensteserver stellt. Dieser greift wiederum auf die Datengrundlage zu und liefert die Daten (Response) in dem angefragten Datenformat zurück an den Nutzer (Abb. 1). Der Request muss verschiedene (Pflicht-) Parameter enthalten, die dem Diensteserver beispielsweise mitteilen, welcher Layer, Kartenausschnitt oder welches Datenformat ausgegeben werden soll. Für den Zugriff auf Geodatendienste können Geoportale oder geographische Informationssysteme (GIS) genutzt werden.

Die Nutzung von Diensten bietet eine Reihe von Vorteilen, wie die Möglichkeit, auf den jeweils aktuellen Datenbestand zuzugreifen. Der Nutzer kann Geodaten, die an verschiedenen Orten und in unterschiedlichen Datenformaten gehalten werden, abrufen. Die Kombination verschiedener Datenquellen ist ebenfalls möglich.

Es lassen sich verschiedene Typen von Geodatendiensten unterscheiden. Es gibt u. a. Download- und Darstellungsdienste. Zu den Darstellungsdiensten gehören beispielsweise der Web Map Service (WMS) oder der Web Map Tile Service (WMTS), die Geodaten visualisieren. Der Web Feature Service (WFS) und der Web Coverage Service (WCS) zählen hingegen zu den Downloaddiensten, die das direkte Herunterladen der Geodaten unterstützen. Dabei handelt es sich um Raster- oder Vektordaten, die für die lokale Weiterverarbeitung auf dem Rechner gespeichert werden können. Dabei bleibt die volle Semantik der Daten erhalten.

Was ist ein Web Feature Service (WFS)?

Ein Web Feature Service (WFS) definiert eine durch das Open Geospatial Consortium (OGC) standardisierte Schnittstelle, die den Zugriff auf Geoobjekte, sogenannte „Features“ ermöglicht. Dabei handelt es sich in der Regel um räumliche Vektordaten (z. B. Punkt-, Linien- und Flächengeometrien) mit Sachinformationen. Ein WFS liefert diese Features im Allgemeinen in der Geography Markup Language (GML), einer XML-basierten Sprache zum Austausch von Geoobjekten, zurück. Diese kann von geographischen Informationssystemen verarbeitet werden und dient als Austauschformat für Geodaten über das Internet.

Der WFS bietet dem Nutzer verschiedene Operationen an, um die gewünschten Daten zurückzuliefern (Abb. 2):

  • Abbildung 2: Grundlagen Web Feature Service

Per HTTP (Hypertext Transfer Protocol) kann über GET- und POST-Anfragen mit dem Diensteserver kommuniziert werden. Werden Kartendienste in einem GIS oder einem Onlineportal/Onlineviewer genutzt, so übernehmen diese Komponenten die Kommunikation mit dem Server. Steht kein GIS oder Viewer zur Verfügung, so kann der WFS auch über einen üblichen Browser angesprochen werden.

Diese verschiedenen Möglichkeiten werden im nächsten Kapitel beschrieben.

Wie kann ich einen WFS nutzen?

Dem Nutzer stehen verschiedene Möglichkeiten zur Verfügung, um einen WFS anzufragen:

  1. Web-Browser (z.B. Mozilla Firefox, Edge oder Chrome)
  2. Desktop-Geoinformationssystem (GIS)

Während die erste Möglichkeit ein Vorwissen über Geodatendienste erfordert, gestaltet sich die Einsichtnahme über ein GIS bzw. eine Internet-Anwendung zur Verarbeitung von Geodaten meist einfacher.

In Kapitel 2 werden die Abfrageoptionen eines WFS beschrieben. Mit Hilfe der dort erläuterten Parameter kann der Nutzer selbstständig einen WFS über einen Web-Browser anfragen. Diese Art der Anfrage ist komplex, allerdings sind keine weiteren technischen Hilfsmittel erforderlich.

Die Nutzung eines WFS über ein Desktop-Geoinformationssystem, wie zum Beispiel QGIS und die damit einhergehenden Vor- und Nachteile, werden in Kapitel 3 beschrieben.

Bisher ist der GDI-SL keine Web-Applikation bekannt, die WFS darstellen oder verarbeiten kann.

Abfrageoperationen eines WFS

Dieses Kapitel beschreibt die verschiedenen Abfrageoptionen eines WFS sowie die entsprechenden Requests, die an den Server gestellt werden müssen. Dieses Wissen ist erforderlich, um die Funktionsweise eines WFS zu verstehen und erfolgreiche Anfragen an einen WFS über einen Web-Browser zu stellen.

GetCapabilities

Mit Hilfe der GetCapabilities-Operation, welche von allen OGC-Web Services unterstützt wird, können die Fähigkeiten und Metadaten des Dienstes abgefragt werden.

Der Aufruf setzt sich aus folgenden Parametern zusammen:

Erforderlich/Optional Beschreibung
VERSION /

ACCEPTVERSIONS

Optional WFS-Version der Anfrage. (Aktuell: 2.0.0)

VERSION wird ab der Version 2.0.0 genutzt. Ältere WFS-Versionen verwenden ACCEPTVERSIONS.

SERVICE Erforderlich Service-Typ. Hier: WFS.
REQUEST Erforderlich Name der Operation. Hier: GetCapabilities

Beispiel:

Der WFS der vereinfachten ALKIS Daten im Saarland hat folgende Adresse:

https://geoportal.saarland.de/arcgis/services/Internet/Schutzgebiete_INS/MapServer/WFSServer

Diese Adresse muss um die entsprechenden Parameter ergänzt werden. Sie wird durch ein „?“ vom restlichen Request getrennt. Die einzelnen Parameter werden durch ein „&“ verbunden.

Ein gültiger GetCapabilties-Aufruf sieht dann wie folgt aus:

https://geoportal.saarland.de/arcgis/services/Internet/Schutzgebiete_INS/MapServer/WFSServer?VERSION=2.0.0&SERVICE=WFS&REQUEST=GetCapabilities

Die Capabilities werden in Form eines XML-Dokumentes zurückgeliefert. Dieses kann entweder im Browser oder in einem Text-Editor angezeigt werden. Die Capabilities enthalten alle relevanten Informationen, um einen Dienst anzufragen. Neben allgemeinen Angaben zum Dienst, wie Kurzbeschreibung, Ansprechpartner und Nutzungsbedingungen, finden sich hier auch technische Details des Dienstes. Sie geben u. a. einen Überblick über die verfügbaren Abfrageformate, die Bezeichnung der einzelnen Feature Types oder unterstützte Koordinatenreferenzsysteme. Diese Informationen sind erforderlich, um eine gültige DescribeFeatureType- oder GetFeature-Anfrage zu stellen.

DescribeFeatureType

Mit der Operation „DescribeFeatureType“ lässt sich die Struktur eines konkreten Feature Types abfragen. Ähnlich wie bei der Capabilities-Abfrage wird die Adresse des Dienstes um einige Parameter erweitert:

Erforderlich/Optional Beschreibung
VERSION /

ACCEPTVERSIONS

Erforderlich WFS-Version der Anfrage. (Aktuell: 2.0.0)

VERSION wird ab der Version 2.0.0 genutzt. Ältere WFS-Versionen verwenden ACCEPTVERSIONS.

SERVICE Erforderlich Service-Typ. Hier: WFS.
REQUEST Erforderlich Name der Operation. Hier: DescribeFeatureType.
TYPENAMES Optional Name keines, eines oder mehrerer Feature Types, für das eine Beschreibung abgefragt werden soll.
OUTPUTFORMAT Optional Ausgabeformat der Beschreibung. (Standard: application/gml+xml version=3.2)

Ein gültiger DescribeFeatureType-Aufruf sieht wie folgt aus:

https://geoportal.saarland.de/arcgis/services/Internet/Schutzgebiete_INS/MapServer/WFSServer?VERSION=2.0.0&SERVICE=WFS&REQUEST=DescribeFeatureType&TYPENAMES=Naturschutzgebiet

Die Antwort der DescribeFeatureType-Anfrage wird, wie die Capabilities, als XML-Dokument zurückgeliefert. Sie enthält unter anderem Angaben zu dem XML-Schema des angefragten Feature Types sowie zu den Attributen und deren Datentyp. Mit diesen Informationen ist es möglich, die GetFeature-Anfrage um einen Filterausdruck zu erweitern und somit eine ausgewählte Teilmenge aller verfügbaren Objekte abzufragen.

GetFeature

Die Operation „GetFeature“ ermöglicht den Zugriff auf die Daten. Eine Auswahl gängiger Parameter ist in nachfolgender Tabelle aufgeführt.

Erforderlich/Optional Beschreibung
VERSION /

ACCEPTVERSIONS

Erforderlich WFS-Version der Anfrage. (Aktuell: 2.0.0)

VERSION wird ab der Version 2.0.0 genutzt. Ältere WFS-Versionen verwenden ACCEPTVERSIONS.

SERVICE Erforderlich Service-Typ. Hier: WFS.
REQUEST Erforderlich Name der Operation. Hier: GetFeature.
TYPENAMES Erforderlich Name eines oder mehrerer Feature Types, von dem Objekte abgefragt werden.
OUTPUTFORMAT Optional Ausgabeformat der Ergebnisliste. (Standard: application/gml+xml version=3.2)
COUNT Optional Anzahl der Features in der Ergebnisliste.
BBOX Optional Begrenzendes Rechteck, um Features innerhalb einer BoundingBox abzufragen.
RESULTTYPE Optional Art der Rückgabe. Auflistung der Features oder Anzahl der Features (results/hits).
FILTER Optional Filterausdruck, um die Feature- Ausgabe nach bestimmten Kriterien einzuschränken. (Gemäß Filter Encoding Standard 2.0)
NAMESPACES Optional Eindeutige Zuordnung eines Feature Types zu einem Namespace. In der Form: xmlns(prefix,escaped_url).

Bsp.: NAMESPACES=xmlns(adv,http://www.adv-online.de/namespaces/adv/gid/6.0).

Ein gültiger GetFeature-Aufruf sieht wie folgt aus:

https://geoportal.saarland.de/arcgis/services/Internet/Schutzgebiete_INS/MapServer/WFSServer?VERSION=2.0.0&SERVICE=WFS&REQUEST=GetFeature&TYPENAMES=Naturschutzgebiet

Mit dieser Anfrage werden alle Objekte des Feature Types Naturschutzgebiet (alle Naturschutzgebiete des Saarlandes) als GML-Datei ausgegeben. Hierbei wird der gesamte Datenbestand angefordert, was je nach übertragener Datenmenge zu langen Antwortzeiten führen kann. Das Ergebnis der Anfrage entspricht einem Vektordatensatz, der z. B. als GML-Datei abgespeichert und in Geographischen Informationssystemen verarbeitet werden kann.

Durch die Verwendung von Filterausdrücken bzw. Filterparametern lässt sich das Ergebnis einer GetFeature-Anfrage gezielt einschränken.

Der WFS 2.0 Standard unterscheidet dabei zwei Arten von Abfragen, sogenannte „Queries“.

Die Abfragemethode „Adhoc Query“, die auch ältere WFS-Versionen unterstützen und die seit der WFS-Version 2.0 definierte Abfrage „Stored Query“. Bei der Adhoc Query werden die Filterausdrücke gemäß Filter Encoding Standard vom Nutzer formuliert und als Request an den Diensteserver übertragen. Stored Queries bieten dem Datenanbieter die Möglichkeit, aufwendige Abfragen zu definieren und diese serverseitig abzuspeichern. In diesem Fall kann der Nutzer auf ausgewählte Features zugreifen und muss dafür keine eigenen, zum Teil komplexen Filterdefinitionen erstellen.

Beispiele Adhoc Query:

In dem folgenden Beispiel wird der GetFeature-Request über den Parameter „BBOX“ eingeschränkt. Es werden 17 Naturschutzgebiete im Saarland abgerufen, die innerhalb der angegebenen BoundingBox liegen oder diese schneiden:

https://geoportal.saarland.de/arcgis/services/Internet/Schutzgebiete_INS/MapServer/WFSServer?VERSION=2.0.0&SERVICE=WFS&REQUEST=GetFeature&TYPENAMES=Naturschutzgebiet&BBOX=359276,5446748,374175,5458685&SRSNAME=urn:ogc:def:crs:EPSG::25832

Die zurückgelieferten Features im GML-Format können in ein geographisches Informationssystem eingeladen werden (Abb.3).

  • Abbildung 3: Eingeladener Datensatz in QGIS (die BoundingBox gehört nicht zum eingeladenen Datensatz und dient zur Veranschaulichung)

Mit bestimmten Filterausdrücken gemäß „Filter Encoding Standard 2.0“ kann die Ausgabe der Objekte entsprechend einer Bedingung eingeschränkt werden. In dem folgenden Beispiel wird das Naturschutzgebiet abgerufen, dessen Name („NAME“) dem Wert „Ellbachtal“ entspricht.

<Filter><PropertyIsEqualTo><ValueReference>NAME</ValueReference><Literal>Ellbachtal</Literal></PropertyIsEqualTo></Filter> https://geoportal.saarland.de/arcgis/services/Internet/Schutzgebiete_INS/MapServer/WFSServer?VERSION=2.0.0&SERVICE=WFS&REQUEST=GetFeature&TYPENAMES=Naturschutzgebiet&FILTER=<Filter><PropertyIsEqualTo><ValueReference>NAME</ValueReference><Literal>Ellbachtal</Literal></PropertyIsEqualTo></Filter>

Bei einer GetFeature-Anfrage sind gemäß WFS-Standard Namespaces anzugeben. Die WFS-Namespace-Eigenschaft wird zur Unterscheidung von XML-Element-Namen verwendet. Diese werden von einigen Diensteservern automatisch ausgefüllt, so dass wie im Beispiel des WFS Schutzgebiete_INS auf die Angabe der Namespaces im Request verzichtet werden kann. Ein gültiger GetFeature-Request mit Angabe der Namespaces sieht wie folgt aus:

https://geoportal.saarland.de/registry/wfs/414?VERSION=2.0.0&SERVICE=WFS&REQUEST=GetFeature&TYPENAMES=ALKIS_ALKIS_WFS_ohne_Eig:Flurstueck&COUNT=10&NAMESPACES=xmlns(ave,http://repository.gdi-de.org/schemas/adv/produkt/alkis-vereinfacht/2.0)

hier bräuchte ich evtl. ein anderes Beispiel. Anfrage geht auch ohne Namespace!

In diesem Beispiel werden alle Flurstücke des WFS SL ALKIS Vereinfacht (vereinfachtes Schema) abgerufen. Über den Parameter „COUNT“ ist die Ausgabe auf 10 Features begrenzt.

Neben dem Parameter „COUNT“ lässt sich die Ausgabe der Flurstücke auch wieder durch einen Filterausdruck einschränken. In diesem Beispiel sind auch die Namensräume des Filters mit angegeben:

hier bräuchte ich ein Beispiel!

Es werden nur die Flurstücke abgerufen, die komplett innerhalb des angegebenen Bereichs liegen. Dieser Bereich wird durch ein Polygon definiert.

Beispiele Adhoc Query:

Stored Queries sind vordefinierte Abfragen, um ausgewählte Features abzurufen. In dem folgenden Beispiel wird ein Flurstück mit der ID „DESLALKI4R000Dvb“ angefragt und dafür die Stored Query „GetFeatureById“ genutzt.

https://geoportal.saarland.de/registry/wfs/414?VERSION=2.0.0&SERVICE=WFS&REQUEST=GetFeature&STOREDQUERY_ID=urn:ogc:def:query:OGC-WFS::GetFeatureById&ID=DESLALKI4R000Dvb

hier bräuchte ich ein funktionierendes Beispiel!