david blasby the open planning project new york. goals explain what a wfs and wms are, and when to...

44
David Blasby The Open Planning Project New York

Upload: piers-gervase-higgins

Post on 30-Dec-2015

213 views

Category:

Documents


0 download

TRANSCRIPT

David BlasbyThe Open Planning ProjectNew York

Goals

Explain what a WFS and WMS are, and when to use themBe able to create simple spatial web applicationsUnderstand a bit about Geoserver

1. Introduction to Open Web Services2. WFS basics3. WMS basics4. Using WFS and WMS together5. Example Web Services

• Dynamic Features - <Inlinefeature>• Custom SLD & making a WFS request to construct a SLD• Dynamic adding of Features to the dataset

User

Clientapplication

Request in known format

Response in known formatBase data

Any server that implements the Service specification

Known operation

Basic Open Web Services

An Open Web Service is a Web Services that:

• has a well known format for what the request looks like• has a well defined meaning for how to execute the request• has a well known format for the what the response looks like• the definition is codified in a Specification Document

Open Web Services

Underlying Datasets - Databases, Shapefiles, Imagery

The WMS is concernedwith rendering maps

The WFS is concerned with accessing and updating the underlying datasets

WMS WFS

Underlying Datasets - Databases, Shapefiles, Imagery

GetCapabilitiesGetFeatureGetFeatureWithLockDescribeFeatureTypeTransactionLockFeature

WFS Requests

GetCapabilitiesGetMapGetFeatureInfoDescribeLayerGetLegendGraphic

WMS Requests

Internet

User

The OGC Services - WFS and WMS

WFS WMS

What to use the WFS services for

A WFS allows uniform direct access to the features stored on a server. Use a WFS when you want to perform actions such as:

