Kommunikation mit einem WFS-Service in einem Webbrowser

Die Online-Ressource jeder Operation, die von einem konformen WFS-Server unterstützt wird, ist eine HTTP Uniform Resource Locator (URL); deshalb kann ein WFS-Service als REST-Service (Representational State Transfer) betrachtet werden. Mithilfe von URL-Parametern können Sie diese Operationen verwenden, um Service-Metadaten, Informationen zu den Feature-Typen sowie GML-codierte Features vom WFS-Service zu erhalten. Diese Operationen und Parameter werden in den OGC-WFS-Spezifikationen aufgeführt.

Client-Typen

WFS-Services können von jedem Client verwendet werden, der WFS unterstützt. In den meisten Fällen ist ein Webbrowser der einfachste Client für einen WFS-Service. WFS-Anforderungen können über HTTP gestellt werden, und die Antworten oder Ausnahmen werden durch den Browser zurückgegeben. Alle WFS-Services unterstützen drei Operationen: GetCapabilities, DescribeFeatureType und GetFeature.

Es gibt viele Clients von Drittanbietern, mit denen WFS-Services verwendet werden können. Um WFS-Services zu verwenden, muss der Client WFS 1.0.0 oder 1.1.0 und das Simple Features-GML-Profil unterstützen. Darüber hinaus kann ArcGIS for Desktop mit WFS-Services verwendet werden. Hilfe zur Verwendung von WFS-Services in ArcMap finden Sie unter So arbeiten Sie mit WFS und ArcGIS for Desktop.

WFS-URL-Struktur

Um eine Verbindung mit dem Service herzustellen, müssen Sie die URL kennen, die dem folgenden Muster folgt:

http://gisserver.domain.com:6080/arcgis/services/ <Ordnername (falls zutreffend)> / <Service-Name> / <Service-Typ>/WFSServer?

Wenn Sie beispielsweise die WFS-Funktion in dem Karten-Service mit der Bezeichnung WFSDemoService in einem Ordner namens DemoFolder aktivieren, der auf dem Server gisserver.domain.com am Port 6080 ausgeführt wird, sieht die URL wie folgt aus:

http://gisserver.domain.com:6080/arcgis/services/DemoFolder/WFSDemoService/MapServer/WFSServer?request=GetCapabilities

Dementsprechend sieht die URL folgendermaßen aus, wenn Sie die WFS-Funktion für einen Geodaten-Service aktivieren:

http://gisserver.domain.com:6080/arcgis/services/DemoFolder/WFSDemoService/GeoDataServer/WFSServer?

Verwenden von Filtern

Der Parameter "Filter" kann in WFS-Anforderungen verwendet werden, um bestimmte Features in einem WFS-Service aufzurufen. Der Vorteil des Filterparameters liegt darin, dass er Teil der Standardcodierung für das Schlüsselwort-/Wertpaar ist, die in der WFS 1.1 Implementation Specification im Abschnitt 9.5 definiert ist und an das Ende der HTTP-Anforderungen angehängt werden kann. WFS-Services verwenden die OGC OpenGIS Filter Encoding Implementation Specification (FE) Version 1.1.

Folgende Filter können angewendet werden:

Geometrie

Räumlich

Logisch

Vergleich

Sortieren

Envelope

BBOX

Und

EqualTo

SortBy*

Punkt

Gleich

Oder

NotEqualTo

Multipoint

Disjoint

Not

LessThan

LineString

Schneidet

GreaterThan

Polygon

Kreuzt

LessThanOrEqualTo

Berührt

GreaterThanOrEqualTo

Innerhalb

Wie

Enthält

Zwischen

Überlappungen

NullCheck

HinweisHinweis:

*Der SortBy-Filter kann nur auf WFS-Services angewendet werden, die auf Daten basieren, die in einer ArcSDE-Geodatabase gespeichert sind.

