Paikkatietorajapintojen pikaohje

WMS eli Web Map Service

WMS on yksi Open Geospatial Consortiumin eli OGC:n on määrittelemiä paikkatietoaineistojen välittämiseen tarvittavia standardeja. WMS rajapintatekniikan avulla tuotetaan vektori- ja rasteripaikkatietoaineistoista dynaamisesti paikkatiedollista kuva-aineistoa.

Paikkatietoaineistosta muodostetaan kuva halutussa formaatissa (esim. png/jpg/gif). Tähän kuvaan liittyy tieto sen spatiaalisista ulottuvuuksista, sisällöstä ja metatiedoista, mutta sitä ei pidä sekoittaa alkuperäiseen paikkatietoaineistoon. WMS onkin vain tapa välittää aineiston sisältämää tietoa, ei itse alkuperäinen tiedosto ja se soveltuu näin hyvin taustakartta-aineistoksi ja karttapalveluiden käyttöön.

Jotta WMS rajapinta voidaan toteuttaa, tarvitaan palvelin, jonka kautta aineistoa välitetään saataville. Palvelimelle pitää asentaa jokin WMS rajapintaa välittävä palvelu, joita tällä hetkellä on olemassa useita niin maksullisia kuin ilmaisiakin (ArcGIS Server, MapServer, GeoServer jne.). Tampereen kaupunki hyödyntää Geoserveriä.

WMS-aineistoja voidaan kysellä käyttämällä joko asiakasohjelmaa, eli client:iä, tai tekemällä kyselyt Internet-selaimen osoitekentässä (URL:n avulla). Asiakasohjelma ottaa vastaan WMS-tasot tekemällä palvelimelle kyselyn ja hakemalla tulokset näytettäväksi työtilaan.

WFS eli Web Feature Service

WFS on nimensä mukaisesti vektoriaineistojen tietojen välittämiseen soveltuva rajapintatekniikka. WFS -kyselyt eivät palauta kuvaa WMS:n tavoin, vaan tiedot saadaan XML-skeemana, joka asiakaspäässä vastaanotetaan vektorimuotoisena paikkatietoaineistona.

XML eli Extensible Markup Language on kehitetty etenkin tiedon välitykseen. WFS tekniikan avulla aineiston osia voidaan hakea omaan käyttöön esimerkiksi tietyltä alueelta. Aineistolle voidaan tehdä kysely, jonka tulos voidaan tallettaa itselleen. Jos kyselyn tuloksena saatuja tietoja halutaan muuttaa, poistaa tai lisätä suoraan aineistontoimittajan palvelimelle, tarvitaan näihin toimintoihin aineistontoimittajan suunnalta pääsy. Tällöin tekniikkaa kutsutaan transactional WFS:ksi (WFS-T).

Tyypillinen prosessi paikkatietojen hakemiseksi kyselypalvelun WFS-palvelurajapinnasta koostuu seuraavista vaiheista (silloin kun asiakassovellus ei etukäteen tunne palvelun yksityiskohtia):

1. Asiakassovellus kysyy rajapintapalvelun metatietoja (GetCapabilities -kysely).

Esimerkki: http://geodata.tampere.fi/geoserver/ows?service=wfs&version=2.0.0&request=GetCapabilities

Vastauksesta käy ilmi mm. palvelun tukemat kyselyoperaatiot ja tarjolla olevien kohdeluokkien nimet ja kattavuusalueet.

2. Asiakassovellus kysyy valitsemansa kohdeluokan tietomallin (DescribeFeatureType -kysely).

Esimerkki: http://geodata.tampere.fi/geoserver/ows?service=WFS&version=1.0.0&request=DescribeFeatureType&typeName=hallinnolliset_yksikot:KH_TILASTO

Vastauksesta selviää kysytyn kohdeluokan sisältämät ominaisuudet, niiden tietotyypit ja pakollisuus/toistuvuusmääreet.

3. Saamiensa palvelun ja kohdeluokkien tietojen perusteella asiakassovellus pystyy muodostamaan paikkatietokyselyn ja lähettämään sen rajapintapalveluun (GetFeature -kysely).

