Comunicación con un servicio WFS en un navegador Web

El recurso online de cada operación admitida por un servidor WFS compatible es un localizador de recursos uniforme (URL) de HTTP, de modo que un servicio WFS se puede considerar como un servicio de Transferencia de estado representacional (REST). A través de los parámetros de la dirección URL, puede utilizar estas operaciones para obtener metadatos de servicio, información del tipo de entidad y entidades codificadas de GML desde el servicio WFS. Estas operaciones y parámetros se detallan en las especificaciones WFS del OGC.

Tipos de clientes

Los servicios WFS se pueden utilizar en cualquier cliente que admita WFS. Con frecuencia, un navegador Web es el cliente más sencillo de un servicio WFS. Las solicitudes WFS pueden realizarse mediante HTTP, y las respuestas o excepciones se devuelven a través del navegador. Todos los servicios WFS son compatibles con tres operaciones: GetCapabilities, DescribeFeatureType y GetFeature.

Existen muchos clientes de terceros disponibles para utilizar servicios WFS. Para utilizar los servicios WFS, el cliente debe admitir WFS 1.0. 0 o 1.1. 0 y el perfil de entidades simples de GML. Además, ArcGIS for Desktop puede utilizar los servicios WFS. Si desea obtener ayuda sobre el uso de los servicios WFS en ArcMap, consulte Cómo trabajar con WFS usando ArcGIS for Desktop.

Estructura de la dirección URL de WFS

Para conectarse al servicio, es necesario conocer la dirección URL, que sigue este patrón:

http://gisserver.domain.com:6080/arcgis/services/<nombre de carpeta (si procede)>/<nombre de servicio>/<tipo de servicio>/WFSServer?

Por ejemplo, si ha habilitado el recurso WFS en el servicio de mapas WFSDemoService en una carpeta llamada DemoFolder en el servidor gisserver.domain.com que se ejecuta en el puerto 6080, la dirección URL sería:

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

De manera similar, si ha habilitado el recurso WFS en un servicio de geodatos, la dirección URL sería:

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

Utilizar filtros

El parámetro Filtro se puede utilizar en las solicitudes de WFS para obtener entidades específicas en un servicio de WFS. El beneficio del parámetro Filtro es que forma parte de la codificación de par de palabra clave-valor estándar definido en la sección 9.5 de la Especificación de WFS 1.1 y se puede incorporar al final de solicitudes de HTTP. Los servicios WFS utilizan la Especificación de implementación de codificación de filtro de OpenGIS OGC (FE) versión 1.1.

Estos son los filtros que puede aplicar:

Geometría

Espacial

Lógica

Comparación

Ordenar

Sobre

BBOX

Y

EqualTo

SortBy*

Punto

Igual a

O

NotEqualTo

MultiPunto

Inconexa

No

LessThan

LineString

Interseca

GreaterThan

Polígono

Cruces

LessThanOrEqualTo

Contactos

GreaterThanOrEqualTo

Dentro de

Como

Contiene

Entre

Superposiciones

NullCheck

NotaNota:

*El filtro SortBy únicamente se puede aplicar a servicios de WFS que se basan en datos almacenados en una geodatabase de ArcSDE.

Por ejemplo, si creó un Tipo de entidad denominado "grupos de bloques" en un servicio de WFS, puede solicitar entidades de grupos de bloques dentro de la extensión -122.423192682619, 37.7877919206256, -122.421377806544, 37.7893634225143 enviando la siguiente solicitud de GetFeature:

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>

Si desea solicitar una entidad de grupos de bloques que contenga una entidad de punto específica, como 122,431577, 37,749936, puede enviar la siguiente solicitud de GetFeature:

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>

NotaNota:

WFS requiere prefijos de espacio de nombre incluidos en la cadena de texto XML del filtro. Además, para evitar que los navegadores Web o servidores Web completen conversiones incorrectas, codifique la cadena de texto XML del filtro en una dirección URL antes de enviarla al servidor.

Consumir el servicio de WFS en un navegador Web