Wenn Sie beispielsweise einen Feature-Typ mit der Bezeichnung "blockgroups" in einem WFS-Service erstellt haben, können Sie blockgroups-Features innerhalb der Ausdehnung -122.423192682619, 37.7877919206256, -122.421377806544, 37.7893634225143 anfordern, indem Sie die folgende GetFeature-Anforderung senden:

http://gisserver.domain.com:6080/arcgis/services/playground/sanfrancisco_wfs/MapServer/WFSServer?service=WFS&request=GetFeature&version=1.1.0&typename=esri:blockgroups&Filter=<ogc:Filter><ogc:BBOX><ogc:PropertyName>Shape</ogc:PropertyName><gml:Box srsName="urn:x-ogc:def:crs:EPSG:4326"><gml:coordinates>37.7877919206256,-122.423192682619 37.7893634225143,-122.421377806544</gml:coordinates></gml:Box></ogc:BBOX></ogc:Filter>

Wenn Sie ein blockgroups-Feature anfordern möchten, das ein bestimmtes Punkt-Feature, wie 122.431577, 37.749936 enthält, können Sie folgende GetFeature-Anforderung senden:

http://gisserver.domain.com:6080/arcgis/services/playground/sanfrancisco_wfs/MapServer/WFSServer?service=WFS&request=GetFeature&version=1.1.0&typename=esri:blockgroups&Filter=<ogc:Filter><ogc:Contains><ogc:PropertyName>Shape</ogc:PropertyName><gml:Point srsName="urn:x-ogc:def:crs:EPSG:4326"><gml:pos srsName="urn:x-ogc:def:crs:EPSG:4326">37.749936 -122.431577</gml:pos></gml:Point></ogc:Contains></ogc:Filter>

HinweisHinweis:

WFS erfordert das Vorhandensein von Namespace-Präfixen in der Filter-XML-Zeichenfolge. Um falsche Konvertierungen von Webbrowsern oder Webservern zu vermeiden, versehen Sie die Filter-XML-Zeichenfolge zusätzlich mit einer URL-Codierung, bevor Sie sie an den Server senden.

Verwenden des WFS-Service in einem Webbrowser

In den folgenden Beispielen werden URL-Parameter für die Kommunikation mit einem WFS-Service in einem Webbrowser verwendet:

GetCapabilities

Diese Anforderung gibt alle über den Service verfügbaren Feature-Typen und Funktionalitäten im GML-Format zurück. Um die GetCapabilities-Operation zu verwenden, kopieren Sie die WFS-Service-URL, fügen Sie sie in die Adressleiste ein, und fügen Sie am Ende der URL ?request=getcapabilities hinzu.

URL-Beispiel: http://gisserver.domain.com:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=GetCapabilities

Die folgende Grafik ist ein Beispiel für die Funktionalität, die von der GetCapabilities-Operation zurückgegeben wird:

Funktionalität, die von der GetCapabilities-Operation zurückgegeben wird

GetCapabilities gibt auch eine Liste aller verfügbaren Feature-Classes und Tabellen zurück:

Verfügbare Feature-Classes und Tabellen, die von der GetCapabilities-Operation zurückgegeben werden

DescribeFeatureType

Diese Anforderung beschreibt die Feldinformationen von einem oder mehreren Features im WFS-Service. Dies schließt die Feldnamen, Feldtypen, zulässige Minimum- und Maximumfeldwerte und andere Einschränkungen für Felder der Feature-Classes oder der Tabellen ein.

Um die DescribeFeatureType-Operation zu verwenden, kopieren Sie die WFS-URL, fügen Sie sie in die Adressleiste ein, und fügen Sie am Ende der URL ?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&VERSION=1.1.0 hinzu. Dadurch werden alle Feldinformationen für alle Feature-Typen und Tabellen zurückgegeben, die im Feature-Service verfügbar sind.

URL-Beispiel: http://gisserver.domain.com:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&VERSION=1.1.0

