# Web Feature Service

Web Feature Service (WFS) bezeichnet den Internet-gestützten Zugriff auf Geodaten innerhalb eines verteilten GIS. Der WFS beschränkt sich dabei ausschließlich auf Vektordaten, wie sie in Datenbanken abgelegt werden können.
Im Rahmen der Spezifikationen des Open Geospatial Consortium (OGC) ermöglicht ein WFS den Zugriff auf geographische Features in Datenbanken und gibt das Ergebnis mindestens als unabhängiges Dateiformat Geography Markup Language (GML) zurück.
Unter einem Feature versteht man hierbei die allgemeine Abstraktion eines realen Faktums („real world phenomenon“). Ein Feature Type ist die Darstellung mithilfe eines Namens, weiteren Attributen und, bei geographischen Feature Types, mit einer Geometrie. Beispielsweise enthält eine Datenbank Feature Types des Typs „Fluss“. Eine Instanz eines Features (eine Feature Instance) ist damit dann ein konkreter Fluss.

## Technischer Hintergrund eines OGC-konformen WFS

Um einen OGC-konformen WFS – d. h. ein Web Feature Service, der die Spezifikation des Open Geospatial Consortium (OGC) erfüllt – zu nutzen, wird bislang zur Kommunikation auf das Hypertext Transfer Protocol (HTTP) zurückgegriffen. Die Anfrage wird dabei als HTTP-Request von einem Client an den WFS gesendet. Der WFS besitzt sechs Operationen, die von einem Benutzer angefragt werden können:
* GetCapabilities: Hierbei wird nach den Fähigkeiten des WFS gefragt. Als Antwort wird ein XML-Dokument an den Benutzer zurückgeschickt, das neben allgemeinen Angaben zum Anbieter des WFS die abfragbaren Feature Types und die möglichen Operationen beinhaltet.
* DescribeFeatureType: Bei dieser Anfrage werden Informationen zur Struktur der einzelnen Feature Types zurückgegeben.
* GetFeature: Mit diesem Request werden die einzelnen Feature Instanzen, d. h. die eigentlichen Daten zurückgegeben. Es sollte möglich sein, dass bei der Anfrage näher spezifiziert wird, welche Eigenschaften des Features zurückgegeben werden und ob diese räumliche Informationen beinhalten.
* GetGmlObject: Eine WFS-Abfrage hat als Ergebnis immer eine GML-Datei. Mit dieser Anfrage ist es möglich, einzelne Elemente aus der GML-Datei per XLink zu erhalten.
* Transaction: Ein WFS kann Anfragen der Transaktion bereitstellen, d. h. die Möglichkeit die eigentlichen Features in der Datenbasis zu ändern. Darunter fällt das Anlegen, die Aktualisierung und die Löschung geographischer Features.
* LockFeature: Hiermit wird vom WFS gewährleistet, dass bei einer Operation auf einem Feature Type, dieses nicht während der Transaktion von einer anderen Instanz geändert wird.
Nimmt man diese Operationen als Grundlage, kann man drei Typen von WFS unterscheiden:
* Basic WFS: Der Basic WFS bietet den nur-lesenden Zugriff mit den Operationen GetCapabilities, DescribeFeatureType und GetFeature an.
* XLink WFS: Der XLink WFS bietet alle Funktionen des Basic WFS. Darüber hinaus unterstützt er die GetGmlObject-Operation.
* Transaction WFS: Der Transaction WFS unterstützt alle Funktionen des Basic WFS. Zusätzlich ermöglicht er den schreibenden Zugriff auf die Daten mit den Operationen Transaction und optional LockFeature. Die Operation GetGmlObject ist beim Transaction WFS ebenfalls nur optional. Zur besseren Unterscheidung nicht transaktionsfähiger WFS von Transaction WFS werden letztere auch als WFS-T bezeichnet.
Damit muss ein WFS zwingend Anfragen mit den ersten drei Operationen anbieten, der Transaction und LockFeature Request sind optional. Letzterer muss auch bei einem WFS mit Schreibzugriff nicht implementiert werden.
Der übliche Ablauf der Kommunikation zwischen Client und einem WFS in einem verteilten System läuft daher folgendermaßen ab:
* Der Client fragt mit dem GetCapabilities Request nach den Fähigkeiten des WFS und die angebotenen Feature Types.
* Darauf aufbauend kann mit dem DescribeFeatureType Request die Struktur der einzelnen Feature Types eingesehen werden.
* Dadurch kann mit dem GetFeature Request eine spezielle Instanz eines Features angefordert werden. Alternativ kann bei einem WFS mit Schreibzugriff der Transaction oder der LockFeature Request durchgeführt werden.
Innerhalb des OGC-Kontexts ist die Verbindung eines Web Feature Service mit einem Web Map Service (WMS) ein Beispiel für die Architektur eines verteilten GIS. Der WFS ist für den Zugriff auf die Geodaten verantwortlich, während der WMS nur noch für die Visualisierung der Daten zuständig ist. Dabei beschränkt sich der WFS nur auf den Zugriff von Vektordaten, während ein weiterer Service, der Web Coverage Service (WCS) den speziellen Zugriff auf Rasterdaten steuert.
Somit ist im Sinne des Client-Server Prinzips der WMS der Client des WFS. Darüber hinaus kann dieser WFS als kaskadierender WFS wiederum Client eines oder mehrerer weiterer WFS sein. Diese Architektur kann als Typ eines Web GIS gesehen werden.