1
Web Feature Service
Modulo: Cartografía en la web
Daniela [email protected]
Maestría en Geomática Universidad de Cuenca
2
Temario
1 ¿Qué es un WFS?
2 ¿Qué puede hacer un WFS?
3 ¿Cómo funciona?
4 Operaciones (GetCapabilities, DescribeFeatureType, GetFeature)
5 Prácticas con MapServer
6 Instalación y prácticas con Geoserver
7 Filter Encoding
3
Planteo del problemaAnalogía con Infraestructura de TransporteDefinición de IDENaturaleza de una IDE
¿Qué es un WFS?¿Qué puede hacer un WFS?
¿Cómo funciona?
4
WMS superpone mapas de múltiples servicios de mapas en internet.
WFS consulta y recupera de datos vectoriales desde múltiples servicios remotos.
¿Qué es un WFS?
5
GetCapabilitiesDescribe capacidades, tipos de «features» y operaciones que soporta en cada tipo de «feature».
GetFeature Devuelve el «feature» en formato GML u otro.
Transaction Crear, Actualizar y Borrar features.
LockFeature Petición de bloqueo sobre una o más features mientras dure la transacción
DescribeFeatureType Describe estructura del «feature» pedido.
¿Qué puede hacer un WFS? – 5 Operaciones
6
Secuencia de Peticiones
7
metadatos del servicioDatos en GMLActualización de un featureBorrado de un feature
¿Cómo funciona un Web Feature Service?
Servidor WFS
Petición
Cliente WFSRespuesta
Get
Post
8
Herramienta para método Post
Geoserverintalar
Puerto 8085
9
Planteo del problemaAnalogía con Infraestructura de TransporteDefinición de IDENaturaleza de una IDE
GetCapabilities
10
GetCapabilities
http://host?service=WFS&version=1.0.0&request=GetCapabilities
<GetCapabilities service="WFS" xmlns="http://www.opengis.net/wfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd"/>
Get
Post
11
Actividad
Realiza una petición WFS GetCapabilities Get y Post utilizando el servidor de geoserver:
http://localhost:8085/geoserver/wfs?
¿Que tipo de información contiene el documento xml?
12
WFS_GetCapabilities
Service IdentificationAnd provider
Operation Metadata
FeatureTypeList
Metadatos del servicio Y del proveedor
Peticiones aceptadas por el WFS
Listado de “capas” y sus metadatos
FilterCapabilities
Operadores aceptados para realizar filtros
GetCapabilities: Respuesta
13
Planteo del problemaAnalogía con Infraestructura de TransporteDefinición de IDENaturaleza de una IDE
DescribeFeatureType
14
Elige un Feature topp:states
DescribeFeatureType
Queremos más información sobre este FeatureType
15
Describe la estructura del feature que ofrece el wfs: sus campos, ocurrencia, tipo de elemento
(string, float, coordenadas)
Esquema de xml: xsd
• Necesidad: con petición getFeature se generará un documento gml que deberá validarse con el esquema de la petición DescribeFeatureType
DescribeFeatureType
16
REQUEST DescribeFeatureType
VERSION 1.0.0SERVICE WFSTYPENAME FeatureType1, FeatureType2,…
DescribeFeatureType
17
DescribeFeatureType
http://localhost:8085/geoserver/wfs?SERVICE=WFS&VERSION=1.1.0&REQUEST=DescribeFeatureType&TypeName=topp:states
<DescribeFeatureType version="1.1.0" service="WFS" xmlns="http://www.opengis.net/wfs" xmlns:topp="http://www.openplans.org/topp" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd"> <TypeName>topp:states</TypeName></DescribeFeatureType>
Get
Post
18
DescribeFeatureType
19
Planteo del problemaAnalogía con Infraestructura de TransporteDefinición de IDENaturaleza de una IDE
GetFeature
20
REQUEST GetFeature
VERSION 1.1.0
SERVICE WFS
TYPENAME FeatureType1, FeatureType2,…
PROPERTYNAME Elementos del esquema xsd (DescribeFeatureType)Si no se completa devolverá todas las propiedades
FEATUREREVISION Para features que tienen distintas versiones
MAXFEATURE Número máximo de features que el WFS devolveráSi no se completa devolverá todos los features
FEATUREID Consulta de features por su identificador
FILTER Según Filter-Encoding Specification
BBOX Petición por medio de coordenadas extremas
GetFeature
21
GetFeature
<wfs:GetFeature service="WFS" version="1.1.0" xmlns:topp="http://www.openplans.org/topp" xmlns:wfs="http://www.opengis.net/wfs" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd"> <wfs:Query typeName="topp:states"> <ogc:Filter> <ogc:FeatureId fid="states.3"/> </ogc:Filter> </wfs:Query></wfs:GetFeature>
Post
22
http://localhost:8085/geoserver/wfs?service=WFS&version=1.0.0&request=GetFeature&typeName=topp:states&maxFeatures=50&outputFormat=SHAPE-ZIP
GetFeature
Get
23
Qgis
1. Abre el GML descargado y el shapefile con Qgis2. Carga una capa WFS en Qgis
24
MapServer como WFS
25
MapServer como WFS
WEBMETADATA "wfs_title" "....." "wfs_onlineresource" ".... ""wfs_srs" " … "End End
26
MapServer como WFS
LAYER ... DUMP TRUEMETADATA
"ows_title" " … " "ows_srs" " … "
"ows_enable_request" "*"" "gml_include_items" "all" ## Optional "gml_featureid" "ID" ## REQUIREDENDEND
27
Planteo del problemaAnalogía con Infraestructura de TransporteDefinición de IDENaturaleza de una IDE
Prácticas con Geoserver
28
Conceptos
Workspace = spacenames Store=datastore layer=featuretype Layergroup
29
Interface de administración
http://localhost:8085/geoserver
Login: admin – geoserver
Contact information
30
Workspace
Data workspace add new workspace
31
Store = Shapefile
Data store add new store shapefile
32
Store = Shapefile
33
Incluir:
SRS = EPSG:4326
SRS handling = Force declared
Bounding Boxes = click Compute from data and Compute from native bounds
Preview layers
Store = Shapefile
34
Datos Raster: Geotiff
35
Múltiples layers desde directorio
36
Layer group
37
Postgis
38
Filter Encoding
39
Una expresión de filtrado “filter expression” es una construcción usada para restringir los valores de propiedades de un tipo de objeto
Ej: toda la población mayor de 65 años La provincia cuyo nombre es “Azuay” Todos los ríos contenidos en la provincia de Azuay.
¿Qué es?
40
Para ser usado por cualquier servicio OGC. WFS, Gazetteer, Web Registry Service, Web Coverage
Service, SLD
Los filtros se construyen en xml
OGC filter encoding
41
Filtros
Operadores Espaciales
Operadores de Comparación
Operadores Logicos
ID
Tipos de operadores
42
Filter encoding: id
<wfs:GetFeature service="WFS" version="1.1.0" xmlns:topp="http://www.openplans.org/topp" xmlns:wfs="http://www.opengis.net/wfs" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd"> <wfs:Query typeName="topp:states"> <ogc:Filter> <ogc:FeatureId fid="states.3"/> </ogc:Filter> </wfs:Query></wfs:GetFeature>
WFS_getFeature-1.1.xml
43
Dentro de lascapacidades del WFS sedefinen los operadores yfunciones soportadas
Operadores Espaciales
Filter encoding
44
<wfs:Query typeName="topp:states"> <wfs:PropertyName>topp:STATE_NAME</wfs:PropertyName> <wfs:PropertyName>topp:PERSONS</wfs:PropertyName> <ogc:Filter> <ogc:BBOX> <ogc:PropertyName>the_geom</ogc:PropertyName> <gml:Envelope srsName="http://www.opengis.net/gml/srs/epsg.xml#4326"> <gml:lowerCorner>-75.102613 40.212597</gml:lowerCorner> <gml:upperCorner>-72.361859 41.512517</gml:upperCorner> </gml:Envelope> </ogc:BBOX> </ogc:Filter> </wfs:Query>
Operadores Espaciales
Filter encoding: BBOX WFS_getFeatureBBOX-1.1.xml
45
Filter encoding
PropertyIsEqualTo (=)PropertyIsNotEqualTo ( != (<>))PropertyIsLessThan (<)PropertyIsGreaterThan (>)PropertyIsLessThanOrEqualTo (<=)PropertyIsGreaterThanOrEqualTo (>=)PropertyIsLike: operador de comparación de cadenas de caracteres.PropertyIsNull: Operador que chequea para ver si el valor de su contenido es nulo.PropertyIsBetween: Los valores más altos o más bajos están incluidos.
Operadores de Comparación
46
Filter Encoding: PropertyIsEqualTo
<wfs:Query typeName="topp:states"> <ogc:Filter> <PropertyIsEqualTo> <PropertyName>STATE_NAME</PropertyName> <Literal>Delaware</Literal> </PropertyIsEqualTo> </ogc:Filter> </wfs:Query>
WFS_getFeature-1.1.xml
47
Filter Encoding
Para combinar una o más expresiones de condición.
Combinar expresiones lógicas, espaciales o escalares
AND, OR, NOT
En el archivo de capacidades:
Operadores Logicos
48
<ogc:Filter> <And> <PropertyIsGreaterThan>
<PropertyName>topp:LAND_KM</PropertyName><Literal>5000</Literal>
</PropertyIsGreaterThan> <PropertyIsLessThan> <PropertyName>PERSONS</PropertyName> <Literal>700000</Literal> </PropertyIsLessThan> </And> </ogc:Filter>
Filter Encoding: and
49
? ?? ? ??