Julkaistu 24.2.2020

OGC API käytännössä: ldproxy ja pygeoapi

Open Geospatial Consortiumin (OGC) aktiivisesti kehitteillä oleva OGC API-rajapintastandardi tähtää nykyisten OGC-web-palvelujen, kuten WMS ja WFS, nykyaikaistamiseen. Gispo avasi uuden OAPIn sisältöä syksyllä 2019 julkaistussa artikkelissa OGC-API: Rajapintapalvelujen tulevaisuus paikkatietoalalla. Kerroimme tuolloin OAPIn innostuneesta vastaanotosta ja ennustimme ensimmäisten rajapintatoteutuksien rantautuvan Suomeen lähitulevaisuudessa.

Me Gispolla pääsimme ensimmäistä kertaa kokeilemaan uutta OAPIa käytännössä joulukuussa 2019 uuden OGC Features API-koepalvelun muodossa. Saimme arvokasta kokemusta mm. uuden rajapintastandardin käyttöönotosta sekä nykyisten WFS-palvelujen migraatiosta uuteen Features APIin. Tutustuimme jo tällä hetkellä käytössä oleviin teknologioihin, ja esittelemme seuraavassa niistä kaksi vaihtoehtoa.

ldproxy

Interactive Instrumentsin kehittämä ldproxy lupaa parempaa käytettävyyttä WFS-palveluille. ldproxy on käytännössä adapteri, joka muuntaa olemassaolevan WFS-palvelun OGC Features API-rajapinnaksi. Julkaistavat WFS-palvelut määritetään web-käyttöliittymän kautta yksinkertaisesti antamalla palvelun URL-osoite. ldproxy hakee annetun WFS-rajapinnan GetCapabilities-dokumentin ja osaa sen perusteella automaattisesti määrittää skeeman WFS-palvelussa julkaistuille aineistolle ja julkaista ne OGC Features API-rajapinnan kautta. Hyödynnettävän WFS-palvelun tulee tukea WFS-versiota 2.0 sekä WFS-vastauksien jakamista sivuihin eli Paging-ominaisuutta. Palveluja voidaan lisätä WFS:n lisäksi myös CSW-katalogeista. Uusien aineistojen julkaisu OGC API-rajapintaan onkin ldproxyn avulla todella helppoa.

OGC
ldproxyn web-käyttöliittymä. Kuva: interactive-instruments.github.io/ldproxy.

ldproxyn käyttöönotto kannattaa tehdä Dockerin avulla. Dockerin asentamisen jälkeen ldproxyn saa käynnistettyä komennolla

docker run --name ldproxy -d -p 7080:7080 -v ldproxy_data:/ldproxy/data iide/ldproxy:latest

Web-käyttöliittymä on tämän jälkeen käytettävissä selaimen kautta osoitteessa http://localhost:7080/manager. Palvelun lisääminen on helppoa: lisää uusi palvelu painamalla plus-painiketta, anna palvelulle nimi ja WFS-osoite ja klikkaa lisää. ldproxy konfiguroi palvelun automaattisesti. Kun palvelun tila on Initializing-tilan sijaan Online, on rajapintapalvelu valmiina käytettäväksi. Valitse lisäämäsi palvelu ja klikkaa View avataksesi vastajulkaistun OAPI-rajapinnan selaimella.

Suojattujen palveluiden jakaminen ldproxyllä onnistuu JSON web tokenien avulla, jos hyödynnettävä WFS-palvelu tukee niitä. Kannattaa huomioida, että ldproxyn web-käyttöliittymä on avoin kaikille, eikä sisäänrakennettua tukea käyttäjienhallinnalle ole. Tuotantokäytössä luvaton pääsy web-käyttöliittymään tulee estää esimerkiksi erillisen web-palvelimen kuten Apache tai nginx avulla.

pygeoapi

Toinen vaihtoehto oman OGC Features API-rajapinnan julkaisuun on Python-pohjainen pygeoapi. Sen konfigurointi on ldproxyä haastavampaa, mutta tarjoaa myös enemmän mahdollisuuksia. pygeoapi tukee useita eri tietolähteitä, mikä mahdollistaa esimerkiksi jo olemassa olevien WFS-rajapintojen, PostGIS-tietokantojen sekä Geopackage tai shape-tiedostojen sisältämien aineistojen julkaisun OAPI-rajapinnan kautta. pygeoapi-demopalvelussa on valmiiksi määritetty ja julkaistu esimerkkiaineistoja. Demopalvelun avulla voikin nopeasti testata, miltä uusi OAPI-rajapinta saattaa näyttää ja miten sitä käytetään!

OGC
WFS-palvelusta julkaistu aineisto pygeoapi-demorajapinnassa.

Asennusohjeet opastavat asennukseen Python-virtuaaliympäristössä, mutta helpoin tapa kokeilla pygeoapia on Dockerin kanssa. Ennen Docker-kontin käynnistämistä tulee luoda konfiguraatiotiedosto, jota pygeoapi käyttää julkaistavan rajapinnan määrittelyyn. Konfiguraatiotiedostossa määritetään mm. rajapinnassa julkaistavat aineistot ja niiden metatiedot. Esimerkkikonfiguraation voi kopioida projektin GitHub-repositoriosta. pygeoapin voi käynnistää avaamalla komentorivi hakemistoon joka sisältää konfiguraatiotiedoston my.config.yml ja käynnistämällä pygeoapi komennolla

docker run --name geoapi -p 5000:80 -v $(pwd)/my.config.yml:/pygeoapi/local.config.yml -it geopython/pygeoapi

Rajapinta on käytettävissä osoitteessa http://localhost:5000. Toisin kuin ldproxy, pygeoapilla ei ole hallintaan käytettävää web-käyttöliittymää, vaan konfiguraatiomuutokset tehdään manuaalisesti muokkaamalla konfiguraatiotiedostoa. Muutokset tulevat voimaan Docker-kontin uudelleenkäynnistyksen jälkeen. WFS-rajapintoja julkaistessa WFS-rajapinnan tulee tukea versiota 2.0, ja myös tuki paging-ominaisuudelle on suositeltua. pygeoapin kehitys on aktiivista, ja käytössä olevat konfiguraatioparametrit saattavat muuttua versioiden välillä.

Profiilikuva

Gispo

Gispo on suomalainen avoimen lähdekoodin paikkatietotalo, jonka palveluihin kuuluu paikkatietokonsultointia, sovelluskehitystä, koulutusta sekä ylläpitoa ja tukea.