Skip to main content.

Rajapintojen kyselyesimerkit

Latauspalvelut toteutetaan tyypillisesti OGC:n Web Feature Service (WFS) -standardilla. Latauspalvelut (WFS) ovat ns. kyselypalveluita, jotka mahdollistavat kyselyiden tekemisen halutuin hakuehdoin.

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://opendata.navici.com/tampere/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://opendata.navici.com/tampere/opendata/ows?service=WFS&version=1.0.0&request=DescribeFeatureType&typeName=opendata: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://opendata.navici.com/tampere/opendata/ows?service=WFS&version=2.0.0&request=GetFeature&typeName=opendata: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 (avoin data)
http://opendata.navici.com/tampere/opendata/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=opendata:ONK_NMR_MVIEW&cql_filter=(KADUNNIMI=’Vasamakatu’ AND NUMERO=2)

Esimerkki Filter Encoding -kyselystä:
Haku kadunnimellä
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=”opendata:ONK_NMR_MVIEW”>
<ogc:Filter>
<PropertyIsEqualTo>
<PropertyName>KADUNNIMI</PropertyName>
<Literal>Vasamakatu</Literal>
</PropertyIsEqualTo>
</ogc:Filter>
</wfs:Query>
</wfs:GetFeature>

Esimerkki kohteen id:llä
http://opendata.navici.com/tampere/opendata/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=opendata:RAKENNUKSET_MVIEW&FeatureId=RAKENNUKSET_MVIEW.1543

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://opendata.navici.com/tampere/opendata/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=opendata:ONK_NMR_MVIEW&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://opendata.navici.com/tampere/opendata/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=opendata:ONK_NMR_MVIEW&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