Esimerkki: http://geodata.tampere.fi/geoserver/ows?service=WFS&version=2.0.0&request=GetFeature&typeName=hallinnolliset_yksikot:KH_TILASTO

Rajapintapalvelu prosessoi kyselyn ja palauttaa vastauksen (GML-muotoinen data) tai mahdollisen virheviestin, jos prosessointi syystä tai toisesta epäonnistui.

Haluttu tietosisältö voidaan rajata tarkasti rajauskielen avulla ilmaistavilla kyselykohtaisilla parametreilla. Kohdekyselyllä (GetFeature) palautetaan rajauksen mukaisten kohteiden tiedot kohdetyypin skeeman mukaisessa XML-rakenteessa. Kyselyt perustuvat W3C:n XPath -kieleen. Kyselyt voidaan välittää joko KVP- (nimi-arvo-pari) tai XML -koodattuina käyttäen HTTP:n GET ja POST -metodeja. Kyselyjen rajaamisessa voidaan käyttää, joko CQL -kyselykieltä (Common Query Language) tai OGC:n spesifikaatiota Filter Encoding. WFS-kysely palauttaa XML-pohjaisen GML-muotoon koodatun paluusanoman, jonka jatkokäsittely on helppoa.

Esimerkki CQL-kyselystä:
Haetaan katuosoite -tuotteesta haluttu osoite ja numero
http://geodata.tampere.fi/geoserver/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=osoitteet:ONK_NMR_MVIEW_GSVIEW&cql_filter=(KADUNNIMI=’Vasamakatu’ AND NUMERO=2)

Esimerkki Filter Encoding -kyselystä, joka hakee kadun nimellä:
HTML XML POST request:

<wfs:GetFeature service=”WFS” version=”1.1.0″
xmlns:wfs=”http://www.opengis.net/wfs”
xmlns:ogc=”http://www.opengis.net/ogc”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”http://www.opengis.net/wfs
http://schemas.opengis.net/wfs/1.1.0/wfs.xsd”>
<wfs:Query typeName=”osoitteet:ONK_NMR_MVIEW_GSVIEW”>
<ogc:Filter>
<PropertyIsEqualTo>
<PropertyName>KADUNNIMI</PropertyName>
<Literal>Vasamakatu</Literal>
</PropertyIsEqualTo>
</ogc:Filter>
</wfs:Query>
</wfs:GetFeature>

Esimerkki katuosoitteen haku halutussa koordinaatistossa:
Hakulauseeseen annetaan parametri srsName ja sille halutun koordinaatiston EPSG-koodi (ETRS-TM35FIN = EPSG:3067) eli &srsName=EPSG:3067.

Esimerkki: http://geodata.tampere.fi/geoserver/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=osoitteet:ONK_NMR_MVIEW_GSVIEW&cql_filter=(KADUNNIMI=’Vasamakatu’ AND NUMERO=2)&srsName=EPSG:3067

Esimerkki katuosoitteen haku halutussa koordinaatistossa ja GeoJSON formaatissa:
Hakulauseeseen annetaan parametri &srsName ja sille halutun koordinaatiston EPSG-koodi (ETRS-TM35FIN = EPSG:3067) eli &srsName=EPSG:3067. GeoJSON tulosformaatti määritellään parametrilla &outputFormat=application/json.

Esimerkki: http://geodata.tampere.fi/geoserver/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=osoitteet:ONK_NMR_MVIEW_GSVIEW&cql_filter=(KADUNNIMI=’Vasamakatu’ AND NUMERO=2)&srsName=EPSG:3067&outputFormat=application/json

WFS -pyyntöjen mahdolliset tulosformaatit Geoserver palvelimella: http://docs.geoserver.org/stable/en/user/services/wfs/outputformats.html
WMS -pyyntöjen mahdolliset tulosformaatit Geoserver palvelimella: http://docs.geoserver.org/stable/en/user/services/wms/outputformats.html

Pikaohjeessa on hyödynnetty osittain Lounaistiedon pikaohjetta.