JHS 180 Paikkatiedon sisältöpalvelut

Liite 2 Paikkatiedon kyselypalvelu

  • Versio: 28.2.2013
  • Julkaistu: 28.2.2013
  • Voimassaoloaika: toistaiseksi

1 Johdanto

Kohdepalvelulla tarkoitetaan rajapintapalvelua, joka mahdollistaa paikkatiedon kopioimisen käyttäjän tietovälineelle ( Geoinformatiikan sanasto [1]; INSPIRE-yhteyksissä latauspalvelu). Kohdepalveluita ovat kysely­palvelut ja tiedostopalvelut. Tämä liite sisältää suositukset paikkatiedon kyselypalvelun toteuttamisesta, liitteessä 3 on selostettu tiedostopalvelua koskevat suositukset.

Kohdepalvelun yhteydessä termit paikkatietoaineisto ja paikkatietotuote on erotettava selkeästi toisistaan. Paikkatietoaineistolla tarkoitetaan paikkatiedoista koostuvaa tietoaineistoa (eli yksilöitävissä olevaa kokoelmaa tietoja). Tietotuote tarkoittaa yhden tai useamman tietoaineiston tai tietoaineistosarjan tiedoista koottua tuotetta, joka voidaan luovuttaa sellaisenaan tai sisällön perusteella rajattuna tiettyyn käyttö­tarkoitukseen. (Geoinformatiikan sanasto)

Kyselypalvelulla tarkoitetaan rajapintapalvelua, joka mahdollistaa sen, että käyttäjän sovellus tai palvelu hakee paikkatiedon suoraan sen tallennuspaikasta kyselyn avulla (Geoinformatiikan sanasto). Paikkatiedon kyselypalvelussa paikkatietoja käsitellään yksittäisinä kohteina ja siksi se soveltuu parhaiten vektori­muodossa esitettyjen paikkatietojen jakeluun.

Tässä suosituksessa käsiteltävä paikkatiedon kyselypalvelu pohjautuu interaktiivisen, OGC:n määrittämän Web Feature Service (WFS) -standardin [2] mukaisen palvelurajapinnan käyttöön. Haluttu tietosisältö voidaan rajata tarkasti rajauskielen avulla ilmaistavilla kyselykohtaisilla parametreilla (rajauskieli selostetaan luvussa 4 ).

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

  • Asiakassovellus kysyy rajapintapalvelun metatietoja (GetCapabilities -kysely).

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

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

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

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

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

Tiedonsiirrossa sovellettava kohdemalli on JHS 162 -suosituksen mukainen paikkatietojen kohdemalli (Geography Markup Language, GML). Tämän mallin mukaisesti paikkatietokohteet koostuvat joukosta nimettyjä ja tyypitettyjä ominaisuuksia. Osa näistä ominaisuuksista on tyypillisesti ns. sijaintiominaisuuksia, joiden arvona on kohteen paikkaa osoittava sijaintiobjekti.

Keskeisimmät paikkatiedon kyselypalvelua koskevat suositukset ovat:

  • Palvelun perusstandardina käytetään Web Feature Service (WFS) -versiota 2.0. Toistaiseksi on mahdollista käyttää myös versiota 1.1.0.
  • Palvelun palauttaman paikkatiedon koodaustapa on oletusarvoisesti GML 3.2.1. Myös GML-version 3.1.1 käyttö on toistaiseksi mahdollista.
  • Palvelun on tuettava käyttökohteesta riippuen erilaisia koordinaattijärjestelmiä. Suositeltavat järjestelmät on lueteltu tämän suosituksen liitteen 1 luvussa 2.
  • Palvelun on tuettava WFS-standardin mukaisia GetCapabilities, DescribeFeatureType sekä GetFeature -kyselyjä ainakin HTTP GET -muodossa sekä GetFeature-kyselyä myös HTTP POST -muodossa.
  • WFS 2.0-standardia käytettäessä palvelun on tuettava ainakin kaikkia Simple WFS -luokkaan sisältyviä operaatioita HTTP GET -muodossa ja lisäksi GetFeature-kyselyä HTTP POST -muodossa.
  • WFS 2.0-standardin Basic WFS -luokan hakutoiminnoista suositellaan tuettavan kohdeluokan, id-numeron sekä bounding box -rajauksen perusteella tehtäviä hakuja. Lisäksi suositellaan GetPropertyValue -operaation tukemista HTTP POST -muodossa.
  • Palvelun ja sen tarjoamien aineistojen metatietoja suositellaan ylläpidettäväksi Paikkatietohakemistossa.
  • Merkistöä UTF-8 suositellaan käytettäväksi merkistöstandardiksi.

2 Koordinaattijärjestelmät

Paikkatiedon kyselypalvelun on tuettava erilaisia koordinaattijärjestelmiä kuten tämän suosituksen liitteen 1 luvussa 2 on esitetty.

3 Kyselypalvelu

3.1 Yleistä

Suomen paikkatietojen yhteiskäyttöympäristössä edellytetään, että kyselypalvelut tukevat WFS -standardin uusinta versiota 2.0 ja sen Simple WFS -luokkaa. Simple WFS -luokkaan kuuluvat seuraavat operaatiot:

  • GetCapabilities, ks. luku 3.1
  • DescribeFeatureType, ks. luku 3.2
  • GetFeature-operaatio StoredQuery-toiminnoilla (eli vakioitu kysely -toiminnolla), ks. luku 3.3
  • ListStoredQueries, ks. luku 3.4
  • DescribeStoredQueries, ks. luku 3.5

Basic WFS -nimitystä käytetään luokasta, joka täyttää kaikki Simple WFS -luokan vaatimukset ja tukee lisäksi operaatioita:

  • GetPropertyValue, ks. luku 3.6
  • GetFeature-operaatio Query-toiminnolla (eli vapaa kysely -toiminnolla), ks.luvut 3.3 ja 4

Lisäksi suositellaan, että palvelut tukevat edellä mainittua GetFeature -operaatiota Query-toiminnolla seuraavasti:

  • Kohdeluokkia voi rajata (Query-elementin ’typeNames’-attribuutti)
  • Vapaaehtoisia ominaisuuksia voi valita (PropertyName-elementti)
  • Aluerajauksen voi tehdä suorakaiteena oletuskoordinaattijärjestelmässä (Filter/BBOX/Envelope -rakenne)

Edellä mainitun minimaalisen Basic WFS -luokan mukaisen toiminnallisuuden osoittava Filter_Capabilities -määrittely on esitetty luvun 4 esimerkissä 2 .

WFS-kyselyt toteutetaan joko HTTP GET -, HTTP POST - tai SOAP-protokollan mukaisina viesteinä. WFS-palvelun on siis oltava saavutettavissa tietystä URL-osoitteesta, johon WFS-kyselyviestit lähetetään. Kullakin WFS-palvelun operaatiolla voi olla myös oma URL-osoitteensa. Nämä osoitteet käyvät ilmi palvelun GetCapabilities-kyselyn vastauksesta. Jos asiakassovelluksen ja WFS-palvelun välinen kommunikaatio halutaan suojata, voidaan yhteyskäytäntönä soveltaa myös HTTPS-protokollaa.

WFS 2.0 -standardin mukaisissa WFS-operaatioissa käytetään neljää XML-nimiavaruutta:

http://www.opengis.net/wfs/2.0 : Web Feature Service -nimiavaruus

http://www.opengis.net/gml/3.2 : Geography Markup Language -nimiavaruus

http://www.opengis.net/fes/2.0 : OGC Filter Encoding -nimiavaruus

http://www.opengis.net/ows/1.1 : OWS Common -nimiavaruus

Yleensä viesteissä esiintyy myös palveluntarjoajan aineistosisältöönsä liittämiä nimiavaruuksia.

Jos kyselyissä käytetään muita nimiavaruuksia, on XML-kyselyiden yhteydessä nimiavaruudet ilmoitettava ”xmlns:prefix=namespace_uri” -notaation mukaisesti. HTTP GET -protokollan mukaisissa kyselyissä nimiavaruudet on ilmoitettava NAMESPACES-parametrin avulla.

HTTP GET -protokollan mukaiset kyselyt muodostuvat palvelimen URL-osoitteesta, jonka perään asiakassovellus liittää kyselyn parametrit parametrinimi-arvo-pareina (Key-Value-Pair eli lyhenteenä KVP). Parametrilista erotetaan palvelimen osoitteesta symbolilla ”?” ja kukin parametrinimi/arvo-pari erotetaan toisistaan symbolilla ”&”.

