Web Feature Service (WFS) - Vektoreita netistä
3.1 Lukumäärärajoitus ja sivutus
3.2 Vain haluttujen ominaisuustietojen haku
3.3 Yksinkertainen aluevalinta: BBOX
4. WFS-versioiden väliset erot
5. WFS:n tukemat tiedostomuodot
6.2 GetCapabilities voi olla raskas
1. WFS pähkinänkuoressa
WFS-palvelun avulla paikkatietoja voidaan ladata vektorimuodossa netin kautta.
2. WFS:n kolme peruskyselyä
GetCapabilities
- Kysely, joka lähetetään WFS-palvelimelle ensimmäiseksi, ja jonka vastaukseksi saadaan palvelun perustiedot.
- Esimerkkikyselyt eri WFS-versioille
- http://hip.latuviitta.org/cgi-bin/tinyows?service=WFS&version=1.0.0&request=GetCapabilities
- http://hip.latuviitta.org/cgi-bin/tinyows?service=WFS&version=1.1.0&request=GetCapabilities
- http://demo.opengeo.org/geoserver/wfs?service=WFS&version=2.0.0&request=GetCapabilities
- Vastauksen pääsisältö:
- luettelo palvelussa olevista karttatasoista
- tieto kunkin karttatason koordinaattijärjestelmästä ja maantieteellisistä ulottuvuuksista
- luettelo palvelimen tukemista operaatioista ja funktioista, joita voidaan käyttää hakutulosten suodattamiseen
DescribeFeatureType
- Kysely, joka antaa lisätietoja yksittäisistä WFS-palvelussa olevista karttatasoista
- Esimerkkikysely
- Vastauksen sisältö
- karttatason tietorakenne eli skeema
- luettelo tasoon kuuluvista ominaisuustiedoista ja niiden tietotyypeistä, esim, kokonaisluku, merkkijono tai päivämäärä
- tieto geometrian tyypistä, esim. piste, viiva tai aluegeometria
- tieto, onko ominaisuustieto pakollinen vai ei
- tieto, voiko ominaisuustieto olla tyhjä
GetFeature
- Pyyntö hakee paikkatietoaineiston palvelimelta
- Esimerkkipyyntö, joka palauttaa Suomen maakuntien rajat WFS-tasolta "lv:mml_maaku1_p"
3. Tulosjoukon rajaaminen
WFS-palvelusta on mahdollista hakea koko karttataso sellaisenaan, kaikkine kohteineen, kuten yllä olevassa maakunta-aineistoesimerkissä. Tällaisessa palvelussa ei kuitenkaan olisi juuri etua verrattuna tavalliseen tiedostolataukseen. WFS-palvelusta on kuitenkin mahdollista valita kohteita niiden sijainnin ja ominaisuustietojen avulla, jolloin käyttäjä saa vain ja ainoastaan sen mitä tilaa.
3.1 Lukumäärärajoitus ja sivutus
Käyttäjä voi asettta ylärajan sille, kuinka monta kohdetta palvelu palauttaa, lisäämällä pyyntöön parametrin "maxFeatures" tai WFS 2.0 -versiossa "count". Esimerkki:
Tämä pyyntö palauttaa aina maksimissaan maxFeatures-arvon verran kohteita alkaen ensimmäisestä kohteesta. Rajoitus on hyvin käyttökelpoinen pikatestaukseen, jolloin voi vilkaista nopeasti vain muutaman ensimmäisen kohteen sisällön. Suurten aineistojen hakeminen pala kerrallaan ei kuitenkaan onnistu, koska pyyntö palauttaa aina samat ensimmäiset kohteet. Vasta WFS-versio 2.0 toi mukanaan sivutuksen, eli mahdollisuuden pyytää halutun määrän kohteita alkaen määrätystä kohdasta. Aloituskohta kerrotaan parametrillä "startIndex", ja monissa palvelinohjelmissa tätä mahdollisuutta tuetaan nykyisin kaikilla WFS-versioilla. StartIndex:in vaikutus jää parhaiten mieleen, kun ajattelee, että se kertoo, kuinka monen ensimmäisen kohteen yli hypätään.
Tämä pyyntö palauttaa kaksi ensimmäistä osavaltiota, jotka ovat Illinois ja Missouri
Tämä pyyntö palauttaa kaksi kohdetta, mutta hyppää yhden yli, joten tulos on Missouri ja Arizona.
3.2 Vain haluttujen ominaisuustietojen haku
Jos WFS-aineiston skeemaan kuuluu tarpeettomia ominaisuustietoja, niin palvelun palauttaman tiedon määrää voi vähentää luettelemalla GetMap-pyynnössä ne ominaisuustiedot, jotka nimenomaan tahdotaan saada. Tämä tehdään lisäämällä pyyntöön parametri "propertyname", jonka arvoksi annetaan pilkuilla erotettu luettelo haluttujen ominaisuustietojen nimistä kirjoitettuna täsmälleen siten, kuin aikaisemmin esitelty DescribeFeatureType-pyyntö ne palauttaa.
Esimerkkejä: Kymmenen Helsingin rakennuksen kaikki ominaisuustiedot
Muuten sama pyyntö, mutta haetaan vain rakennusten geometria ja osoite
3.3 Yksinkertainen aluevalinta: BBOX
WFS-standardiin on määritelty yksinkertainen haku, jossa kiinnostuksen kohteena oleva alue annetaan suorakaiteena BBOX-parametrillä. WFS 1.0.0 palvelussu parametrin arvoiksi annetaan neljä pilkuilla erotettua lukua järjestyksessa MinX,MinY,MaxX,MaxY, ja tässä X merkitsee aina itäkoordinaattia/pituusastetta ja Y pohjoiskoordinaattia/leveysastetta. Hyvin yksinkertainen ja hyvin käytännöllinen haku, josta seuraavassa esimerkki.
Valinta ominaisuustietojen perusteella
3.3. Valinta paikan perusteella
4. WFS-versioiden väliset erot
WFS 1.0.0
- Tiedostomuoto: GML 2.1.2
- Tukee vain yhtä koordinaattijärjestelmää kullekin WFS-tasolle
- WFS 1.0.0:ssa koordinaattien ensimmäinen numero merkitsee aina itäkoordinaattia tai pituusastetta (longitudi) ja toinen numero pohjoiskoordinaattia tai leveysastetta (latitudi)
WFS 1.1.0
- Tiedostomuoto: GML 3.1.1
- Tuki eri koordinaattijärjestelmille, tiedot voidaan projisoida eri järjestelmään lennossa srsName-parametrin avulla
- Koordinaattien järjestys riippuu käytettävästä järjestelmästä. Esimerkkejä:
- WGS84 (EPSG:4326): leveysaste - pituusaste
- Suomalainen KKJ-järjestelmä: pohjoinen-itäinen
- Uusi suomalainen ETRS-TM35FIN: itäinen-pohjoinen
- Suomalaiset Gauss-Krüger-kaistat: pohjoinen-itäinen
- Kansainväliset UTM-kaistat: itäinen-pohjoinen
- Uusi tapa kertoa käytettävä koordinaattijärjestelmä:
- ennen esimerkiksi "EPSG:3067"
- nyt "urn:ogc:def:crs:EPSG::3067"
WFS 2.0.0
- Tiedostomuoto GML 3.2
- Tuki sivutukselle "startIndex"-parametrin avulla
- Tuki palvelimella etukäteen määritetyille pyyntörakenteille, "Stored Query"
5. WFS:n tukemat tiedostomuodot
WFS-standardi määrää, mitä tiedostomuotoa palvelun on pakko tukea ja minkä on samalla oltava sen oletusarvona. Standardi ei kuitenkaan kiellä tukemasta myös muita tiedostomuotoja. Eräät palvelimet, kuten deegree3, eivät todellakaan tue mitään muita tiedostomuotoja kuin pakollisia GML-versioita, kun taas esimerkiksi GeoServer tukee jo oletusasetuksillaan GML 2.1.2-, GML 3.1.1- ja GML 3.2-formaattien lisäksi zip-paketoitua ESRI Shapefile-, KML- ja GeoJSON-tiedostomuotoja sekä erotinmerkeillä jäsennettyä tekstimuotoa. Erikseen asennettavan laajennuksen avulla tuettuja vektoriformaatteja saadaan vielä lisää. MapServer-palvelin on mahdollista asentaa vastaavalla tavalla tukemaan lukuisia muita tiedostomuotoja.
WFS-palvelimen tukemat tiedostomuodot voidaan tarkistaa palvelimen GetCapabilities-vastauksesta.
6. WFS-ongelmia
xmlns:gml="http://www.opengis.net/gml"
xmlns:wfs="http://www.opengis.net/wfs"
service="WFS" version="1.1.0" maxFeatures="1000"
outputFormat="text/xml; subtype=gml/3.1.1">
<wfs:Query xmlns:tows="http://www.tinyows.org/"
srsName="urn:ogc:def:crs:EPSG::27582" typeName="tows:france">
<wfs:PropertyName>tows:the_geom</wfs:PropertyName>
<ogc:Filter>
<ogc:BBOX>
<ogc:PropertyName>tows:the_geom</ogc:PropertyName>
<gml:Envelope
<gml:lowerCorner>500117 2150739 </gml:lowerCorner>
<gml:upperCorner>658850 2315484 </gml:upperCorner>
</gml:Envelope>
</ogc:BBOX>
</ogc:Filter>
</wfs:Query>
</wfs:GetFeature>
- BBOX-pyynnöt ilman koordinaattijärjestelmätermiä eivät voi tuottaa samaa tulosta standardia noudattavista WFS 1.0.0 ja WFS 1.1.0-palvelimista.
- WFS 1.1.0 -palvelimelle kelpaava BBOX, joka sisältää tiedon koordinaattijärjestelmästä, ei välttämättä toimi WFS 1.0.0 -palvelimella, koska niihin ei ole edes tarvinnut rakentaa tukea eri järjestelmille.
<ogc:PropertyName>tows:the_geom</ogc:PropertyName>
<gml:Envelope srsName='urn:ogc:def:crs:EPSG::27582'>
<gml:lowerCorner>500117 2150739 </gml:lowerCorner>
<gml:upperCorner>658850 2315484 </gml:upperCorner>
</gml:Envelope>
</ogc:BBOX>