Feature-Classes, Tabellen und Feldinformationen, die von der DescribeFeatureType-Operation zurückgegeben werden

Hinzufügen von Filtern

Sie können auch eine einzelne Feature-Class oder Tabelle angeben, für die Sie die Feldinformationen benötigen, indem Sie die folgende Anforderung mit dem Namen des Feature-Typs oder der Tabelle an das Ende der URL anfügen:

?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&TypeName=<Feature-Typ hier eingeben>&VERSION=1.1.0

Unten im Beispiel wird die DescribeFeatureType-Anforderung verwendet, um die Feldinformationen für den Feature-Typ "Cities" zu identifizieren.

URL-Beispiel: http://gisserver.domain.com:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&TypeName=cities&VERSION=1.1.0

Cities-Feature-Class und die zugehörigen Feldinformationen, die von der gefilterten DescribeFeatureType-Operation zurückgegeben werden

GetFeature

Diese Anforderung gibt Informationen zu speziellen Feature-Typen zurück, die über den WFS-Service verfügbar sind.

Um die GetFeature-Operation in einem Webbrowser zu verwenden, kopieren Sie die WFS-URL, fügen Sie sie in die Adressleiste ein, und fügen Sie am Ende der URL ?request=getFeature&typename=<Feature-Typ hier eingeben> hinzu. Dadurch werden alle Attribut- und Geometrieinformationen zu jedem Feature oder jeder Zeile im Feature-Typ zurückgegeben.

URL-Beispiel: http://gisserver.domain.com:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=getfeature&typename=cities

Attribut- und Geometrie-Informationen für die Cities-Feature-Class, die von der GetFeature-Operation zurückgegeben werden

Hinzufügen von Filtern

Sie können auch Filter in der Anforderung hinzufügen, um die Ergebnisse zu verfeinern, die zurückgegeben werden. Sie können z. B. alle Orte anfordern, die sich innerhalb eines angegebenen Koordinatenbereichs befinden. Unten im Beispiel befinden sich zwei Orte innerhalb eines angegebenen Koordinatenbereichs:

URL-Beispiel: http://gisserver.domain.com:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=getfeature&typename=cities&BBOX=46.90,-76.21,42.12,-72.88

Orte innerhalb des angegebenen Koordinatenbereichs, die von der gefilterten GetFeature-Operation zurückgegeben werden

Arbeiten mit dem FeatureID-Parameter

Der Parameter "FeatureID" kann in GetFeature-Anforderungen verwendet werden, um bestimmte Features in einem WFS-Service anzufordern. Der Parameter "FeatureID" besteht aus dem Feature-Typ und der Feature-ID (gml:id), nicht aus der OBJECTID des Features. Das Format einer Feature-ID für ein Feature in einem WFS-Service ist <FeatureType>.<gml:id>. Eine Methode, um die gml:id eines Features in einem WFS-Service zu identifizieren, besteht darin, eine GetFeature-Anforderung bzgl. des betreffenden Feature-Typs zu stellen.

HinweisHinweis:

Für Features in WFS-Services, die auf Shapefiles basieren, werden keine gml:ids bereitgestellt.

Angenommen, in einem WFS-Service gibt es einen Feature-Typ mit dem Namen "Cities". Wenn Sie eine GetFeature-Anforderung für "Cities" stellen, schließt die Antwort die gml:id für jedes Feature ein.

URL-Beispiel: http://gisserver.domain.com:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=getfeature&typename=cities

GetFeature-Anforderung

In diesem Beispiel wäre die Feature-ID für die Stadt Vancouver "cities.F293__1". Die folgende Anforderung könnte verwendet werden, um speziell die Stadt Vancouver mithilfe der Feature-ID anzufordern:

http://gisserver.domain.com:6080/arcgis/services/wfs_services/ArcSDE_wfs/GeoDataServer/WFSServer?request=getfeature&featureid=cities.F293__1

6/13/2014