Esimerkki 1. GetCapabilities-kysely.

http://kohdepalvelu.org.fi/wfs?
SERVICE=WFS&ACCEPTVERSIONS=2.0.0&REQUEST=GetCapabilities

Parametrien nimissä suurten ja pienten kirjainten ero ei ole merkitsevä. Selkeyden vuoksi sekä standardissa että tässä dokumentissa kaikki parametrinimet kirjoitetaan suurilla kirjaimilla. Parametrien järjestyksellä kyselyviestissä ei ole merkitystä. Tietyt parametrit voivat saada arvokseen joukon yksittäisiä merkkijonoja (esim. parametrit TYPENAMES ja PROPERTYNAME), jolloin yksittäiset merkkijonot erotetaan toisistaan pilkkujen avulla. Jos parametrin arvona oleva yksittäinen merkkijono sisältää välilyöntimerkin, pilkun tai muita vastaavia erikoismerkkejä, on ne korvattava yleisten URL-koodaussääntöjen mukaisilla, koodatuilla muodoilla (esim. välilyönti = %20, pilkku = %2C). Tyhjä arvo parametrin arvona osoitetaan jättämällä kyseinen paikka tyhjäksi. Huomaa, että parametrien arvoissa suurten ja pienten kirjainten ero on merkitsevä.

HTTP POST -protokollan mukaisessa kyselyssä viesti lähetetään kohdeosoitteeseen XML tai SOAP -koodauksen mukaisessa muodossa. POST-protokollan käyttö on erityisesti tarpeen monimuotoisia Filter-lausekkeita sisältävien GetFeature-pyyntöjen osalta. SOAP-viesteissä palvelimelle lähetettävät kyselyt sijoitetaan XML-muodossa soap:Body-elementin sisään.

3.1.1 Yhteiset parametrit

WFS 2.0 -standardissa kaikille operaatioille (paitsi GetCapabilities-operaatio) yhteisiä parametreja ovat pakolliset parametrit SERVICE ja VERSION sekä vapaaehtoinen HANDLE-parametri. KVP-kyselyiden yhteydessä on lisäksi pakollista käyttää REQUEST-parametria ilmaisemaan kyselyn operaatiota. XML-muotoisissa kyselyissä kyselyn juurielementin nimi ilmaisee kyselyssä käytettävän operaation.

SERVICE

Tällä parametrilla asiakassovellus osoittaa, mitä palvelutyyppiä se on kutsumassa (vakioarvo: ”WFS”). XML-koodauksessa tämä ilmaistaan kyselyn juurielementtiin lisättävällä ”service”-attribuutilla.

VERSION

Tämä parametri osoittaa WFS-standardin version, jonka mukainen palvelimelle tehtävä kysely on. Palvelimen tukemat versiot ilmoitetaan GetCapabilities-kyselyn vastauksena palautettavissa metatiedoissa. XML-koodauksessa parametri ilmaistaan kyselyn juurielementtiin lisättävällä ”version”-attribuutilla.

WFS 2.0 -standardin mukaisissa kyselyissä käytettävä vakioarvo on ”2.0.0”. Parametria on pakollista käyttää kaikissa muissa kyselyissä paitsi GetCapabilities-kyselyssä, jossa tätä vastaava parametri on ACCEPTVERSIONS.

Suomen paikkatietojen yhteiskäyttöympäristössä käytettävät kyselypalvelujen WFS-versiot ovat 2.0.0 (ensisijainen) ja 1.1.0 (toistaiseksi hyväksyttävä).

HANDLE

Tämä parametri on WFS 2.0 -standardissa määritelty vapaaehtoinen parametri. Se on määritelty ainoastaan XML-koodausformaatille ja ilmaistaan kyselyn juurielementtiin liitettävällä handle-attribuutilla.

Tämän avulla asiakassovellus voi liittää helposti tunnistettavan nimen kyselyihin virheenkäsittelyä varten. Palvelimen palauttaman virheviestin ows:ExceptionText-elementin locator-attribuutin arvoksi annetaan virhetilanteen aiheuttaneen operaation tai toiminnon HANDLE-parametrin arvo.

REQUEST

Tämä parametri osoittaa palvelimelle lähetettävän operaation. XML-kyselyissä operaation ilmaisee kyselyviestin juurielementin nimi.

WFS 2.0 -standardin Simple WFS –luokan mukaisia mahdollisia parametrin arvoja ovat GetCapabilities, DescribeFeatureType, GetFeature, ListStoredQueries ja DescribeStoredQueries. Basic WFS -luokka sisältää edellä mainittujen kyselyjen lisäksi myös GetPropertyValue-kyselyn.

3.1.2 Palvelukohtaiset parametrit

WFS-standardin mukainen palvelu voi ottaa tarpeen mukaan käyttöön standardin ulkopuolisia palvelukohtaisia parametreja. Asiakassovellusten ei kuitenkaan voida olettaa tuntevan näiden parametrien käyttöä, joten palvelun tulee toimia standardissa määritellyllä tavalla, vaikka ao. parametreja ei kyselyssä olisikaan mukana. Palvelukohtaiset parametrit esitellään palvelun metatiedoissa.

Seuraavissa luvuissa kutakin WFS 2.0 -standardin Basic WFS -luokan kyselytyyppiä selostetaan tarkemmin.

3.2 Palvelun metatietojen kysely (GetCapabilities)

GetCapabilities-kyselyllä pyydetään palvelun metatietoja. Asiakassovelluksen täytyy selvittää palvelun keskeiset metatiedot ennen kuin se pystyy muodostamaan järkevän kohdekyselyn. Tällaisia perustietoja ovat mm. palvelimen tarjoama tietosisältö sekä palvelimen tukemat koordinaattijärjestelmät ja koodaustavat. Nämä tiedot löytyvät GetCapabilities-kyselyn avulla. WFS-palvelimien on tuettava GetCapabilities-kyselyn KVP-koodausmuotoa. Palvelimet voivat tukea halutessaan myös XML-pohjaista kyselymuotoa.

Esimerkki 2. Yksinkertainen GetCapabilities-kysely KVP-muodossa

http://kohdepalvelu.org.fi/wfs?SERVICE=WFS&REQUEST=GetCapabilities

Kysely koostuu muiden WFS GET -kyselyjen tapaan alkuosasta, joka yksilöi palvelun osoitteen (URL). Kysymysmerkin jäljessä tulee joukko parametreja, jotka erotetaan toisistaan ’&’-merkin avulla ja jotka osoittavat yksityiskohtaisesti kyselyn merkityksen. Kuten edellä on selostettu, nämä parametrit osoittavat, mille palvelulle kysely kohdistetaan (SERVICE) ja mikä standardin operaatio on kyseessä (REQUEST). Parametrien arvoissa suurten ja pienten kirjainten ero on merkitsevä, joten parametrin arvo tulee antaa täsmällisesti muodossa ”GetCapabilities”. Palvelun tyyppi on ilmoitettava kyselyissä, koska sama verkkoosoite voi tarjota metatietoja moneen samalla palvelimella toimivaan palvelutyyppiin liittyen.

Esimerkki 3. GetCapabilities-kysely XML-muodossa.

<?xml version="1.0" ?>

<GetCapabilities service="WFS" version="2.0.0"

xmlns=http://www.opengis.net/wfs/2.0

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.opengis.net/wfs/2.0

http://schemas.opengis.net/wfs/2.0/wfs.xsd" />

Edellä mainittujen parametrien ohella GetCapabilities-kysely tuntee vapaaehtoiset parametrit

  • ACCEPTFORMATS,
  • UPDATESEQUENCE,
  • SECTIONS ja
  • ACCEPTVERSIONS.

ACCEPTFORMATS-parametrin avulla asiakassovellus voi ilmoittaa tukemansa vastausformaatit (pakollinen oletusarvo on ”text/xml”, mutta palvelu voi tukea myös muita formaatteja).

UPDATESEQUENCE-parametrin avulla asiakassovellus voi pyytää metatietoja palautettavaksi vain siinä tapauksessa, että ne ovat muuttuneet edellisen kyselyn jälkeen.

