david blasby the open planning project new york. goals explain what a wfs and wms are, and when to...
TRANSCRIPT
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>
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);
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
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?
User Clicks
Query WFS
Find Street Name
Create SLD
Convert to world coordinates
XMLHttpRequest - GetFeature
WF
SGML
WM
SGetMap with SLD
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
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