tietoa_paikkatiedoista

Tietoa paikkatiedoista

Thu, 05/15/2014 - 13:32 -- kartat.tampere.fi

Kyselyt ja esimerkit

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/opendata/ows?service=wfs&version=2.0....

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....  

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=1.0....

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=2.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>

KVP-koodattuna: http://opendata.navici.com/tampere/opendata/ows?service=WFS&version=1.1.0&request=GetFeature&typeName=opendata:ONK_NMR_MVIEW&filter=<PropertyIsEqualTo><PropertyName>KADUNNIMI</PropertyName><Literal>Vasamakatu</Literal></PropertyIsEqualTo>

 

Haku kohteen id:llä (featureID)

<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>
       <ogc:FeatureId fid="ONK_NMR_MVIEW.fid--7ceb3618_1460487ce21_-1987"/>
    </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.
http://opendata.navici.com/tampere/opendata/ows?service=WFS&version=2.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.
http://opendata.navici.com/tampere/opendata/ows?service=WFS&version=2.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