SECTIONS-parametrin avulla asiakassovellus voi pyytää vain tietyt osiot palvelun metadatatiedoista. Sallitut arvot ovat serviceIdentification, serviceProvider, operationsMetadata, contents ja all. Oletusarvona palautetaan kaikki metadatatiedot.

ACCEPTVERSIONS-parametrin avulla asiakassovellus voi ilmoittaa tukemansa WFS-standardin versiot. Oletuksena palautetaan viimeisin palvelimen tukema versio.

WFS-palvelun GetCapabilities-kyselyn vastausviesti on oletusarvoisesti XML-koodattu tietorakenne, joka sisältää palvelun tärkeimmät metatiedot. Tämän XML-viestin rakenne on tarkasti määritelty WFS-standardissa . Version 2.0 mukainen rakenne on määritelty XML Schema -tiedostossa, joka löytyy osoitteesta:

http://schemas.opengis.net/wfs/2.0/wfs.xsd

GetCapabilities-kyselyn vastausviestissä annetaan metatiedot liittyen mm. palvelun identifiointiin, palvelun tarjoajan tietoihin, palvelun tukemiin operaatioihin, palvelun tukemiin rajausehtoihin sekä tarjolla olevaan tietosisältöön (kohdeluokkien tiedot). Jokainen kohdeluokka kuvataan omassa FeatureType -elementissään. Kuhunkin kohdeluokkaan liittyen voidaan esitellä nimi (Name), otsikko (Title), tiivistelmä (Abstract), avainsanoja (Keywords), oletuskoordinaattijärjestelmä (DefaultCRS), mahdolliset muut tuetut koordinaattijärjestelmät (OtherCRS), saatavilla olevien vastausformaattien MIME-tyypit (OutputFormats), kohdeluokan sijainnillinen kattavuusalue WGS84-koordinaattijärjestelmässä astemittoina ilmoitettuna (WGS84BoundingBox), viittaus kohdeluokkaa kuvaaviin metatietoihin (MetadataURL) sekä mahdollisia palvelukohtaisia elementtejä (ExtendedDescription).

3.3 Kohdeluokan tietomallin kysely (DescribeFeatureType)

Asiakassovellus voi selvittää WFS-palvelun tarjoaman paikkatietotuotteen tietorakenteen DescribeFeatureType-kyselyn avulla, joka noutaa palvelusta kyselyssä lueteltujen kohdeluokkien tietomallikuvaukset. Oletusarvoisesti palvelu palauttaa tietomallit XML Schema -muodossa GML-sovellusskeemana. Palvelu voi ilmaista valmiutensa myös muiden tietomallitekniikoiden käyttöön GetCapabilities-kyselyn vastausviestissä. Asiakassovellus voi valita näistä DescribeFeatureType-kyselyn vapaaehtoisella OUTPUTFORMAT-parametrilla haluamansa skeemakielen käytettäväksi vastauksessa. GML-version 3.2.1 mukainen sovellusskeema osoitetaan arvolla

’application/gml+xml; version=3.2’Vapaaehtoisen TYPENAMES-parametrin avulla on mahdollista määrittää ne kohdeluokat, joiden kuvaukset halutaan vastausviestinä.

Esimerkki 4. Kohdeluokan ”dr:LiikenneElementti” tietomallin kysely KVP-muodossa.

http://kohdepalvelu.org.fi/wfs?
SERVICE=WFS&VERSION=2.0.0&REQUEST=DescribeFeatureType& TYPENAMES=dr:LiikenneElementti&NAMESPACES=xmlns(dr=http://www.tiehallinto.fi/DigiRoad)

XML-muodossa DescribeFeatureType-kyselyt ilmaistaan wfs:DescribeFeatureType-elementillä, jonka attribuutilla outputFormat osoitetaan, missä muodossa vastaus palautetaan, ja jonka TypeName-alielementeillä ilmaistaan haettavien kohdeluokkien nimet.

Esimerkki 5. Kohdeluokan ”dr:LiikenneElementti” tietomallin kysely XML-muodossa.

<?xml version="1.0" ?>

<DescribeFeatureType version="2.0.0" service="WFS"

outputFormat="application/gml+xml; version=3.2"

xmlns="http://www.opengis.net/wfs/2.0"

xmlns:dr="http://www.tiehallinto.fi/DigiRoad"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.opengis.net/wfs/2.0

http://schemas.opengis.net/wfs/2.0/wfs.xsd">

<TypeName>dr:LiikenneElementti</TypeName>

</DescribeFeatureType>

3.4 Kohdekysely (GetFeature)

Keskeisin WFS-palvelun kyselyistä on GetFeature-kysely, jolla asiakassovellus voi pyytää palvelusta haluamansa paikkatietosisällön. Operaation nimen mukaisesti paikkatietoja käsitellään kohdemuodossa (Feature). Jos asiakassovelluksen tekijä ei tunne palvelun tarjoamaa paikkatietoa, hän voi selvittää palvelun tietosisällön yksityiskohdat edellä esitellyillä metatieto- ja tietomallikyselyillä.

Koska WFS-palvelu palauttaa oletusarvoisesti paikkatiedot GML-muodossa, näkyy GML:n mukainen paikka­tietojen mallinnustapa jo GetFeature-kyselyn rakenteessa. Yleisen ISO-paikkatietostandardoinnin mukaisesti GML käsittelee paikkatietoja kohteina, joiden katsotaan muodostuvan joukosta ominaisuuksia. XML-pohjaisessa implementaatiossa kohteet esiintyvät XML-elementteinä ja kohteen ominaisuudet vuorostaan tämän elementin lapsielementteinä. Kohteita vastaavat elementit kirjoitetaan isolla alkukirjaimella (”LiikenneElementti”) ja ominaisuuksia vastaavat pienellä alkukirjaimella (”vaylaTyyppi”). On huomattava, että kohteen sijaintia käsitellään myös ominaisuutena. Näin kohteen sijaintia vastaa yksi tai useampi kohde-elementin lapsielementti.

KVP-muotoisen GetFeature-kyselyn parametrejä ovat

  • pakollisten SERVICE, VERSION ja REQUEST-parametrien lisäksi
  • vapaaehtoinen NAMESPACES-parametri sekä
  • ns. esitysparametrit STARTINDEX, COUNT, OUTPUTFORMAT ja RESULTTYPE,
  • ns. selvitysparametrit RESOLVE, RESOLVEDEPTH ja RESOLVETIMEOUT,
  • vapaisiin kyselyihin liittyvät parametrit sekä
  • vakioituihin kyselyihin liittyvät parametrit.

3.4.1 Esitysparametrit (Standard presentation parameters)

WFS 2.0 -standardissa valinnaisesti käytettävien esitysparametrien avulla määritetään kyselyjen vastauksien esitysmuoto. Esitysparametreja voidaan käyttää GetFeature- ja GetPropertyValue -operaatioiden yhteydessä.

STARTINDEX-parametrin avulla ilmaistaan kyselyn vastauksena palautettavan tulosjoukon sisäinen indeksinumero, josta alkaen tulokset liitetään vastausdokumenttiin. Oletusarvona parametrille käytetään arvoa ”0”, joka viittaa joukon ensimmäiseen kohteeseen.

COUNT-parametria voidaan käyttää rajoittamaan vastausviestiin sisällytettävien kohteiden tai ominaisuusarvojen määrää. Parametrille ei ole asetettu oletusarvoa. Jos parametria ei ole mukana kyselyssä, palautetaan enintään palvelimelle asetettu oletusmäärä kohteita tai ominaisuusarvoja. Palvelimelle asetettu parametrin oletusarvo kerrotaan GetCapabilities-vastausviestin ”CountDefault”-rajoitteessa. WFS1.1.0 -standardissa COUNT-parametria vastaava parametri on MAXFEATURES.

RESULTTYPE-parametri määrittää, millä tavalla WFS-palvelu vastaa GetFeature- ja GetPropertyValue-operaatioihin). Parametri voi saada kaksi eri arvoa. ”results”-arvolla palvelin palauttaa kokonaisen vastausdokumentin, joka sisältää kaikki vastaukseen sisältyvät kohteet. ”hits”-arvolla palvelin palauttaa tyhjän vastausdokumentin, joka sisältää ainoastaan kyselyä vastaavien kohteiden kokonaismäärän, eikä itse kohteita liitetä lainkaan mukaan vastausviestiin. Parametrin oletusarvona käytetään ”results”-arvoa.

