Blasby_MainPresentation
Download
Report
Transcript Blasby_MainPresentation
David Blasby
The Open Planning Project
New York
Goals
Explain what a WFS and WMS are, and when to use them
Be able to create simple spatial web applications
Understand a bit about Geoserver
1. Introduction to Open Web Services
2. WFS basics
3. WMS basics
4. Using WFS and WMS together
5. Example Web Services
• Dynamic Features - <Inlinefeature>
• Custom SLD & making a WFS request to construct a SLD
• Dynamic adding of Features to the dataset
Basic Open Web Services
Request in known format
Client
application
User
Response in known format
Any server that
implements the
Service specification
Base data
Known operation
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
Underlying Datasets - Databases, Shapefiles, Imagery
Open Web Services
WMS
WFS
The WMS is concerned The WFS is concerned with accessing
and updating the underlying datasets
with rendering maps
The OGC Services - WFS and WMS
Underlying Datasets - Databases, Shapefiles, Imagery
WFS
WMS
GetCapabilities
GetFeature
GetFeatureWithLock
DescribeFeatureType
Transaction
LockFeature
GetCapabilities
GetMap
GetFeatureInfo
DescribeLayer
GetLegendGraphic
WFS Requests
WMS Requests
Internet
User
WFS and WMS: when to use
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
Using WFS and WMS together
Base datasets 3 & 4
Base datasets 1 & 2
WFS 2
WFS 1
WMS 1
Spatial Web Application
User
WMS 2
The WFS
Underlying Datasets - Databases, Shapefiles,
WFS
GetCapabilities
GetFeature
GetFeatureWithLock
DescribeFeatureType
Transaction
LockFeature
WFS Requests
Internet
User
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, area
FROM
USAstates
WHERE 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>
Filter Evaluator
pass
fail
XML Filter Expression
Feature
Feature 1
Feature 2
Feature 3
Feature 4
Feature 5
Feature 2
Feature 4
Filter is the basis for most of the OGC specifications
Constructing - <Filters>
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>
GetFeature requests
SELECT ...
WHERE ...
FROM ...
Interpreting GetFeature Results
XML Schema
XML document
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 a
manner very similar to a spatial database.
UPDATE USAstates
SET population = 8000000
WHERE stateName = ‘New York’;
INSERT INTO USAstates (stateName, population)
VALUES
(‘New York’,8000000);
DELETE FROM USAstates
WHERE
stateName = ‘New York’;
Update
UPDATE ...
SET ...
WHERE...
Insert
GML Version
of Feature
Delete
ACID
A good WFS (like Geoserver) will execute the transactions in an
ACID manner. This means that your <Transaction> command
set will either completely succeed or completely fail - you do not
have 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 automatically
versioning features (and datasets) so changes can be
rolled back or analyzed.
This is Geoserver specific
The WMS
Underlying Datasets - Databases, Shapefiles, Imagery
WFS
WMS
GetCapabilities
GetMap
GetFeatureInfo
DescribeLayer
GetLegendGraphic
WMS Requests
Internet
User
GetMap
Features
SLD Configuration
Renderer
User request (SLD?)
Styled Layer Descriptor (SLD) Basics
In the most basic form (a SLD used to render a layer) will contain
a 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>
<Rule>
<Filter>
<Filter>
…. Deep water Lakes ...
…. Shallow water Lakes ...
</Filter>
</Filter>
<PolygonSymbolizer>
<PolygonSymbolizer>
…. Colour Dark Blue ...
…. Colour Light Blue ...
</ PolygonSymbolizer>
</ PolygonSymbolizer>
</Rule>
</Rule>
SLD-POST
A user can also send an SLD file to the WMS server as part of the
GetMap 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 also
supply 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
Base datasets 3 & 4
Base datasets 1 & 2
WFS 2
WFS 1
WMS 1
Spatial Web Application
User
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
Convert to world coordinates
Query WFS
WFS
XMLHttpRequest - GetFeature
GML
Find Street Name
GetMap with SLD
WMS
Create SLD
GetFeature
request
GetFeature
response
Extract road name
Highlight all feature
with that name
SLD for GetMap request
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
Convert to world coordinates
Query WFS
GML
Anything returned?
no
yes
Extract thumbnail URL
Execute Popup
WFS
XMLHttpRequest - GetFeature
User Clicks
Convert to world coordinates
Query WFS
WFS
XMLHttpRequest - GetFeature
GML
Anything returned?
Visit Site
yes
no
Get Info From User
Success/Fail
WFS
XMLHttpRequest - Transaction
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 Blasby
The Open Planning Project
New York