• query a dataset and retrieve the features• find the feature definition (feature's property names and types)• add features to dataset• delete feature from a dataset• update feature in a dataset• lock features to prevent modification

What to use the WMS services for

A WMS allows for uniform rendering access to features stored on a server. Use a WMS when you want to perform actions such as:

• Producing Maps• Very simple Querying of data

WFS and WMS: when to use

WFS 1

WMS 1

User

Spatial Web Application

Base datasets 1 & 2

WFS 2

Base datasets 3 & 4

WMS 2

Using WFS and WMS together

The WFS

Underlying Datasets - Databases, Shapefiles,

GetCapabilitiesGetFeatureGetFeatureWithLockDescribeFeatureTypeTransactionLockFeature

WFS Requests

Internet

User

WFS WMS

The GetFeature Service

The GetFeature service allows you to treat your datasets like a spatial database and run queries on it.

SELECT polygon_outline, population, areaFROM USAstatesWHERE stateName = ‘New York’;

The request specifies three things:• What dataset to query (also called a “FeatureType”)• What columns to return• A filter to select a subset of features

GetFeature - <Filter>

Feature 1Feature 2Feature 3Feature 4Feature 5

Feature 2Feature 4

Feature

Filter Evaluator

XM

L F

ilter Expression

pass fail

Filter is the basis for most of the OGC specifications

WHERE Geometry Intersects BoundingBox

<Filter> <Intersects> <PropertyName>Geometry</PropertyName> <gml:Box srsName="http://www.opengis.net/gml/srs/epsg.xml#4326”> <gml:coordinates>13.0983,31.589935.5472,42.8143</gml:coordinates> </gml:Box> </ Intersects ></Filter>

WHERE stateName = ‘New York’<Filter> <PropertyIsEqualTo> <PropertyName>stateName</PropertyName> <Literal>New York</Literal> </PropertyIsEqualTo></Filter>

Constructing - <Filters>

GetFeature requests

FROM ...

SELECT ...

WHERE ...

Interpreting GetFeature Results

XML documentXML Schema

Adding Functionality to Filters

<Filter> <PropertyIsEqualTo> <Function name=“substring”> <PropertyName>cfcc</PropertyName> <Literal>0</Literal> <Literal>1</Literal> </Function> <Literal>A<Literal> </ PropertyIsEqualTo></Filter>

These Function are also available for use in SLD.

Geoserver allows you to easily add any Java function or class.

Transaction

Transactions allow you to update, delete, and insert features in amanner very similar to a spatial database.

UPDATE USAstates SET population = 8000000WHERE stateName = ‘New York’;

DELETE FROM USAstatesWHERE stateName = ‘New York’;

INSERT INTO USAstates (stateName, population)VALUES (‘New York’,8000000);

UPDATE ...

SET ...

WHERE...

Update

Insert

GML Versionof Feature

Delete

ACID

A good WFS (like Geoserver) will execute the transactions in anACID manner. This means that your <Transaction> commandset will either completely succeed or completely fail - you do nothave half-executed transactions.

NOTE: A single <Transaction> can have any number of Inserts, Deletes, and Updates in it.

Geoserver supports this for all the file and database formats.

Transaction Validation

Check that the feature is internally consistent:• Geometry is valid• Properties are in the “accepted” range

Check that the feature is external consistent:• Topological rules• No houses in the Ocean

This is Geoserver specific

Feature Versioning

Geoserver is currently adding support for automaticallyversioning features (and datasets) so changes can be rolled back or analyzed.

This is Geoserver specific

The WMS

Underlying Datasets - Databases, Shapefiles, Imagery

GetCapabilitiesGetMapGetFeatureInfoDescribeLayerGetLegendGraphic

WMS Requests

Internet

User

WFS WMS

GetMap

Features

RendererSLD Configuration User request (SLD?)

Styled Layer Descriptor (SLD) Basics

In the most basic form (a SLD used to render a layer) will containa set of <Rule> elements. Each <Rule> element contains two things:

• A <Filter> to specify what Features this Rule applies to• A set of Symbolizers that actually do the rendering.

<Rule> <Filter> …. Deep water Lakes ... </Filter> <PolygonSymbolizer> …. Colour Dark Blue ... </ PolygonSymbolizer></Rule>

<Rule> <Filter> …. Shallow water Lakes ... </Filter> <PolygonSymbolizer> …. Colour Light Blue ... </ PolygonSymbolizer></Rule>

SLD-POST

A user can also send an SLD file to the WMS server as part of theGetMap request. In this manner, the SLD file will specify what layers to render and also how to render them.

<NamedLayer> <Name>USAlakes</Name> <NamedStyle> <Name>lakeStyle</Name> </NamedStyle></NamedLayer>

Equivalent of LAYER=USAlakes,STYLE=lakeStyle

<NamedLayer> <Name>USAlakes</Name> <UserStyle> ... <Rule> <Filter> …. Deep water Lakes ... </Filter> <PolygonSymbolizer> …. Colour Dark Blue ... </ PolygonSymbolizer> </Rule> ... </UserStyle></NamedLayer>

SLD 1.1 InlineFeatures

Normally, the SLD will refer to local (hosted inside the WMS) layers, but it can also communicate with remote WFS servers. The user can alsosupply small sets of features within the actual SLD GetMap Request.

<UserLayer> <Name>Inline</Name> <InlineFeature> <BodyPart> <PartType>Face</ PartType > <polygonProperty> <gml:Polygon> ... </gml:Polygon> </polygonProperty> </BodyPart> </InlineFeature> … <Rule> … eyes ... </Rule> <Rule> … face ... </Rule> …</UserLayer>

Web Applications using WFS and WMS

WFS 1

WMS 1

User

Spatial Web Application

Base datasets 1 & 2

WFS 2

Base datasets 3 & 4

WMS 2

Rendering Temporary Features in Maps using SLD InlineFeature

Its quite difficult to interpret these numbers - why don’t we show it on a map?

Demonstration of BBOX application

Highlighting features using user specified SLD and WFS queries

User Clicks on Map

User Clicks

Query WFS

Find Street Name

Create SLD

Convert to world coordinates

XMLHttpRequest - GetFeature

WF

SGML

WM

SGetMap with SLD

GetFeaturerequest

GetFeatureresponse

Extract road name

SLD for GetMap request

Highlight all featurewith that name

Demonstration of click-to-highlight app

A simple web application using WFS and WMS

• popup preview for a mouse “hover”• click on a feature; go to its website• click on map; add a new feature

User Hovers

Query WFS

Anything returned?

Convert to world coordinates

XMLHttpRequest - GetFeature

WF

SGML

noyes

Extract thumbnail URL

Execute Popup

User Clicks

Query WFS

Anything returned?

Convert to world coordinates

XMLHttpRequest - GetFeature

WF

SGML

yesno

Get Info From User

Visit Site

XMLHttpRequest - Transaction

WF

S

Success/Fail

Demonstration of Web Application

TOPP Geoserver RoadMap

• Geotools improvements to handle more “advanced” data

• Validation and Feature Versioning

• GeoCollaborator - GeoWiki and tools for collaborative mapping

• OpenSDI Re-architecture for plugable services and configuration

• Hosting Data (i.e. TIGER) via WMS and WFS

• Web Coverage Server (WCS) - initial release available on branch.

• Improved performance

• WFS 1.1

Geoserver Users

Questions?

David BlasbyThe Open Planning ProjectNew York