OUTPUTFORMAT-parametrin avulla ilmoitetaan palvelimen palauttamien vastausviestien koodausformaatti. Parametrin oletusarvo WFS 2.0 -standardia käyttävissä WFS-palveluissa on ”application/gml+xml; version=3.2”. Muut WFS-palveluiden tukemat vaihtoehdot löytyvät GetCapabilities-operaation vastaus¬viestistä.

XML-koodauksessa esitysparametrit liitetään kyselyn juurielementtiin parametreja vastaavilla startIndex, count, resultType, ja outputFormat-attribuuteilla.

3.4.2 Selvitysparametrit (Standard resolve parameters)

WFS 2.0 -standardissa vapaaehtoisesti käytettävien selvitysparametrien avulla voidaan selvittää paikallisia (local) tai ulkoisia (remote) resurssiviittauksia (xlink:href -viittauksina annettuja ominaisuuksien arvoja). WFS 2.0 -standardin mukaisten palvelimien on pakollista täyttää paikallisten selvitysparametrien käytölle asetetut vaatimukset ja halutessaan ne voivat toteuttaa myös ulkoisten resurssien selvittämisparametrit. Palvelimien tukema ulkoisten resurssien selvittäminen ilmaistaan GetCapabilities-vastausdokumentin ImplementsRemoteResolve-rajoitteessa. Selvitysparametreja voidaan käyttää GetFeature ja GetPropertyValue -operaatioiden yhteydessä.

RESOLVE-parametri on vapaaehtoinen parametri, jonka avulla määritetään, mitkä paikalliset ja ulkoiset resurssiviittaukset selvitetään operaatiossa. Mahdolliset arvot parametrille ovat ”local”, ”remote”, ”all” ja ”none”. Oletusarvona käytetään ”none”-arvoa.

RESOLVEDEPTH-parametri on vapaaehtoinen parametri, joka määrittää, kuinka montaa peräkkäistä resurssiviittausta seurataan ominaisuuden arvoa selvitettäessä. Parametrin arvo on kokonaisluku, joka on välillä [0-*]. Arvo: ”*” ilmaisee sen, että kaikki viittaukset selvitetään. Parametria voidaan käyttää vain RESOLVE-parametrin käytön yhteydessä, silloin kun tämän arvona ei ole ”none”.

RESOLVETIMEOUT-parametri on vapaaehtoinen parametri, jonka avulla määritetään aika, jonka palvelin käyttää vastausten odottamiseen selvittäessään resurssiviittauksia. Parametrin arvo on positiivinen kokonaisluku, jolla ilmaistaan vastausviestin odotusaikaa sekunneissa. Oletusarvona käytetään palvelimelle asetettua oletusodotusaikaa, joka ilmaistaan GetCapabilities-vastausviestin ResolveTimeoutDefault-rajoitteessa. Parametri toimii ainoastaan kyselyissä, joissa RESOLVE-parametrin arvona on jokin muu kuin ”none”.

XML-koodauksessa selvitysparametrit ilmaistaan juurielementtiin lisättävillä ”resolve”, ”resolveDepth” ja ”resolveTimeout” -attribuuteilla.

3.4.3 Kyselylauseet (Query expressions)

WFS 2.0 -standardissa määriteltyjä kyselylauseita ovat vapaat kyselylauseet sekä vakioidut kyselylauseet. Kyselylauseiden avulla on mahdollista rajata vastauksena annettavaa kohdejoukkoa käyttämällä kyselyiden yhteydessä erilaisia suodatuslauseita. Tällöin palvelimen sisältämästä tietoaineistoista haetaan vain suodatuslauseen täyttävät kohteet. Vapaissa kyselyissä asiakassovellus voi asettaa vapaasti kyselykohtaisia rajaus­ehtoja. Vakioidut kyselyt ovat palvelimelle kiinteästi määriteltyjä kyselyjä (joilla voi kuitenkin olla dynaa­misesti asetettavia parametreja).

3.4.4 Vapaat kyselylauseet

Vapaita kyselylauseita voidaan käyttää GetFeature- ja GetPropertyValue -kyselyiden yhteydessä. Vapaat kyselylauseet koostuvat pakollisen typeNames-parametrin lisäksi vapaaehtoisista kohdetyypin ominaisuuksien valintarakenteesta, kohteiden valitsemisrakenteesta sekä kohteiden järjestämisrakenteesta. Yksittäinen WFS-operaatio voi sisältää useita vapaita kyselylauseita. KVP-koodauksessa yksittäiset vapaat kyselylauseet on sijoitettava sulkeiden sisään.

KVP-muodossa vapaat kyselylauseet koostuvat seuraavista parametreista ja rakenteista:

TYPENAMES on vapaissa kyselyissä pakollinen parametri, jonka avulla määritetään kysyttävien kohdetyyppien nimet. Parametri voidaan kuitenkin jättää pois kyselyistä RESOURCEID-parametria käytettäessä.

ALIASES on vapaaehtoinen parametri, jonka avulla TYPENAMES-parametrilla määritellyille kohdetyypeille voidaan määrittää vaihtoehtoisia nimiä käytettäväksi kyselyn muissa osissa. Parametrin arvona annettavien nimien määrän tulee vastata kyselyn TYPENAMES-parametrin arvojen määrää.

SRSNAME on vapaaehtoinen parametri, jonka avulla voidaan määrittää koordinaattijärjestelmä, jossa palautettavien kohteiden geometriat esitetään. Mahdollisten koordinaattijärjestelmien tunnisteet on listattu GetCapabilities-vastausdokumentin wfs:DefaultCRS ja wfs:OtherCRS -elementeissä. Oletuksena käytetään wfs:DefaultCRS-elementissä olevaa arvoa.

Vapaaehtoisen kohdetyypin ominaisuuksien valintarakenteen avulla voidaan määrittää ne haettavan kohdeluokan skeemassa esiintyvät valinnaiset ominaisuudet, jotka halutaan mukaan vastausviestiin. Kyseisessä rakenteessa voidaan antaa vapaaehtoinen parametri PROPERTYNAME, joka sisältää luettelon vastaus­viestiin sisällytettävistä kohdeluokan valinnaisista ominaisuuksista sekä aiemmin määritellyt selvitysparametrit RESOLVE, RESOLVEDEPTH sekä RESOLVETIMEOUT. PROPERTYNAME-parametria käytettäessä kannattaa vastaukseen sisällytettävät ominaisuudet luetella samassa järjestyksessä, kuin ne esiintyvät kohteen määrittelevässä skeemadokumentissa.

Vapaaehtoisessa kohteiden valitsemisrakenteessa määritetään ehdot, joiden perusteella kohteet valitaan mukaan vastausdokumenttiin. KVP-koodauksessa valintalause koodataan joko FILTER, RESOURCEID tai BBOX-parametrilla.

FILTER on vapaaehtoinen parametri (ks. OGC 09-026r1 Filter Encoding [3]).

RESOURCEID on vapaaehtoinen parametri (ks. OGC 09-026r1 Filter Encoding).

BBOX-parametri on vapaaehtoinen parametri, jonka avulla ilmaistaan alue, jolle kysely kohdistetaan. WFS-1.1.0-standardissa oletusarvo tämän parametrin yhteydessä sovellettavalle koordinaattijärjestelmälle on WGS84 (EPSG:4326). Yleisesti parametriin kannattaa KVP-koodauksessa aina liittää tieto koordinaattijärjestelmästä (alakulman koordinaatit, yläkulman koordinaatit ja käytetty koordinaattijärjestelmä). Suositeltava esitysmuoto koordinaattijärjestelmän EPSG-koodille on ns. URN-muoto.

Esimerkki 6. Koordinaattijärjestelmän tunnus URN-muodossa:

urn:ogc:def:crs:EPSG::<EPSG-koodi>

Esimerkki 7. Valittavien kohteiden aluerajaustiedon määrittävä BBOX-parametri tietyssä koordinaattijärjestelmässä:

BBOX=378000,6682000,379000,6683000,urn:ogc:def:crs:EPSG::3067

SORTBY-parametri on vapaaehtoinen parametri, jonka avulla vastausviestissä esiintyvät kohteet voidaan järjestää. Järjestäminen voidaan suorittaa kerrallaan vain yksittäiselle vapaalle kyselylauseelle.

