Korábban már írtam a távoli szerveren tárolt adatok szolgáltatásokon keresztül történő eléréséről, s kiemelten a Web Map Service (WMS) használatáról. Most egy másik szolgáltatás, az adatok vektoros állományként történő elérését lehetővé tevő Web Feature Service (WFS) sajátosságait és QGIS környezetben való használatát szeretném bemutatni.
A Web Feature Service (WFS) is egy szabványos adatszolgáltatási protokoll, melyet az Open Geospatial Consortium (OGC) dolgozott ki 2002-ben, s azóta is folyamatosan fejlesztik. Hasonlóan a WMS-hez, a WFS használatakor is interneten (HTTP interfészen) keresztül érhető el a távoli szerveren tárolt téradat. Azonban míg a WMS az adatforrás adatmodelljétől (vektoros vagy raszteres) függetlenül mindenképpen raszteres formában teszi elérhetővé az adatot, addig a WFS szolgáltatáson keresztül vektoros formában férhetünk hozzá a téradathoz, aminek ebből fakadóan csak vektoros adatmodellel tárolt adat lehet a forrása.
A WFS szolgáltatás használatának sajátosságai:
Vektoros geometria és attribútum adatok
A legfontosabb sajátossága a WFS szolgáltatásban elérhetővé tett adatoknak, hogy az egyes elemek vektorként jelennek meg és használhatók a végponton (pl. a QGIS-ben). Azaz ha egy WFS-en keresztül nyitjuk meg Finnország irányítószám-körzeteit tartalmazó polygon réteget, akkor több mint 3000 polygon jelenik meg. Ezeknek pedig minden egyes töréspontja (vertexe) pontosan ott helyezkedik el, ahol a távoli szerveren tárolt téradatban, s a töréspontokhoz tudunk illeszteni (snap-elni) is a saját geometriáink létrehozása, szerkesztése során. A WFS szolgáltatáson keresztül elért réteg a vektoros adat mellett attribútum adatokat is tartalmazhat, azaz az egyes irányítószám-körzetekhez kapcsolt alfanumerikus adatok is elérhetők, pl. az irányítószám-körzet irányítószáma, neve, központja, stb.
Több réteg, azonban rétegcsoport nincs
Egy WFS szolgáltatás tetszőleges számú réteget tartalmazhat, azonban szemben a WMS szolgáltatással, itt nincs lehetőség a rétegeket együtt, csoportba rendezve elérhetővé tenni. Természetesen a felhasználó a végponton (pl. QGIS-ben) csoportosíthatja ezeket. Tegyük fel, hogy a WFS szolgáltatás tartalmazza az úthálózat különböző rendű elemeit külön-külön rétegekben. A szolgáltatásban nincs lehetőség egy "Úthálózat" csoportban együtt kezelni, megjeleníteni ezeket, hiszen az egyes rétegek adatstruktúrája akár teljesen eltérhet (eltérő számú, nevű és adattípusú attribútum írhatja le az autópályákat és a földutakat). Azonban QGIS-be külön-külön megnyitva az "Autópálya", "Főút", "Mellékút", "Helyi út" és "Földút" vektoros rétegeket, a QGIS rétegkezelőjében készíthetünk egy rétegcsoportot ezekből a rétegekből, amelynek akár az "Úthálózat" nevet is adhatja a szolgáltatás használója. Ez azonban teljes mértékben rá van bízva, nem tudjuk ezeket a rétegeket a szolgáltatás keretében összekapcsolni.
Nincs szimbólum
A szolgáltatáson keresztül elért vektoros adat nem rendelkezik stílussal, jelkulccsal. A WFS szolgáltatás készítője ezért nem tudja előre meghatározni, hogy a felhasználók milyen vonaltípussal lássák az autópályákat, csupán az adatot teheti ilyen módon elérhetővé. Más módokon (pl. stílusfájlok megosztása egy honlapon) persze támogathatja a felhasználók munkáját, azonban ezen kiegészítő módszerek használata is a végfelhasználón múlik, a WFS semmilyen módon nem képes meghatározni a megjelenő téradat stílusát. Felhasználói szemmel nézve ez azt jelenti, hogy a WFS szolgáltatáson keresztül elért adat szimbólumát, jelkulcsát nekünk kell meghatároznunk.
A vetület adottság
Hasonlóan a WMS szolgáltatáshoz, az elérhető vetületeket a WFS esetében is a szolgáltatást létrehozó határozza meg. Amennyiben a megjelenítést végző kliens szoftver alkalmas rá, lehetséges vetületi transzformációval másik vetületben megjeleníteni az adatot. Mivel az adat vektorosan érkezik a kliensbe, a váratlan torzulások esélye jóval kisebb, mint a Web Map Service esetében, ahol gyakorlatilag a pixelek torzításával végezhető el a transzformáció.
Jogosultságok
A Web Feature Service készítőjének lehetősége van meghatározni, a felhasználói milyen műveleteket végezhetnek a WFS-en keresztül elérhetővé tett adatokkal, s ezek a jogosultságok akár felhasználónként is eltérőek lehetnek! Kezdetnek: pusztán a szolgáltatás elérését is felhasználónév-jelszó megadásához kötheti. (Erre egyébként a WMS-nél is van lehetőség.) Aztán meghatározhatja, hogy aki már hozzáfér a WFS-hez (vagy mert nyilvános, vagy mert kapott hozzáférést), az csak megtekinteni tudja a téradatot vagy módosíthatja is azt? Csak a meglévő elemek attribútumain változtathat vagy új elemeket is beszúrhat, s akár törölhet is a meglévőkből?
Sajátosságaiból fakadóan a Web Feature Service általában adatkarbantartási feladatok támogatása kapcsán bukkan fel. Megosztható egy nem szerkeszthető réteg (pl. úttest), amelyet többen is használnak referenciaként más adatok (pl. útburkolati jelek) szerkesztése során. Vagy megosztható egy szerkeszthető réteg is, amelybe párhuzamosan, egy időben többen is létre tudják hozni a geometriákat, például a levegőminőség vizsgálatához rögzíthetők koordináta alapján a mérések pontjai, attribútumként pedig a mért értékek. Egy másik csapat pedig bármelyik pillanatban képes az éppen elérhető adatok alapján elemzéseket végezni, hiszen a szolgáltatáson keresztül minden adat egy helyre kerül.
Mindezeket érdemes észben tartani a WFS gyakorlati használata során. A WFS szolgáltatásban elérhetővé tett rétegek használatához a QGIS-ben először létre kell hozni egy kapcsolatot a távoli szerverrel, majd kiválasztani a szolgáltatásból a használni kívánt rétegeket.
WFS kapcsolat létrehozása
Web Feature Service használatához az első lépés a kapcsolat kialakítása a szerverrel. Ha korábban már létrehoztuk a kapcsolatot a QGIS megjegyzi, s csak ki kell választani a legördülő menüből.
A Layer menü Add Layer menüpontjában az Add WFS Layer opciót választva megjelenik a DataSource Manager|WFS ablak, ahol a korábban létrehozott WFS kapcsolatok listájából választhatunk vagy újabb kapcsolatot definiálhatunk.
Egyelőre nincs létező WFS kapcsolat, így a legördülő menü üres. Ezért alatta a New gombra kattintva létrehozunk egyet. Ehhez csupán a szolgáltatás URL-jére van szükség (ha felhasználónevet és jelszót igényel, akkor ezekre az információkra is), valamint egy tetszőleges névre, amely alapján a későbbiekben azonosítani tudjuk a szolgáltatást. A példában a Statistics Finland által közzétett irányítószám-körzeteit tartalmazó WFS szolgáltatáshoz kapcsolódunk, amelynek linkje:
http://geo.stat.fi/geoserver/postialue/wfs
Ez a szolgáltatás publikus, így nem kell felhasználónevet és jelszót megadni a használatához. Az OK gomb megnyomása után már elérhető lesz a legördülő menüben az általunk adott néven.
WFS szolgáltatás rétegeinek hozzáadása a projekthez
Mivel a kapcsolatot már létrehoztuk, a továbbiakban elegendő kiválasztani a legördülő menüből a megfelelő szolgáltatást és megnyomni a Connect gombot. Ennek hatására a QGIS lekérdezi a szerverről, milyen rétegek érhetők el a WFS-ben és kilistázza ezeket. A réteg mindenképpen rendelkezik névvel (Name oszlop), amely többnyire a térképszerveren használt, ékezetek és speciális karakterek nélküli egyedi azonosító. A WFS készítője minden rétegnek adhat a felhasználó számára könnyebben értelmezhető alternatív elnevezést, címet is (Title oszlop), s ha igazán alapos, akkor egy rövid leírást is mellékelhet a rétegekhez (Abstract oszlop).
Választhatunk egy vagy több réteget is, ám több réteg választása esetén is mindegyiket külön-külön jeleníti majd meg a réteg kezelőben. Az Add gomb megnyomása után a kiválasztott rétegeket hozzáadja a projektünkhöz. A rétegek neve alapértelmezetten a Name oszlopban látható érték lesz, de ha kipipáljuk a Use title for layer name jelölőnégyzetet a rétegek hozzáadása előtt, akkor a Title oszlopban látható karaktersorozatot rendeli a réteghez. A rétegek a QGIS által véletlenszerűen választott szimbólumokkal jelennek meg, mivel a WFS szolgáltatás nem tartalmaz stílusra, jelkulcsra vonatkozó információt.
WFS rétegek gyorsabb megjelenítése
Az Only request features overlapping the view extent jelölőnégyzetet érdemes bepipálva hagyni (vagy ha nincs bepipálva, akkor aktívvá tenni). Bekapcsolt állapotában mindig csak azokat az elemeket kéri le a QGIS a szolgáltatáson keresztül, amelyek metszik az aktuális képernyő kivágatot. Ha például Helsinki környékére nagyítva adunk hozzá egy újabb réteget, azt sokkal gyorsabban meg fogja tudni jeleníteni, mert először csak azt a pár tucat irányítószám körzetet kéri le, amelyik éppen látszik. Ha távolabb zoomolunk vagy megnyitjuk az attribútum táblát, akkor természetesen lekérdezi a többi elemet is, ilyenkor rövid ideig várakozni kényszerülhetünk.
Vetület választás a WFS szolgáltatás használata során
Amennyiben a WFS szolgáltatás több vetületben is elérhetővé teszi a rétegeket, a rétegek kiválasztása után, de az Add gomb megnyomása előtt az ablak jobb alsó sarkában látható Change gomb segítségével választhatunk másik vetületet. Ez a WFS szolgáltatás azonban csak ESPG:3067 vetületi rendszerben érhető el.
WFS szolgáltatás rétegeinek szűrt megjelenítése
Mivel a WFS szolgáltatáson keresztül geometria és attribútum adatok is elérhetők, már a réteg hozzáadása előtt is van lehetőség szűrni ezen információk alapján. A szűrést minden réteghez külön-külön meghatározhatjuk vagy a szűrni kívánt réteg Sql oszlopába duplán kattintva vagy a réteget kijelölve alul a Build query gombot megnyomva. Mindkét esetben megjelenik az SQL Query Composer ablak, amelyben egy SQL kifejezés összeállításával szűrhetjük a megjelenő réteg adattartalmát. Ha például csak a "00" kezdetű irányító számokra vagyunk kíváncsiak 2017-ből, akkor az alábbi SQL kifejezést beírva és a réteget így a projekthez adva csupán 84 irányítószám-körzet jelenik meg Finnország déli részén.
SELECT * FROM pno_tilasto_2017 WHERE pno_tilasto_2017.posti_alue LIKE '00%'