Los siguientes ejemplos utilizan los parámetros de dirección URL para comunicarse con un servicio WMS en un navegador Web:

GetCapabilities

Esta solicitud le devolverá todo tipo de entidades y funcionalidades disponibles a través del servicio en formato GML. Para utilizar la operación GetCapabilities, copie y pegue la URL del servicio WFS en la barra de direcciones y agregue ?request=getcapabilitiesal final de la URL.

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

El siguiente gráfico es un ejemplo de una funcionalidad devuelta en la operación GetCapabilities:

Funcionalidad devuelta en la operación GetCapabilities

GetCapabilities también devuelve una lista de todas las tablas y clases de entidad disponibles:

Clases de entidad y tablas disponibles devueltas en la operación GetCapabilities

DescribeFeatureType

Esta solicitud describe la información del campo sobre una o más entidades en el servicio de WFS. Incluye los nombres de campo, los tipos de campo, los valores de campo máximo y mínimo permitidos y cualquier otra restricción establecida en un campo de las clases de entidad o tablas.

Para utilizar la operación DescribeFeatureType, copie y pegue la URL del WFS en la barra de direcciones y agregue ?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&VERSION=1.1.0 al final de la URL. Esto devolverá toda la información del campo de cada una de las tablas y tipos de entidad disponibles en el servicio de entidades.

Ejemplo de URL: 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

Clases de entidad, información del campo y tablas devueltas en la operación DescribeFeatureType

Agregar filtros

Puede también especificar una única tabla o clase de entidad de la que desea información del campo incorporando la siguiente solicitud al final de la URL con el nombre de la tabla o tipo de entidad:

?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&TypeName=<escribir aquí tipo de entidad>&VERSION=1.1.0

En el siguiente ejemplo, la solicitud DescribeFeatureType se utiliza para identificar la información del campo para el tipo de entidad denominada ciudades.

Ejemplo de URL: 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

La clase de entidad de ciudades y su información del campo correspondiente devueltas en la operación filtrada DescribeFeatureType

GetFeature

Esta solicitud devuelve información sobre tipos de entidad específicos disponibles a través del servicio WFS.

Para utilizar la operación GetFeature en un navegador web, copie y pegue la URL del WFS en la barra de direcciones y agregue ?request=getFeature&typename=<enter feature type here> al final de la URL. Esto devolverá toda la información sobre atributos y geometría de cada entidad o fila en el tipo de entidad.

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

Información sobre atributos y geometría de la clase de entidad de ciudades devuelta en la operación GetFeature

Agregar filtros

También puede agregar filtros en la solicitud para delimitar los resultados que se devuelven. Por ejemplo, puede solicitar todas las ciudades comprendidas en un rango especificado de coordenadas. En el ejemplo siguiente, dos ciudades están comprendidas en un rango especificado de coordenadas:

Ejemplo de URL: 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

Ciudades dentro del rango especificado de coordenadas devueltas en la operación GetFeature

Trabajar con el parámetro FeatureID

El parámetro FeatureID se puede utilizar en las solicitudes GetFeature para pedir entidades específicas en un servicio WFS. El parámetro FeatureID consiste en el tipo de entidad y el Id. de entidad (gml: id), no el OBJECTID de la entidad. El formato de un Id. de entidad de una entidad en un servicio WFS es <FeatureType>.<gml: id>. Un método para identificar el gml:id de una entidad en un servicio WFS es realizar una solicitud GetFeature en el tipo de entidad de interés.

NotaNota:

gml:ids no se proporcionan para entidades de los servicios WFS que están basados en shapefiles.

Por ejemplo, supongamos que hay un tipo de entidad denominado Cities en un servicio WFS. Si realiza una solicitud GetFeature para las Ciudades, la respuesta incluirá el gml:id de cada entidad.

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

Solicitud GetFeature

En este ejemplo, el Id. de entidad de la ciudad de Vancouver sería cities.F293__1. La siguiente solicitud se podrá utilizar para solicitar específicamente la ciudad de Vancouver utilizando el Id. de entidad:

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

5/12/2014