XML-koodauksessa TYPENAMES-, ALIASES- ja SRSNAME -parametrit määritellään ”wfs:Query”-elementiin liitettävillä attribuuteilla typeNames, aliases ja srsName, kohdetyypin ominaisuuksien valinta tehdään wfs:PropertyName-elementillä. Kohteiden valitsemisrakenne määritellään fes:Filter-elementissä (ks. OGC 09-026r1). SORTBY-parametri määritellään fes:sortBy-elementillä.

3.4.5 Vakioidut kyselylauseet

Vakioidut kyselylauseet ovat palvelimelle tallennettuja kyselyitä, jotka voidaan suorittaa niiden tunnisteen perusteella halutuilla parametriarvoilla. Vakioituja kyselylauseita on mahdollista käyttää GetFeature ja GetPropertyValue -kyselyiden yhteydessä. Kaikkien WFS 2.0 -standardin mukaisten palvelimien tulee tukea vakioitujen kyselyiden luettelointia, kuvailua sekä suorittamista. Lisäksi kaikkien palvelimien tulee oletuksena toteuttaa vakioitu kysely ”GetFeatureById”, joka palauttaa kyselyssä annettua tunnistetta vastaavan kohteen.

Vakioiduissa kyselylauseissa on KVP-kyselyissä pakollinen parametri STOREDQUERY_ID, joka määrittää vakioidun kyselyn tunnisteen. Vakioitujen kyselyjen suorittamisen yhteydessä käytettävät parametrit määritellään parametrinimi/arvo-pareina.

Vakioidut kyselylauseet määritellään XML-kyselyissä wfs:StoredQuery-elementeissä. STOREDQUERY_ID-parametri ilmaistaan wfs:StoredQuery-elementin id-attribuuttina. XML-koodauksessa kyselylle annettavat parametrit ilmaistaan wfs:Parameter-elementeillä. Parametrin nimi ilmaistaan kyseisen elementin name-attribuutissa ja arvo elementin sisältönä.

KVP-pohjaisissa GetFeature-kyselyissä voidaan suorittaa kerralla vain yksi vakioitu kysely. Useita vapaita kyselylauseita voi kuitenkin sisällyttää yhteen kyselyyn. Rajoituksena on se, että vapaa kyselylause ja vakioitu kyselylause eivät voi esiintyä samassa GetFeature-kyselyssä.

GetFeature-kyselyiden OUTPUTFORMAT-parametrin oletusarvo on ”application/gml+xml; version=3.2” . Jos palvelin tukee muita tulosformaatteja, ne selviävät GetCapabilities-kyselyn vastausdokumentista. Palvelun palauttaman paikkatietosisällön tulee olla validia suhteessa siihen tietomalliin, jonka asiakas­sovellus saa vastauksena tietomallikyselystä samaan kohdeluokkaan liittyen.

Esimerkki 8. GetFeature-kysely KVP-muodossa.

http://kohdepalvelu.org.fi/wfs? SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&TYPENAMES=dr:LiikenneElementti &NAMESPACES=xmlns(dr=http://www.tiehallinto.fi/DigiRoad)

Yllä olevassa kyselyssä annetaan aiempien esimerkkien mukaisesti ensin palvelun URL-osoite, jota seuraavat palvelulle annettavat parametrinimi/arvo-parit. TYPENAMES-parametrin sijasta vapaissa kyselyissä on mahdollista käyttää myös RESOURCEID-parametria.

XML-koodauksen mukainen GetFeature-kysely koostuu wfs:GetFeature-elementistä, joka voi sisältää useita wfs:Query tai wfs:StoredQuery elementtejä, joista kullakin voidaan pyytää yhtä kohdeluokkaa sisällytettäväksi palveluvastaukseen.

Yksittäisessä Query-elementissä määritellään, mihin kohdeluokkaan ko. kysely kohdistuu (attribuutilla ”typeNames”). Lisäksi elementissä kerrotaan, mitä ominaisuuksia kohdeluokasta halutaan valita mukaan palveluvastaukseen (elementillä ”PropertyName”). Palvelun tulee kuitenkin aina liittää mukaan vastaukseen kaikki ne ominaisuudet, jotka on vastaavassa tietomallissa määritelty ko. kohdeluokalle pakollisiksi. Näin ollen PropertyName-elementillä voidaan osoittaa vastaukseen sisällyttäminen erityisesti valinnaisten ominaisuuksien osalta.

Vapaaehtoisella ”srsName”-attribuutilla voidaan osoittaa haluttu koordinaattijärjestelmä. Tämän tulee olla jokin palvelimen metatietokyselyn vastauksessaan ilmoittamista tuetuista koordinaattijärjestelmistä.

GetFeature-kyselyn vastaukseen sisällytettävää kohdejoukkoa voidaan rajata kunkin Query-elementin sisään sijoitettavalla Filter-elementillä. Filter-elementti on määritelty erillisessä OGC standardissa (OGC 09-026r1 Filter Encoding) . Filter-elementin rakenne käydään läpi tässä suosituksessa kappaleessa 4 .

Vastauksena kyselyyn palvelun tulee palauttaa valitut kohteet (tai niiden lukumäärän, kun RESULTTYPE=”hits”) siinä muodossa, joka kyselyn outputFormat-attribuutilla on osoitettu. Vastauksen juurielementtinä on oltava WFS-nimiavaruudessa esitelty elementti ”wfs:FeatureCollection”. Jos vastaus on GML-muodossa, on juurielementin sisällettävä viittaus vastaavaan GML- sovellusskeemaan (”schemaLocation” attribuutilla), niin että tietosisältö voidaan validoida. Jos kyselylausetta vastaavia kohteita ei ole, palvelu palauttaa tyhjän wfs:FeatureCollection-elementin.

Esimerkki 9. GetFeature-kysely XML-muodossa, joka valitsee kohdeluokasta ”dr:LiikenneElementti” ominaisuudet ”dr:vaylaTyyppi” ja ”dr:keskilinjaGeometria”.

<?xml version="1.0" ?>

<GetFeature

version=”2.0.0”

service="WFS"

handle="Query01"

xmlns="http://www.opengis.net/wfs /2.0"

xmlns:fes="http://www.opengis.org/fes/2.0"

xmlns:gml="http://www.opengis.net/gml 3.2"

xmlns:dr="http://www.tiehallinto.fi/DigiRoad"

xmlns:xsi="http://www.w3.org/2001/XMLSchema -instance"

xsi:schemaLocation="http://www.opengis.net/wfs /2.0

http://schemas.opengis.net/wfs/2.0/ wfs.xsd">

<Query typeName s="dr:LiikenneElementti">

<wfs:PropertyName>dr:vaylaTyyppi</wfs:PropertyName>

<wfs:PropertyName>dr:keskilinjaGeometria</wfs:PropertyName>

<fes:Filter>

<fes:BBOX>

<fes:PropertyName>dr:keskilinjaGeometria</fes:PropertyName>

<gml:Envelope srsName="urn:ogc:def:crs:EPSG::3067">

<gml:lowerCorner>378000 6682000</gml:lowerCorner>

<gml:upperCorner>379000 6683000< /gml:upperCorner>

</gml:Envelope>

</fes: BBOX>

</fes:Filter>

</Query>

</GetFeature>

Esimerkki 10. Palvelimen palauttama vastaus esimerkissä 9 esitettyyn kyselyyn.

<?xml version="1.0" ?>

<wfs:FeatureCollection

xmlns="http://www.tiehallinto.fi/DigiRoad"

xmlns:wfs="http://www.opengis.net/wfs /2.0"

xmlns:gml="http://www.opengis.net/gml /3.2"

xmlns:xsi="http://www.w3.org/2001/XMLSchema -instance"

xsi:schemaLocation="http://www.tiehallinto.fi/DigiRoad DigiRoad.xsd

http://www.opengis.net/wfs /2.0 http://schemas.opengis.net/wfs/2.0/ wfs.xsd">

<gml:boundedBy>

<gml:Envelope srsName=" urn:ogc:def:crs:EPSG::3067">

<gml:lowerCorner>378000 6682000</gml:lowerCorner>

<gml:upperCorner>379000 6683000</gml:upperCorner>

</gml:Envelope>

</gml:boundedBy>

<gml:featureMember>

<LiikenneElementti gml:id="LiikenneElementti.450">

<vaylaTyyppi>katu</vaylaTyyppi>

<keskilinjaGeometria>

