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?
- El nombre del servidor es el nombre del equipo del servidor Web.
- El número de puerto es el puerto que su equipo de servidor web utiliza para comunicarse con otros equipos.
- El tipo de servicio puede ser MapServer o GeoDataServer, dependiendo de si ha creado el servicio WFS desde un mapa o una geodatabase, respectivamente.
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 |
*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>
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:
GetCapabilities también devuelve una lista de todas las tablas y clases de entidad disponibles:
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
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
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
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
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.
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
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