WMS-rajapinta terminä on monelle meistä tuttu juttu. WMS-rajapinnan käyttö on kätevää, sillä sitä käyttäen kartat valuvat kuin itsestään käytettyyn asiakassovellukseen.
Jos et vielä tiedä mitä WMS-rajapinta tarkoittaa, niin kyse on Open Geospatial Consotiumin (lyh. OGC).määrittelemästä rajapinnasta, jonka avulla asiakassovellus voi noutaa rasterimuotoisia karttkarttakuva-aineistoja rajapintatietopalvelimelta.
Rasterimuotoisella aineistolla tarkoitetaan tässä yhteydessä joko karttakuvaa tai tiilitettyä karttakuvaa. Tässä artikkelissa luodaan lyhyt katsaus WMS-rajapinnan sielunelämään lähinnä teknisestä näkökulmasta.
Artikkelissa esillään lisäksi kaksi keskeisintä WMS-pyyntöä ja kerrotaan millaisia aineistoja WMS-rajapinnan avulla voidaan jakaa. Esimerkit perustuvat avoimen lähdekoodin GeoServer-rajapintapalvelimeen.
Rajapinta karttakuvaaineistojen katseluun
Rasterimuotoisten karttakuva-aineistojen lataamiseen käytettävä rajapinta tunnetaan englanninkielisellä nimellä Web Map Service (WMS). Suomenkielinen nimi WMS-rajapinnalle on karttakuvapalvelu. WMS-rajapinnasta on olemassa myös ns. tiilitettyjä karttakuvia tukeva muoto, jolloin käytetään yleensä englanninkielistä nimeä Web Map Tiled Service (WMTS). Suomenkielinen nimi WMTS-rajapinnalle on tiilitetty karttakuvapalvelu.
Tiilitettyjä karttakuvia palauttava rajapinta voidaan tosin toteuttaa myös WMS-rajapinnan avulla, jolloin käytetään usein termiä Cached Web Map Service (WMS-C). On olemassa myös kolmas tiilitettyjä karttakuvia tarjoava rajapinta. Tämä rajapinta tunnetaan nimellä Tile Map Service (TMS), joka tosin ei ole ns. OGC-standardi.
Mikäli termit ja lyhenteet alkavat jo tässä vaiheessa mennä yli hilseen, niin todetaan tässä välissä, että tiilitetyllä WMS-palvelulla tarkoitetaan karttapalvelimen kykyä muodostaa alkuperäisestä datalähteestä säännöllisen kokoisia karttatiiliä lennossa ja palauttaa ne asiakassovellukselle siten, että asiakassovellus voi muodostaa niistä yhtenäisen kuvamosaiikin käyttäjän katseltavaksi.
Yleisimmät WMS-pyynnöt
Perusajatus karttakuvapalvelun toiminnassa on se, että asiakassovellus lähettää palvelimeen kytkeytyessään ns. GetCapabilities-pyynnön, jolla se pyytää palvelinta listaamaan karttakuvapalvelusta saatavilla olevat aineistot ja niiden speksit. Palvelimen palauttama GetCapablities-vastaussanoma on XML-muotoinen dokumentti, joka parsitaan asiakassovelluksessa selkokieliseen muotoon.
Varsinainen karttakuva pyydetään palvelimelta GetMap-pyynnöllä, jonka parametreina välitetään mm. pyydetyn karttakuvan maantieteellinen rajaus (bounding box), koordinaattijärjestelmän tunnus EPSG-koodilla ilmaistuna, pyydetyn kuvan leveys ja korkeus pikseleinä ja tieto käytettävästä tyylitiedostosta.
Mikäli karttakuvapalvelun lähtöaineistona käytetään parametrisoitua tietokantanäkymää, voidaan GetMap-pyynnön mukana välittää parametreja (viewparams), joiden mukaan taustalla toimiva tietokantanäkymä suodattamaan karttakuvassa näytettävää aineistoa halutulla tavalla. Kannattaa huomata, että WMS-pyynnön parametrisointi ei ole OGC:n WMS-standardin mukainen toiminnallisuus, vaan ns. GeoServer-spesifinen lisäominaisuus.
Myös mahdollinen autentikointitieto voidaan tarvittaessa välittää GetMap-pyynnön parametrina (API-key), joskin useinmiten autentikointitieto välitetään palvelimelle HTTP-pyynnön (joita myös WMS-pyynnöt ovat) header-osassa. GetMap-pyyntö palauttaa asiakassovellukselle rasterimuotoisen karttakuvan halutussa kuvaformaatissa.
Käytettäessä tiilitettyä karttakuvapalvelua, palvelimelta pyydetään yhden laaja-alaisen karttakuvan sijaan säännöllisen karttatiilijaotuksen (gridset) mukaisia karttatiiliä. Tyypillinen koko karttatiilelle on 256 pikseliä suuntaansa. Tiilitettyä karttakuvapalvelua tukevissa asiakassovelluksissa karttatiilet kasataan yhdeksi kokonaiseksi karttakuvaksi.
WMS-palvelusta voidaan kysellä myös ominaisuustietoja ns. GetFeatureInfo-pyynnön avulla. Vastaus GetFeatureInfo-pyyntöön voidaan pyytää esimerkiksi HTML-muotoisena dokumenttina tai raakatekstinä. Syvemmän analyysin GetFeatureInfo-pyynnöstä voit lukea täältä.
Myös karttaselitteen pyytäminen WMS-palvelusta on mahdollista. Tällöin käytetään GetLegendGraphic-pyyntöä.
Kaikki WMS-palvelut eivät välttämättä tue kaikkia WMS-standardin mukaisia pyyntöjä, joten ihan jokaiselta palvelimelta ei pysty esimerkiksi kyselemään karttakuvissa näkyvien paikkatietokohteiden ominaisuustietoja. GeoServer-palvelin sen sijaan tukee kaikkia WMS-spesifikaation mukaisia pyyntöjä.
Vektoria lähtöaineistoksi
WMS-karttakuvapalvelu voidaan toteuttaa siten, että se käyttää lähtöaineistoina vektorimuotoisia paikkatietoaineistoja. Tällöin kyseessä on ns. dynaaminen WMS-palvelu. Dynaamisella WMS-palvelulla tarkoitetaan sitä, että palvelinohjelmisto muodostaa karttakuvaa palvelimelta pyytävän GetMap-pyynnön mukaisen vastauksen juuri sillä spatiaalisella tarkkuudella, joka välitetään GetMap -pyynnön BBOX-parametrissa ilman, että prosessoinnissa tarvitsee tehdä tarkkuutta heikentävää rasterikuvan skaalausta.
Tästä johtuen dynaamisen WMS-palvelun palauttamat karttakuvat ovat teräviä eikä niissä esiintyvät kohteet ole pikselöityneet. Tämä on mahdollista, koska lähtöaineisto on vapaasti skaalattavissa olevaa vektoriaineistoa eikä asiakassovellukselle palautettavaa karttakuvaa muodostettaessa tarvitse suorittaa tarkkuutta heikentäviä rasterioperaatioita (esimerkiksi interpolointia).
Luettaessa lähtöaineistoja vektorimuotoisista paikkatietoaineistolähteistä, on suorituskykyisin vaihtoehto spatiaali-indeksejä hyödyntävä tietokantajärjestelmä. GeoServer kytkeytyy vaivattomasti useisiin eri tietokantajärjestelmiin.
Toki myös rasterit saadaan jakoon
Toinen mahdollinen datalähde karttakuvapalvelulle on rasteriaineisto. Rasteriaineistoja voidaan lukea joko yksittäisistä sijaintitiedon sisältävistä kuvista (esim. GeoTiff) tai useista kuvista koostuvista kuvamosaiikeista (esim. ImageMosaic). Luettaessa aineistoja rasterimuotoisia paikkatietoaineistoja sisältävästä datalähteestä muussa kuin natiivitarkkuudessa, suorittaa rajapintapalvelin rasterin piirtoon liittyviä operaatiota (mm. interpolointia) ennen kuin se palauttaa karttakuvan asiakassovellukselle.
Tapauksesta riippuen alkuperäisesta rasterista luettavaa lähtötietoa joudutaan skaalaamaan joko ylös- tai alaspäin halutun lopputuloksen saamiseksi. Käytettävästä rajapintapalvelimesta riippuen tarjolla on erilaisia interpolointimenetelmiä.
Yleisimmät interpolointimenetelmät ovat bilineaarinen ja lähimmän naapurin menetelmä. Käytettäessä rasterimuotoisia paikkatietoaineistoja karttakuvapalvelun aineistolähteinä, kannattaa lähtöaineistot optimoida jakelua varten esimerkiksi luomalla aineistoihin sisäinen tiilitys (inner tiling) ja/tai sisällyttämällä tiedostoihin yleistystasot (adding overviews). Ja mikäli levytilasta ei tee tiukkaa, niin lähtöaineistot kannattaa säilyttää palvelimella pakkaamattomassa muodossa, jolloin palvelimen ei aineistoja lukiessa tarvitse ensin purkaa aineistojen pakkausta.