<gml:LineString>

<gml:posList>10 10</gml:posList>

</gml:LineString>

</keskilinjaGeometria>

</LiikenneElementti>

</gml:featureMember>

</wfs:FeatureCollection>

Esimerkki 11. StoredQuery-kyselyn suorittaminen GetFeature-operaation avulla. (ID-parametrin arvo välittyy vakioidulle kyselylle, joka on identifioitu parametrilla STOREDQUERY_ID).

http://kohdepalvelu.org.fi/wfs? SERVICE=WFS&VERSION=2.0.0&REQUEST=GetFeature&STOREDQUERY_ID=urn:ogc:def:query:OGC-WFS::GetFeatureById&ID=LiikenneElementti.450

Esimerkki 12. StoredQuery-kysely XML-muodossa.

<?xml version="1.0" ?>

<wfs:GetFeature service="WFS" version="2.0.0"

xmlns:wfs=”http://www.opengis.net/wfs/2.0”

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.opengis.net/wfs/2.0

http://schemas.opengis.net/wfs/2.0/ wfs.xsd">

<wfs:StoredQuery id="urn:ogc:def:query:OGC-WFS::GetFeatureById">

<wfs:Parameter name= " ID " > LiikenneElementti.450</wfs:Parameter>

</wfs:StoredQuery>

</wfs:GetFeature>

Esimerkki 13. GetFeature-kysely BBOX-rajauksella.

<?xml version="1.0"?>

<wfs:GetFeature service="WFS" version="2.0.0"

xmlns:wfs="http://www.opengis.net/wfs/2.0"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.opengis.net/wfs/2.0

http://schemas.opengis.net/wfs/2.0/wfs.xsd">

<wfs:StoredQuery id="StoredBBOXQuery">

<wfs:Parameter name="BBOX">

<gml:Envelope srsName="urn:ogc:def:crs:EPSG::3067">

<gml:lowerCorner>378000 6682000</gml:lowerCorner>

<gml:upperCorner>379000 6683000</gml:upperCorner>

</gml:Envelope>

</wfs:Parameter>

</wfs:StoredQuery>

</wfs:GetFeature>

3.5 Vakioitujen kyselyjen luettelo (ListStoredQueries)

WFS 2.0 -standardiin kuuluvan ListStoredQueries-operaation avulla voidaan hakea luettelo palvelimelle tallennetuista kyselyistä. ListStoredQueries-operaation parametreihin kuuluvat pakolliset parametrit SERVICE, VERSION ja REQUEST sekä vapaaehtoinen HANDLE-parametri.

Esimerkki 14. ListStoredQueries-kysely KVP-muodossa.

http://kohdepalvelu.org.fi/wfs?SERVICE=WFS&VERSION=2.0.0&REQUEST=ListStoredQueries

Esimerkki 15. ListStoredQueries-kysely XML-muodossa.

<?xml version="1.0" ?>

<ListStoredQueries service=”WFS” version=”2.0.0”

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.opengis.net/wfs/2.0

http://schemas.opengis.net/wfs/2.0/ wfs.xsd">

</ListStoredQueries>

3.6 Vakioitujen kyselyjen kuvaus (DescribeStoredQueries)

DescribeStoredQueries-operaation avulla voidaan hakea yksityiskohtaiset metatiedot halutuista vakioiduista kyselyistä. Operaation parametrit ovat pakolliset parametrit SERVICE, VERSION, REQUEST, vapaaehtoinen HANDLE-parametri sekä vapaaehtoinen STOREDQUERY_ID-parametri.

STOREDQUERY_ID-parametrin avulla määritetään pilkuilla erotettuna ne vakioidut kyselyt, joista halutaan hakea tarkemmat metatiedot. Jos parametri jätetään tyhjäksi, palvelimelta haetaan oletuksena kaikkien vakioitujen kyselyiden tiedot.

Esimerkki 16. DescribeStoredQueries-kysely KVP-muodossa.

http://kohdepalvelu.org.fi/wfs? SERVICE=WFS&VERSION=2.0.0&REQUEST=DescribeStoredQueries&STOREDQUERY_ID= urn:ogc:def:query:OGC-WFS::GetFeatureById

Esimerkki 17. DescribeStoredQueries-kysely XML-muodossa.

<?xml version="1.0" ?>

<DescribeStoredQueries service= " WFS " version= " 2.0.0 "

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.opengis.net/wfs/2.0

http://schemas.opengis.net/wfs/2.0/ wfs.xsd"

<StoredQueryId>

urn:ogc:def:query:OGC-WFS::GetFeatureById

</StoredQueryId>

</DescribeStoredQueries>

3.7 Ominaisuuksien kysely (GetPropertyValue)

WFS 2.0 -standardiin kuuluvalla GetPropertyValue-operaatiolla voidaan pyytää kyselylauseessa määritetyn kohdejoukon ominaisuusarvon tai kompleksin ominaisuusarvon osan palauttamista palvelimelta. Kyselylauseessa käsiteltävät kohteet voidaan rajata joko vapaiden kyselylauseiden tai vakioitujen kyselylauseiden avulla (ks. luku 3.3).

GetPropertyValue-operaatio sisältää pakollisten SERVICE-, VERSION- ja REQUEST -parametrien sekä vapaaehtoisen HANDLE-parametrin lisäksi luvussa 3.3 esitellyt esitysparametrit RESULTTYPE, OUTPUTFORMAT, COUNT ja STARTINDEX, selvitysparametrit RESOLVE, RESOLVEDEPTH ja RESOLVETIMEOUT, vapaiden kyselylauseiden parametrit sekä vakioitujen kyselylauseiden parametrit. Näiden parametrien lisäksi GetPropertyValue-operaatio sisältää myös pakollisen VALUEREFERENCE-parametrin (XPATH-lause, joka ilmoittaa vastausviestiin liitettävän kohteen ominaisuuselementin).

Esimerkki 18. GetPropertyValue-kysely KVP-muodossa.

http://kohdepalvelu.org.fi/wfs? SERVICE=WFS&VERSION=2.0.0&REQUEST=GetPropertyValue&TYPENAMES=dr:LiikenneElementti&NAMESPACES= xmlns(dr=http://www.tiehallinto.fi/DigiRoad)

&VALUEREFERENCE=dr:keskilinjaGeometria

Esimerkki 19. GetPropertyValue-kysely XML-muodossa.

<?xml version="1.0" ?>

<GetPropertyValue service="WFS" version="2.0.0"

valueReference=”dr:keskilinjaGeometria” outputFormat="application/gml+xml;

version=3.2"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.opengis.net/wfs/2.0

http://schemas.opengis.net/wfs/2.0/wfs.xsd"

xmlns:dr="http://www.tiehallinto.fi/DigiRoad"

xmlns:gml="http://www.opengis.net/gml/3.2 " >

<Query typeNames=" dr:LiikenneElementti ">

</Query>

</GetPropertyValue>

4 Kyselypalvelun rajauskieli

Kyselypalvelun kohdekyselyllä (GetFeature) voidaan valita halutut kohdeluokat ja kertoa, mitä ominaisuuksia kohdeluokista halutaan sisällyttää mukaan vastaukseen. Jos kyselyyn ei liitetä lainkaan rajausehtoa, oletetaan palvelun palauttavan kaikki ko. kohdeluokkaan kuuluvat kohteet. Interaktiivisiin kyselyihin pohjautuvissa web-palveluissa tätä ei yleensä haluta. Tuloksen rajaamiseen on kehitetty Filter Encoding -niminen XML-pohjainen SQL-lausekkeen WHERE-osion toiminnallisuutta vastaava rajauskieli (ks. OGC 09-026r1 ).

Rajauskieli määrittelee operaattoreita, jotka jakautuvat viiteen pääryhmään:

  • sijainnillisiin operaattoreihin (spatial operators),
  • ajallisiin operaattoreihin (temporal operators),
  • vertailuoperaattoreihin (comparison operators),
  • loogisiin operaattoreihin (logical operators) sekä
  • laajennosoperaattoreihin (extension operators).

Yksittäisiä sijainnillisia ja vertailuoperaattoreita voidaan yhdistellä kokonaisuuksiksi loogisten operaatto­reiden (And, Or, Not) avulla. Kohteet, joille ehto tuottaa arvon TRUE, sisällytetään mukaan tulosjoukkoon.

