Rengeteg olyan adat keletkezik, amely térbeli információt (is) hordoz(hat), keletkezésekor mégsem téradatként jön létre, ezért azonnal, előkészítés nélkül nem alkalmazható térinformatikai munkák során. Sok oka lehet, hogy egy adat miért nem téradat, most azokra az esetekre fókuszálok, amikor a vetületi információ hiányzik az adat mellől, vagyis nem tudjuk, hogy az állomány koordinátáit melyik vetületi rendszerben kell értelmezni, így hova is kell őket helyezni a leképezett földrajzi térben. Ez igaz lehet vektoros és raszteres adatmodellben tárolt adatokra egyaránt, ám mivel térinformatikai feladataim során sokkal gyakrabban kellett raszteres állományokat a "helyére tenni", ez a cikk a nyers, térbeli információ nélküli raszteres adatok földrajzi térben való elhelyezésére, a georeferálásra fókuszál.
Térbeli információ nélküli téradatok
Nagyon fontos megjegyezni, hogy nem minden téradat, ami annak látszik! Csupán azért, mert egy térképet ábrázol egy kép, még (sajnos) nem biztos, hogy téradat. De mégis miként jöhetnek létre olyan adatok, amelyek akár téradatok is lehetnének, de mégsem azok? Az egyik leggyakoribb eset egy analóg, papíralapú térkép szkennelése vagy befotózása, de előfordulhat az is, hogy egy térinformatikai projekt során olyan eredménytérképeket exportálunk, amelyek "egyszerű" képek (raszterek), nem pedig tértudatos állományok. Hiszen mi értelme lenne téradatként exportálni azokat a képeket, amelyeket egy szöveges dokumentumba (pl. cikk, tanulmány, útmutató, stb.), esetleg prezentációba szánunk ábrának?
A vektoros adatok esetében (tapasztalatom szerint) ritkábban marad el a vetületi információ, leggyakrabban talán akkor fordul ez elő, ha úgy kezd valaki vektorizálni, hogy vektorizálás alapjául szolgáló rasztert előtte nem georeferálta, vagyis az általa létrehozott pontok, vonalak és poligonok valójában képi koordináták szerint értelmezhetők csupán.
A georeferálás folyamata
Egy egyszerű példán keresztül szeretném bemutatni a munkafolyamatot, amelynek során georeferálunk egy (egyelőre) térben nem, vagy csak rosszul értelmezhető raszteres állományt. Tegyük fel, hogy a Tihanyi-félsziget utca- és túratérképére lenne szükségünk, hogy ez alapján átrajzolhassuk (vektorizálhassuk) a területen fekvő utcahálózatot és a turistautakat. Rövid internetes böngészés után belefutunk a Balaton-felvidéki Nemzeti Park honlapján található képbe, amelyet letöltünk a számítógépünkre a projektmappába, amit a feladat számára hoztunk létre. A kép kiterjesztése .JPG, így a QGIS képes a megnyitására, azonban semmilyen térbeli információval nem rendelkezik, így ha megnyitjuk (Layer menü, Add Layer, Add Raster Layer...), a QGIS nem fogja tudni, milyen vetületben próbálja meg értelmezni a kép koordinátáit, ezért megkérdezi tőlünk.
Képi koordináták vs. térbeli koordináták
Milyen koordinátákkal rendelkezik egy raszteres állomány, ha még nem téradat? Úgynevezett képi koordinátákkal, amelyek azt mondják meg az egyes pixelekről, hogy hányadik sorban és hányadik oszlopban helyezkednek el. A képi koordináta rendszer origója általában a bal felső sarokban található, így az oszlopot azonosító, vízszintes tengelyen értelmezett koordináta pozitív, a sort azonosító, függőleges tengelyen értelmezett koordináta pedig negatív. Ezeket a koordinátákat bármelyik vetületi rendszer megpróbálhatja sajátjaiként értelmezni.
Ha szeretnéd felfrissíteni a vetületekkel kapcsolatos alapvető ismereteidet, fusd át a QGIS - Gyakran használt vetületek kezelése című írásunkat!
Például a WGS 84 (EPSG:4326) vetület földrajzi szélességi fokként próbálhatja meg értelmezni a tihanyi kép 1794, és hosszúsági fokként az 1929 pixelét, miközben a vetületben az előbbi -90 és +90, az utóbbi -180 és +180 közötti értékei értelmezhetők. Vagy másképpen: a Tihanyi-félsziget bármelyik irányban sokszor nagyobb lenne, mint az egész Föld, miközben a kép bal felső sarka az Egyenlítőn a 0° hosszúságnál helyezkedne el, vagyis Afrika partjai mellett.
EOV (EPSG:23700) vetületben a kép a vetületi rendszerben a Tihanyi-félszigetet ábrázoló raszter szintén a vetületi rendszer középpontjába kerül, amely valahol Olaszországban található, a kép pixeleit pedig ezúttal méterben fogja értelmezni, így az egész kép 1794 m észak-déli, és 1929 m kelet-nyugati irányban, ami köszönő viszonyban sincs az ábrázolt terület valós méreteivel.
Ha egy ismeretlen vetületű képet nyitunk meg, a vetület kiválasztása után döntésünk helyességéről (vagy hibás voltáról) gyors vizuális ellenőrzéssel meggyőződhetünk, ha összevetjük az OpenStreetMap alaptérképpel (XYZ Tiles, OpenStreetMap).
Az alapértelmezetten elérhető vetületi rendszerek között nem lesz olyan, amelyben a kép a megfelelő helyre kerülne. Ha rendelkezünk megfelelő matematikai és vetülettani ismeretekkel, akkor esetleg kitalálhatunk egy olyan vetületet, amely pontosan úgy képezi le a Földet, hogy a vetületi rendszer origója a kép 0,0 pontjával essen egybe és minden egyéb koordinátapár a valós földrajzi tér megfelelő pontját képezze le, de szerintem ennél van egyszerűbb megoldás is. Megmondhatjuk a képnek, hogy hol is kellene lennie pontosan egy számunkra megfelelő vetületben, majd megjegyeztetjük a raszteres réteggel ezt a vetületet és a vetületnek megfelelő új koordinátáit. Ez a folyamat a georeferálás.
Georeferálás QGIS-ben
A QGIS 3.x verzióiban a georeferálás eszköze nem elérhető alapértelmezett módon, azonban könnyen elérhetővé tehető egy beépített plugin elindításával. Válasszuk ki a Plugins menü Manage and Install Plugins... menüpontját és a megjelenő Plugins ablak keresőmezőjébe kezdjük el begépelni a Georeferencer szót, majd pipáljuk ki a Georeferencer GDAL előtti jelölőnégyzetet. Ezután a Raster menüben már elérhető lesz a Georeferencer tool.
Nyissuk meg a Georeferencer tool-t (Raster menü, Georeferencer almenü), amely egy új ablakot (Georefencer) fog nyitni. A legelső, rasztert mintázó (sakktáblára emlékeztető), Open Raster ikont megnyomva tallózzuk ki a georeferálni kívánt raszteres képet. Mivel még nincs vetülete, meg fogja kérdezni, milyen vetületben értelmezze a képi koordinátákat. Szinte mindegy, hogy milyen vetületet választunk ebben a lépésben, hiszen éppen azon vagyunk, a képi koordináták helyett egy új, földrajzi koordinátákat adjunk a képnek. Az egyszerűség kedvéért válasszuk a WGS 84 (EPSG:4326 vetületet). Nagyon fontos, hogy ebben a lépésben nem a kimeneti vetületi rendszert választjuk ki! A kész, georeferált rasztert majd WGS 84 / Pseudo Mercator (EPSG:3857) vetületben szeretnénk eltárolni.
A georeferálás alanya nemcsak vetület nélküli raszter lehet, hanem egy, már vetülettel rendelkező téradat állomány is. Ha ilyen rasztert nyitunk meg a Georeferencer ablakban, a megnyitáskor nem fog megjelenni a vetület választó ablak, hiszen a QGIS pontosan tudja, milyen vetületben kell értelmezni a megnyitott állomány koordinátáit. De vajon miért szeretnénk georeferálni egy már georeferált állományt? Nos, valóban ritkán fordul elő ez az eset, az első, ami eszembe jut, hogy az első georeferálás pontatlan lett és igazítani szeretnénk rajta. Lehetséges még az az eset is, hogy a raszterre olyan projektben lesz szükségünk, amelynek eltér a vetülete, és szeretnénk megspórolni az on-the-fly vetületi transzformációkkal járó számításokat, azonban ilyenkor célszerűbb az adatot másik vetületben elmenteni és úgy elvégezni a vetületi átalakítást, mert az biztosan pontosabb lesz, mint a georeferálás.
A georeferálási folyamat következő lépésében illesztőpontpárokat keresünk. A pontpár első tagját az illeszteni kívánt képen választjuk ki. Ezután pedig két lehetőségünk van: 1. megadjuk a kiválasztott pont kimeneti vetületben értelmezett földrajzi koordinátáit, 2. kiválasztjuk a pont párját egy referencia térképen, amely abban a vetületben van, amelybe a raszterünket szeretnénk georeferálni. A példámban a második úton szeretnék elindulni, ezért a pontpárok keresése előtt visszatérek a QGIS főablakba, a Browser panelen belül az XYZ Tiles lehetőség alól behúzom az OpenStreetMap-et a projektbe és a Tihanyi-félsziget területére navigálok. Jöhetnek a pontpárok! Én az alábbiakat választottam ki (a sorrend nem számít):
- Csúcs-hegy (a sziget nyugati felén a part közelében található)
- Tihanyrévnél az utca és a part találkozása (a félsziget déli részén található)
- Tihanyi Hajóállomás (a félszigeti keleti felén található)
- a 71-es főút és a Kossuth Lajos utca (7117-es út) kereszteződését (a félsziget északi részén található)
Hogyan válasszunk illesztőpontpárokat? Ez sokkal komplexebb téma, mint amilyennek elsőre tűnik. Hosszas fejtegetésbe most nem bocsátkozom, ökölszabályként két javaslatom van. 1. Az illesztőpontpárokat próbáljuk minél jobban elosztani a képen: legyenek egymástól aránylag távol és amennyire lehet, jól elszórva. 2. Válassz olyan helyeket, amelyek feltehetően nem változtak a két képen és remélhetőleg a generalizálás áldozatául sem estek. Régi (georeferálandó) és új (referencia) térképek esetében jól használhatók a templomok, kőkeresztek. Időben egymáshoz közelebbi térképek esetén használhatók az útkereszteződések, fontosabb épületek. Ha felmerül a gyanú, hogy a két térkép eltérő súllyal kezeli az illesztőpontként kiszemelt elemet (pl. a domborzatot), akkor inkább mást kell választani, mert jelentős hiba származhat abból, ha az egyik térképen csak nagyjából került a helyére a hegycsúcs, míg a másikon nagy jelentőséget tulajdonítottak a magassági pontok precíz jelölésének.
A négy illesztőpontpár látszik a képen is, piros pöttyként, valamint egy táblázatban is a kép alatt. A táblázat mutatja, hogy az egyes képi koordinátapárhoz (Source X és Y) melyik földrajzi koordinátapárokat (Dest. X és Y) társítottuk. Megmutatja azt is, hogy mennyire pontos az illesztésünk, azaz az illesztőpontjaink mennyire kerültek jó helyre, az illesztő algoritmus lefutása után mekkora a távolság (Residual), annak vízszintes (dX), valamint függőleges (dY) összetevője az általam lehelyezett pont és az algoritmus futása után számított pont között.
Egyelőre azt látjuk, hogy mindegyik távolság 0. Sajnos az a rossz hírem, hogy nem vagyok ennyire ügyes, azért nem írja ki a hibák valós értékét, mert még nem választottam ki az illesztési algoritmust, valamint nem adtam meg a kimeneti vetületi rendszert sem. Ehhez a Georeferencer ablakban a fogaskerék, Transformation Settings ikonra kell kattintani. A megjelenő ablakban
- A Transformation Type legördülő menüből válasszuk a Linear opciót. Ez a transzformációs eljárás mozgatja, kicsinyíti-nagyítja és forgatja a képet, de egyéb módon nem torzítja. A georeferálások döntő többségéhez ez az eljárás bőségesen elegendő. Minimálisan 4 illesztőpontot kell megadni ehhez az eljáráshoz, hogy lássuk az illesztési hibákat is.
- A Target SRS legördülő menüből válasszuk ki a WGS 84 / Pseudo Mercator (EPSG:3857) vetületet, vagy ha a legördülő menüben nem található, akkor a mellette látható ikonnal keressünk rá. Korábban azt mondtuk, hogy ez legyen a georeferált állomány vetülete és az OpenStreetMap-ről leolvasott koordináták is ebben a vetületben értelmezhetők helyesen!
- Az Output raster mezőbe írjuk be vagy tallózzuk ki, hova és milyen formátumba jöjjön létre a georeferált állomány! Kimeneti formátumnak javaslom a .TIF formátumot, ami valójában egy GeoTIFF állományt hoz létre, amely egy általánosan elterjedt formátum georeferált raszteres téradatok tárolására.
- Opcionálisan bepipálható a Create world file only (linear transforms) jelölőnégyzet is. Ha nincs kijelölve, akkor a létrejövő .TIF fájl önmagában hordozza majd a vetületet és a koordinátákat, vagyis az eredeti képhez képest pixelről pixelre haladva a Georeferencer át fogja írni a kép adatait. Ha bejelöljük, akkor az eredeti kép gyakorlatilag érintetlen marad, viszont létrejön mellé egy .WLD kiterjesztésű fájl, amely annak a szabályait írja le, hogy a képi koordinátákat milyen vetületben, hova mozgatva, mennyit forgatva és mennyire kicsinyítve-nagyítva kell megjeleníteni térinformatikai környezetben. A példában én nem használom az opciót.
- Szintén opcionálisan pipálható a Load in QGIS when done jelölőnégyzet. Ha be van jelölve, a georeferálás után a georeferált raszter megjelenik a QGIS főablakban, miután végzett a művelettel. A példában ezt az opciót használom.
Ha ezeket a beállításokat elvégeztük, az illesztőpontpárok táblázatában már megjelennek a hibák értékei, valamint a térképen is vonalak jelennek meg pontok helyett, bár ha ügyesek voltunk, nagyon rövidek és csak nagyon ránagyítva látszódnak. Esetemben az illesztés átlagos hibája (az ablak alján látható Mean error értéke) 15 méter körüli, azaz az általam megadott illesztőpontpárok alapján elvégzett lineáris transzformáció után átlagosan 15 méteres pontossággal kerülnek jó helyre. Sok mindentől függ, hogy ez jó érték-e: milyen a referálandó raszter minősége, milyen a referencia térkép minősége, mennyire pontosak ezek a térképek, mennyi idő telt el a kettő készítése között, mennyire különbözik a kettő készítése során alkalmazott generalizálási szabályrendszer, stb. Végső soron azonban az dönt, hogy én (vagy a megrendelő, ha nem magam számára készítem) elégedett vagyok-e az eredménnyel? Ha nem, további illesztőpontok bevonásával és/vagy a meglévők kihagyásával lehet pontosítani az eredményt!
Ha már nem kívánunk tovább igazítani az illesztésen, a Georeferencer ablak eszköztárában a lejátszás, Start Georeferencing ikonra kattintunk. Lefut az illesztési algoritmus, létrejön az új, georeferált raszter és a beállításainknak megfelelően a főablakhoz is hozzáadja a QGIS, így látható az is, hogy immár jó helyen jelenik meg!
Ha később, akár egy teljesen új projekthez adjuk hozzá ezt a rasztert, már nem fogja megkérdezni a vetületet, mivel a .TIF fájl tudja magáról, hogy Pseudo Mercator (EPSG:3857) vetületű, köszönhetően annak, hogy egy "sima" raszteres adatból téradatot varázsoltunk a georeferálás segítségével.