200 likes | 404 Views
WFS 2.0 i Kortforsyningen. Julian Hollingbery, Geografisk Infrastruktur, julho@kms.dk Kortforsyningsseminar 31/3-11. Velkommen!. Projekt: Ny WFS-platform (2 slides) Nye ting i ISO FDIS 19142 (WFS 2.0) (5 slides) Udfordringer: Store datamængder, Basic WFS som selvforsvar, m.m. (2-4 slides)
E N D
WFS 2.0 i Kortforsyningen Julian Hollingbery, Geografisk Infrastruktur, julho@kms.dk Kortforsyningsseminar 31/3-11
Velkommen! • Projekt: Ny WFS-platform (2 slides) • Nye ting i ISO FDIS 19142 (WFS 2.0) (5 slides) • Udfordringer: Store datamængder, Basic WFS som selvforsvar, m.m. (2-4 slides) Spørgsmål tager vi bagefter, evt. på mejl
Projekt: Ny WFS-platform; baggrund: • INSPIRE Download tjenester (GML 3.2.1 og WFS 2.0) • Vi har brugt software i mere end 5 år: • Selvforsvar på WFS • Performance af GML 3 • Produktivitet i vedligeholdelse af tjenester • Skiftende ejerforhold • ESDIN: • Hvad bruger andre lande/kortlægningsinstitutioner? • Sandkasse med Snowflake og XtraServer
Projekt: Ny WFS-platform • Status: • Startede nov. 2010, slutter maj 2011 • 4 kandidater udvalgt til test • Tekniske tests er nu (foreløbigt) afsluttede • Konsekvenser for eksisterende brugere: • Mål: Udskiftning af nuværende platform, men eksisterende tjenester fortsætter uændret • Performance tests viser kraftig forbedring (for GML 3) • Medfører skift af platform for WMS+SLD (dvs. mat_sldfe, topo_geo_sldfe og topo_geo3p_sldfe)
Klasser af WFS 1.1 • Basic: GetCapabilities, DescribeFeatureType, GetFeature. ”This would be considered a READ-ONLY web feature service” • XLink: Basic plus GetGmlObject operation for local and/or remote XLinks, and offer the option for the GetGmlObject operation to be performed during GetFeature operations. • Transaction: Basic plus Transaction operation. Optionally, GetGmlObject and/or LockFeature operations
Klasser af WFS 2.0 • Simple: GetCapabilities, DescribeFeatureType, ListStoredQueries, DescribeStoredQueries, GetFeature operation with at least the StoredQuery action • Basic: ”Simple” plus GetFeature with Query action and GetPropertyValue • Transactional: ”Basic” plus Transaction operation • Locking: ”Transactional” plus either GetFeatureWithLock or LockFeature operation • HTTP GET: Implement the Key-value pair encoding • HTTP POST: Implement the XML encoding • SOAP: Implement the XML encoding within SOAP envelopes • Inheritance: Implement the schema-element() function for XPath expressions • Remote resolve: Ability to resolve remote resource references • Response paging: Ability to page through the response • Stadard joins: join predicates using all Filter operators except the spatial and temporal operators • Spatial joins • Temporal joins • Feature versions: Ability to navigate feature versions • Manage stored queries: CreateStoredQuery, DropStoredQuery operations
Klasse: Basic WFS • GetFeature med Query (dvs. brugerdefinerede, on-the-fly filtre) • GetPropertyValue - resulterer i f.eks. <wfs:ValueCollection timeStamp="2008-09-07T19:00:00" numberReturned="1" numberMatched="1" xmlns:…> <wfs:member>3</wfs:member> </wfs:ValueCollection> • Basic = Simple + vilkårlige filtre
Klasse: Response Paging • ”Response paging is the ability of a client to scroll through a set of response features or values, N features or values one at a time, much like one scrolls through the response from a search engine one page at a time.” • Klient specificerer count, og modtager så en URL til next.
Klasse: Manage Stored Queries • CreateStoredQuery, DropStoredQuery • Opret og slet prædefinerede forespørgsler (1.1 ”filtre”) • Mulighed for parametre (eksempel p. 80)
Udfordring: Store datamængder • KF tillader pt. generelt op til 5000 objekter per forespørgsel men ingen fejlmeddelelse når man rammer loftet • I praksis giver mange megabyte GML ofte anledning til ”sjove” problemer • Kan løsningen være Response Paging?
Udfordring: Selvforsvar på WFS • Kortforsyningens WFS er sårbar overfor en type af ”Denial of Service”-angreb • Løsning 1: Forlade os på gode brugerrelationer (dvs. lade login-parameteren stå for validering) • Løsning 2: Validér filtre (”queries”) i henhold til en hvidlistning (ListStoredQueries) • Løsning 3: Understøt kun Simple WFS 2.0
Udfordring: Plus/minus • Udtræk af levende objekter: <Filter xmlns="http://www.opengis.net/ogc"> <Not><PropertyIsNull><PropertyName>fot:Til_dato_FOT</PropertyName></PropertyIsNull></Not> </Filter> • Udtræk af objekter nedlagt 3 første dage af Januar: <Filter xmlns="http://www.opengis.net/ogc"> <And> <PropertyIsLessThan><PropertyName>fot:Til_dato_FOT</PropertyName><Literal>2010-01-03T00:00:00</Literal></PropertyIsLessThan> <PropertyIsGreaterThan><PropertyName>fot:Til_dato_FOT</PropertyName><Literal>2010-01-01T00:00:00</Literal></PropertyIsGreaterThan> </And> </Filter>
Udfordring: Geometrityper • Objekttyper med blandede punkt-, linie- og polygongeometrier • Objekttyper med enkelt- og multipolygoner • 2D og 3D: <gml:Envelope srsName="urn:ogc:def:crs,crs:EPSG::25832,crs:EPSG::5799" srsDimension="3">
Tak for opmærksomheden, nørder julho@kms.dk
Klasse: Feature Versions • Et svar på GetFeature eller GetPropertyValue kan angive state som ”valid”, ”retired”, ”superseeded” eller ”other:…”
Klasse: Remote Resolve • Returnér data, sådan at referencer til andre objekter kan følges (via XLink – se eksempel p. 37 i spec.) • … f.eks. på andre WFS-servere
Resultatformater • I dag: • GML2 fra WFS 1.0 • Fra WFS 1.1: text/xml; subtype=gml/3.1.1 text/xml; subtype=gml/3.1.1/gmlsf/1.0.0/0 application/csv application/javascript application/serialized.feature application/shape
Baggrund: INSPIRE Download Service • INSPIRE gennemførselsbestemmelser m.m. beskriver 2 slags Download tjenester: • Prædefinerede datasæt (f.eks. FTP-server) • ”Direct Access” (WFS eller WCS) • Tekniske retningslinier benytter WFS 2.0 • Dataspecifikationer for Bilag I benytter GML 3.2.1 • KMS behøver tid til at arbejde med data
Krav til WFS platform i KF • Erstat eksisterende tjenester i Kortforsyningen • Eksponering af ”sjove” datatyper: multigeometrier, tidsstempel (herunder filtrering -> plus/minus-ændringer) og tidszone • Understøt distribution af 2D data på 3D grundlag • Hvilke krav stilles til underliggende database? Særlige ID-kolonner, indices, nøgler el.lign. • Den udførte SQL skal fremgå af logfil eller tilsvarende • Fuld fleksibilitet mht. applikationsschemaer, schemaLocations, namespaces mv. • Typen af konfigurationsfil skal understøtte versionshåndtering • Understøt INSPIRE dataspecifikationer • Brugerdefinerede projektioner • Performance • Plan for understøttelse af WFS 2.0 (og GML 3.2.1) • Selvforsvar • Licensmodel som understøtter fleksibel skalering • Understøt PostGIS • Understøt konfigurerbare ”software joins” – overlad joins til databasen • Understøttelse af både SDO_GEOMETRY og ST_GEOMETRY på Oracle • Understøt objekttyper med blandede geometrityper