Standardi sisältää seuraavat sijainnilliset operaattorit:

  • Equals
  • Disjoint
  • Touches
  • Within
  • Overlaps
  • Crosses
  • Intersects
  • Contains
  • DWithin
  • Beyond
  • BBOX

Operaattorien merkitys on selostettu OGC:n standardissa Simple Feature Specification for SQL . Yleensä sijainnillisten operaattorien avulla testataan osoitetun sijaintiominaisuuden suhdetta annettuun vertailuarvoon, joka annetaan GML:n mukaisena geometriaobjektina.

Filter Encoding -standardin vertailuoperaattorit ja niiden merkitys käy ilmi seuraavasta taulukosta:

PropertyIsEqualTop =

PropertyIsNotEqualTop !=

PropertyIsLessThanp <

PropertyIsGreaterThanp >

PropertyIsLessThanOrEqualTop <=

PropertyIsGreaterThanOrEqualTop >=

PropertyIsLikep = ?* (jokeri)

PropertyIsNullp on tyhjä

PropertyIsBetween<= p <=

Esimerkki 20. Query-elementti, jolla valitaan kaikki ”dr:LiikenneElementti”-kohdeluokan kohteet, joiden ”dr:vaylaTyyppi”-ominaisuuden arvona on ”katu”.

<wfs:Query typeNames="dr:LiikenneElementti">

< fes:Filter>

< fes:PropertyIsEqualTo>

< fes:PropertyName>dr:vaylaTyyppi</fes:PropertyName>

<fes:Literal>katu</fes:Literal>

</fes:PropertyIsEqualTo>

</ fes:Filter>

</wfs:Query>

Loogiset operaattorit (And, Or, Not) toimivat yleisesti sovellettujen periaatteiden mukaisesti; ts. jos And-operaattorilla yhdistetyt ehdot kaikki tuottavat tulokseksi arvon TRUE, myös And palauttaa arvon TRUE. Jos yksikin Or-operaattorilla yhdistetyistä ehdoista tuottaa arvoksi TRUE on Or-operaattorinkin palautusarvo TRUE. Not-operaattori kääntää sisältämänsä ehdon totuusarvon päinvastaiseksi.

Esimerkki 21. Query-elementti, jolla valitaan kaikki ”dr:LiikenneElementti”-kohdetyypin kohteet, joiden dr:vaylaTyyppi-ominaisuuden arvona on ”katu” ja jotka sijaitsevat BBOX-elementissä annetun suorakaiteen sisällä tai leikkaavat sitä.

<wfs:Query typeNames="dr:LiikenneElementti">

< fes:Filter>

< fes:And>

< fes:PropertyIsEqualTo>

< fes:PropertyName>dr:vaylaTyyppi</fes:PropertyName>

<fes:Literal>katu</fes:Literal>

</fes:PropertyIsEqualTo>

< fes:BBOX>

< fes:PropertyName>

dr:keskilinjaGeometria

</ fes:PropertyName>

<gml:Envelope srsName=" urn:ogc:def:crs:EPSG::3067">

<gml:lowerCorner>378000 6682000<gml:lowerCorner>

<gml:upperCorner>379000 6683000</gml:upperCorner>

</gml:Envelope>

</ fes:BBOX>

</ fes:And>

</fes:Filter>

</wfs:Query>

Osana palvelun metatietoja (GetCapabilities-kyselyn vastauksessa) voidaan kertoa, mitä Filter-operaattoreita palvelu tukee. Operaattorit on ryhmitelty kahteen pääosioon. Spatial_Capabilities -osio sisältää mm. elementit SpatialOperators ja GeometryOperands, joilla voidaan ilmaista palvelun ymmärtämät sijainnilliset operaattorit ja näissä tuetut vakioarvoiset geometriset objektit. Scalar_Capabilities -osiossa annetaan mm. tieto siitä, ovatko loogiset operaattorit tuettuja ja mitä vertailuoperaattoreita palvelu hyväksyy.

Esimerkki 22. Filter_Capabilities-elementti, joka osoittaa, että palvelu tukee sijainnillisista operaatioista ainoastaan BBOX-operaatiota, jolle voidaan kohdistaa ainoastaan Envelope-arvo (suorakaide). Lisäksi palvelu tukee yksinkertaisia vertailuoperaattoreita ja operaattoria Like. Elementin LogicalOperators mukanaolo osoitaa, että näitä operaattoreita voidaan yhdistellä loogisilla operaattoreilla.

<fes:Filter_Capabilities

xmlns :fes="http://www.opengis.org/fes/2.0"

xmlns:gml="http://www.opengis.net/gml /3.2"

xmlns:xsi="http://www.w3.org/2001/XMLSchema -instance"

xsi:schemaLocation=" http://www.opengis.org/fes/2.0 http://schemas.opengis.net/filter/2.0/filterCapabilities.xsd">

<fes:Conformance>

<fes:Constraint name="ImplementsQuery">

<ows:NoValues/>

<ows:DefaultValue>TRUE</ows:DefaultValue>

</fes:Constraint>

<fes:Constraint name="ImplementsAdHocQuery">

<ows:NoValues/>

<ows:DefaultValue>TRUE</ows:DefaultValue>

</fes:Constraint>

<fes:Constraint name="ImplementsMinStandardFilter">

<ows:NoValues/>

<ows:DefaultValue> TRUE</ows:DefaultValue>

</fes:Constraint>

<fes:Constraint name="ImplementsStandardFilter">

<ows:NoValues/>

<ows:DefaultValue>FALSE</ows:DefaultValue>

</fes:Constraint>

<fes:Constraint name="ImplementsMinSpatialFilter">

<ows:NoValues/>

<ows:DefaultValue>TRUE</ows:DefaultValue>

</fes:Constraint>

<fes:Constraint name="ImplementsSpatialFilter">

<ows:NoValues/>

<ows:DefaultValue>FALSE</ows:DefaultValue>

</fes:Constraint>

<fes:Constraint name="ImplementsMinTemporalFilter">

<ows:NoValues/>

<ows:DefaultValue>FALSE</ows:DefaultValue>

</fes:Constraint>

<fes:Constraint name="ImplementsVersionNav">

<ows:NoValues/>

<ows:DefaultValue>FALSE</ows:DefaultValue>

</fes:Constraint>

<fes:Constraint name="ImplementsSorting">

<ows:NoValues/>

<ows:DefaultValue>FALSE</ows:DefaultValue>

</fes:Constraint>

</fes:Conformance>

<fes:Spatial_Capabilities>

<fes:GeometryOperands>

<fes:GeometryOperand>gml:Envelope</fes:GeometryOperand>

</fes:GeometryOperands>

<fes:SpatialOperators>

<fes:SpatialOperator name="BBOX"/>

</fes:SpatialOperators>

</fes:Spatial_Capabilities>

<fes:Scalar_Capabilities>

<fes:LogicalOperators/>

<fes:ComparisonOperators>

<fes:ComparisonOperator name="PropertyIsLessThan"/>

<fes:ComparisonOperator name="PropertyIsGreaterThan"/>

<fes:ComparisonOperator name="PropertyIsLessThanOrEqualTo"/>

<fes:ComparisonOperator name="PropertyIsGreaterThanOrEqualTo"/>

<fes:ComparisonOperator name="PropertyIsEqualTo"/>

<fes:ComparisonOperator name="PropertyIsNotEqualTo"/>

<fes:ComparisonOperator name="PropertyIsLike"/>

</fes:ComparisonOperators>

</fes:Scalar_Capabilities>

</fes:Filter_Capabilities>

Esimerkki 23. Filter_Capabilities-elementti, joka osoittaa, että palvelu tukee vain sijainnillista operaattoria ”BBOX” ja ainoa arvo, jolle operaattori voidaan kohdistaa, on ”Envelope” (suorakaide).

<fes:Filter_Capabilities

xmlns:fes="http://www.opengis.org/fes/2.0"

xmlns:gml="http://www.opengis.net/gml /3.2"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation= "http://www.opengis.org/fes/2.0 http://schemas.opengis.net/filter/2.0/filterCapabilities.xsd">

<fes:Conformance>

<fes:Constraint name="ImplementsQuery">

<ows:NoValues/>

<ows:DefaultValue>TRUE</ows:DefaultValue>

</fes:Constraint>

<fes:Constraint name="ImplementsAdHocQuery">

<ows:NoValues/>

<ows:DefaultValue>TRUE</ows:DefaultValue>

</fes:Constraint>

<fes:Constraint name="ImplementsMinStandardFilter">

<ows:NoValues/>

<ows:DefaultValue>FALSE</ows:DefaultValue>

</fes:Constraint>

<fes:Constraint name="ImplementsStandardFilter">

<ows:NoValues/>

<ows:DefaultValue>FALSE</ows:DefaultValue>

</fes:Constraint>

<fes:Constraint name="ImplementsMinSpatialFilter">

<ows:NoValues/>

<ows:DefaultValue>TRUE</ows:DefaultValue>

</fes:Constraint>

<fes:Constraint name="ImplementsSpatialFilter">

<ows:NoValues/>

<ows:DefaultValue>FALSE</ows:DefaultValue>

</fes:Constraint>

<fes:Constraint name="ImplementsMinTemporalFilter">

<ows:NoValues/>

<ows:DefaultValue>FALSE</ows:DefaultValue>

</fes:Constraint>

<fes:Constraint name="ImplementsVersionNav">

<ows:NoValues/>

<ows:DefaultValue>FALSE</ows:DefaultValue>

</fes:Constraint>

<fes:Constraint name="ImplementsSorting">

<ows:NoValues/>

<ows:DefaultValue>FALSE</ows:DefaultValue>

</fes:Constraint>

</fes:Conformance>

<fes:Spatial_Capabilities>

<fes:GeometryOperands>

<fes:GeometryOperand>gml:Envelope</fes:GeometryOperand>

</fes:GeometryOperands>

<fes:SpatialOperators>

<fes:SpatialOperator name="BBOX"/>

</fes:SpatialOperators>

</fes:Spatial_Capabilities>

</fes:Filter_Capabilities>

5 INSPIRE-vaatimukset

Euroopan komission 23.11.2010 antaman, aiempaa verkkopalveluasetusta [4] täydentävän asetuksen [5] vaatimat lataustoiminnot voidaan toteuttaa kolmella eri tavalla. Nämä menettelyt on kuvattu Komission julkaisemassa teknisessä ohjeessa [6].

  • Vaihtoehto 1: INSPIRE:n mukainen tiedostopalvelu (Atom-syöte)
  • Vaihtoehto 2: INSPIRE:n mukainen kyselypalvelu, joka tukee vakioituja kyselyjä (WFS 2.0 Stored Query)
  • Vaihtoehto 3: INSPIRE:n mukainen kyselypalvelu, joka tukee vapaita kyselyjä (WFS 2.0 Ad hoc Query).

Kukin kolmesta vaihtoehdosta täyttää yksin latauspalveluasetuksen pakolliset vaatimukset, jotka on lueteltu verkkopalveluasetuksen [4] osassa A. Tässä luvussa käsitellään vaihtoehtojen 2 ja 3 mukaisia ratkaisuja.

Huom! INSPIRE-toimeenpanosäännöksien käännöksen mukaan vaihtoehto 1 tarkoittaa ennalta määritellyn tiedon latausta toteutettuna Atom-syötteen avulla. Vaihtoehto 2 on ennalta määriteltyä tiedon latausta, joka on toteutettu ennalta määriteltyjen kyselyjen avulla. Vaihtoehdon 3 mukaista menettelyä kutsutaan vastaavasti suorasaantilataukseksi.

5.1 INSPIRE:n mukainen kyselypalvelu, joka tukee vakioituja kyselyjä

Vakioituja kyselyjä tukeva kyselypalvelu toteutetaan käyttämällä standardeja

  • ISO 19142 Web Feature Service
  • ISO 19143 Filter Encoding.

Palvelun on toteutettava seuraavat yhteentoimivuusluokat:

  • ISO 19142 Web Feature Service / OGC WFS 2.0: ”Simple WFS”
  • ISO 19142 Web Feature Service / OGC WFS 2.0: ”HTTP GET”
  • ISO 19143 Filter Encoding / OGC FE 2.0:”Query”.

Kyselyihin tulee sisällyttää kaikki tuetut vaihtoehdot eri koordinaattijärjestelmille, tietotuotteille ja kielille.

Esimerkki 24. Vakioitu kysely GetDataSetByID, jonka parametrina ovat tietotuotteen yksilöivä tunnus (DataSetID) ja koordinaattijärjestelmä (CRS).

http://www.myinspirewfs.com/service?request=getFeature&storedquery_id=urnx:wfs:StoredQueryId:mynamspace:GetDataSetByID&DataSetID=123abc&CRS=urn:ogc:def:crs:EPSG::4258

5.2 INSPIRE:n mukainen kyselypalvelu, joka tukee vapaita kyselyjä

Vapaita kyselyjä tukeva kyselypalvelu tarjoaa samat toiminnot kuin vakioituja kyselyjä tukeva kyselypalvelu, mutta lisäksi se tarjoaa mahdollisuuden tehdä omia WFS-standardin mukaisia kyselyjä ja ladata aineiston osajoukkoja.

Palvelun on pystyttävä toteuttamaan seuraavat hakukriteerit:

  • Paikkatietoaineiston yksilöivä resurssitunniste (Unique Resource Identifier)
  • Kaikki paikkatietokohteiden keskeiset ominaisuustiedot ja suhteet yhteentoimivuusasetuksen mukaisesti. Erityisesti paikkatietokohteen yksilöivä resurssitunniste ja aikaulottuvuuteen liittyvät ominaisuudet, kuten päivitysajankohta
  • Rajaava suorakaide (ilmaistu jonkun yhteentoimivuusasetuksessa luetellun koordinaattijärjestelmän mukaisesti)
  • Paikkatiedon aihe (Spatial Data Theme)

5.3 Koordinaattijärjestelmät

INSPIRE:n mukaisen latauspalvelun tulee tukea seuraavia koordinaattijärjestelmiä

  • ETRS89 maantieteellinen (EPSG:4258), ellei muuta määritelty ko. tietotuotteelle yhteentoimivuusasetuksessa.
  • ETRS89-TM35FIN (EPSG:3067).

5.4 Kielivaatimukset

INSPIREN:n mukaisessa latauspalvelussa metatietokyselyn vastauksen tulee sisältää luettelo palvelussa tuetuista kielistä. Jos palvelupyynnössä esitetty kieli on tuettuna, palautetaan vastaus ko. kielellä, muussa tapauksessa parametri jätetään huomioimatta ja vastaus annetaan oletuskielellä.

Kieliparametrin nimi on “LANGUAGE”. Parametrin arvot perustuvat ISO 639-2/B alpha 3 -arvoihin.

GetCapabilities-pyyntö: Jos asiakassovellus sisällyttää kieliparametrin pyynnössä tule GetCapabilties-vastauksessa antaa Titles ja Abstract -tiedot kysytyllä kielellä.

Esimerkki 25. Laajennetun Capabilies-dokumentin “inspire_vs:ExtendedCapabilies”-elementti, joka osoittaa, että palvelu tukee kieliä suomi ja ruotsi ja että sen oletuskieli on suomi.

<inspire_vs:ExtendedCapabilities>…

<inspire_common:SupportedLanguages>

<inspire_common:DefaultLanguage><inspire_common:Language>fin</inspire_common:Language>

</inspire_common:DefaultLanguage>

<inspire_common:SupportedLanguage><inspire_common:Language>swe</inspire_common:Language>

</inspire_common:SupportedLanguage>

</inspire_common:SupportedLanguages>

<inspire_common:ResponseLanguage>

<inspire_common:Language>fin</inspire_common:Language>

</inspire_common:ResponseLanguage …

</inspire_vs:ExtendedCapabilities>

6 Referenssit

[1] Geoinformatiikan sanasto

http://www.tsk.fi/tiedostot/pdf/GeoinformatiikanSanasto.pdf

[2] OpenGIS Web Feature Service 2.0 Interface Standard

[3] OpenGIS Filter Encoding 2.0 Encoding Standard

[4] Komission asetus verkkopalveluista

http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2009:274:0009:0018:FI:PDF

[5] Komission asetus (EY) N:o 976/2009

http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=CONSLEG:2009R0976:20101228:FI:PDF

[6] Technical Guidance for the implementation of INSPIRE Download Services

http://inspire.jrc.ec.europa.eu/documents/Network_Services/Technical_Guidance_Download_Services_3.0.pdf