V GISoch su rastrové dáta reprezentované maticou so stĺpcami a riadkami. Rastre sú rozdelené do dvoch skupín. Súvislé, teda neprerušované polia sa v GISoch označujú ako povrchy (nadmorská výška, vlhkosť vzduchu, pH pôdy), druhým typom sú obrazy (snímky) reprezentované diskrétnymi geometrickými objektami (letecké snímky, družicové snímky, skenované mapy). Pre povrchy sa hodnota pixla vzťahuje k stredu pixla, pre obrazy je hodnota pixla platná pre celú plochu pixla.
Rastrová mapová vrstva je v GRASSe reprezentovaná niekoľkými súbormi:
- súbor so samotným rastrom (rastre s celočíselnými hodnotami – cell, rastre s hodnotami s pohyblivou desatinnou čiarkou – fcell, 3D rastre – g3dcell)
- hlavičkový súbor – cellhd (obsahujúci georeferenčné informácie, informácie o rozlíšení, počet riadkov a stĺpcov a údaje o histograme)
- súbor s kategóriami pixlov – cats
- súbor s farebnou tabuľkou – colr
- súbor s časovým údajom (time stamp)
- súbor obsahujúci históriu mapovej vrstvy – hist
- súbor s informáciou o reklasifikácií rastra
Všetky tieto súbory su v príslušnom LOCATION/MAPSET adresári.
Rastrové dáta sú v GRASSe uložené v troch formátoch: 1. celočíselný raster (integer), v internej GRASSovskej terminológií označený ako CELL. 2. Raster s reálnymi hodnotami (floating point) v internej GRASSovskej terminológii označované ako FCELL (single precission) a DCELL (double precission). 3. 3D raster, označovaný ako GRID3D.
Výber formátu zaleží na užívateľovi a konkrétnej aplikácii. Všeobecne však možno povedať, že platia nasledovné pravidlá pre výber rastrového formátu. CELL sa používa pre rastre s diskrétnymi objektami (geologické mapy, mapy využitia zeme, letecké snímky), FCELL a DCELL zasa pre spojité polia (nadmorská výška, teplota, koncentrácia chemikálie). Užívateľ však nemusí o formáte rastra nejako zvlášť uvažovať, pretože s názvami GRASSovskej terminólógie sa stretne, iba ak nazrie do príslušného MAPSETu.
Treba sa zmieniť o tzv. reklasifikiácii mapovej vrstvy. O čo ide? Máme napríklad raster rozloženia priemernej júlovej teploty v Európe ako výsledok interpolácie z meteorologických staníc (bodové dáta). Pre potreby pestovateľov treba takýto raster rozdeliť do troch tried podľa priemernej teploty (použije sa modul r.reclass, o ktorom ešte bude reč). Výsledkom je mapa s tromi areálmi hodnôt priemernej teploty. Takáto mapa (raster) však nie je v MAPSETe uložená ako kompletný raster, ale v príslušnom súbore je uložená len informácia o reklasifikácii s odkazom na pôvodnú materskú mapovú vrstvu. Užívateľ však s reklasifikovanou mapou môže, až na niektoré výnimky, pracovať ako s bežnou mapovou vrstvou, a že ide len o zopár bajtov ani nemusí zistiť. Takéto riešenie je veľmi elegantné a šetrí miesto na disku. Ak treba vygenerovať skutočnú reklasifikovanú mapu, teda mapu s plnou veľkostou, dá sa tak urobiť pomocou modulu r.mapcalc.
Import rastrových dát do GRASSuDo GRASSu sa dajú importovať tri druhy rastrov: 1. obrazové súbory (PNG, PPM,…), 2. ASCII rastre (ASCII GRID,…) a 3. binárne rastrové formáty (ERDAS LAN, TIFF,…). Univerzálnym modulom pre import rastrov do GRASSu je modul r.in.gdal. Ten používa GDAL knižnicu, ktorá rozoznáva širokú paletu rastrových formátov. Ak sa aj nájde exotický formát, s ktorým by si r.in.gdal nevedel rady, určite existuje utilita na prevod rastra do formátu, ktorý GDAL knižnica podporuje.
Opíšeme si teraz spôsob, ako do GRASSu importovať a rektifikovať skenovanú mapu Gauss-Kruger v mierke 1:10000. Import skenovaných máp je procedúra, ktorej sa pri páci s GISmi nedá vyhnúť. Je to spôsob, ako do GISu dostať vlastne dáta (body a areály namerané v teréne a zaznačené do mapy). Keď sa pracuje s územím, z ktorého ešte neexistujú dáta vo vektorovej podobe (čo je pri netriviálnych projektoch pravidlom), jednoducho sa musia vyrobiť a tomu predchádza import skenovanej mapy do prostredia GISu.
Treba si uvedomiť, že prvé skreslenie hrozí už pri skenovaní. Mapové predlohy sa odporúča skenovať v rozlíšení od 150–300 dpi (letecké snímky až okolo 600–1200 dpi.). Pri 300 dpi je rozlíšenie asi 118 čiar na 1 cm. Ak teda máme predlohu v mierke 1:10000 získame teda rozlíšenie asi 0,84 m na čiaru (pixel), postup akým sme prišli k týmto číslam je v krátkom PDF súbore a je asi známy všetkým grafikom, či ľudom inak využívajúci skener.
Proces rektifikácie by sa dal zhrnúť do nasledovných bodov:
1. skenovanie predlohy
2. Vytvorenie x, y LOCATION s rozlíšením 1m
3. import predlohy do GRASSu
4. Vytvorenie cieľovej LOCATION s kartografickým zobrazením zhodným s mapovou predlohou
5. definovanie referenčných bodov a ich súradníc
6. proces samotnej rektifikácie
7. kontrola presnosti rektifikácie
Ako tréningovu mapu použijeme tento výrez vo formáte TIFF. Predtým však na základe krokov z minulého dielu vytvoríme LOCATION v kartézskych suradniciach x,y a s rozlíšením 1m. Hraničné hodnoty regiónu zadefinujeme tak, aby bol región vačší ako počet riadkov a stĺpcov v matici rastra (rows:548, cols: 542). Skenovanú mapu do GRASSu importujeme modulom r.in.gdal.
GRASS:~ r.in.gdal -e input=vmapa.tif output=vmapa GRASS:~ r.support -r vmapa |
Príkaz r.support spočítal po importe základné štatistiky importovaného rastra (Aj keď to v tomto prípade nemá veľký význam, ide totiž o import TIFF rastra, kde sú jednotlivé hodnoty pixlov priradené farbám, nie hodnotám nejakého javu. Ak by sme importovali napr. raster teploty,r.support by pre interné potreby GRASSu spočítal niektoré štatistiky importovaného rastra a vtedy by jeho použitie už zmysel malo. Je dobré používať tento modul vždy po importe rastra do GRASSu).
V dialógu pre výber kartografického zobrazenia vyberieme „UTM“, pri zóne zadáme 34, a pri elipsoide zadáme „bessel“. Opať špecifikujeme rozsah regiónu, teda northing a easting (DEFAULT_WIND), tak, aby pokryl záujmové územie (súradnice záujmového územia poznáme z topografickej mapy a región definujeme spravidla väčší, väčší rozsah regiónu nezaberie dodatočné miesto v pamäti a nijako teda nespomalí systém). Aby sme boli presní, nemusíme ho špecifikovať presne, v podstate tu môžme zadať ľubovoľné súradnice, ktoré vyhovujú definícií zobrazenia. Prečo? DEFAULT_WIND, je totiž potrebný len preto, aby sa nová LOCATION mohla vytvoriť. Priamy vplyv nesprávne zadefinovaného DEFAULT_WIND zistíme až vtedy, ak sa nám po zadaní d.rast, raster neobjaví v grafickom okne, tj. objaví sa mimo nami nadefinovaného územia, čo sa nám zdá ako keby sa nevykreslil. Vtedy treba použiť modul g.region a menom rastra špecifikovať kam sa má nastaviť súčasný región. Ak si zobrazíte raster príkazom d.rast, a nebudete ho vidieť v šedých odtieňoch, spustite interaktívne modul r.support a pri položke „create-update color table“ vyberte „greyscale“.
GRASS:~ g.region rast=vmapa GRASS:~ d.erase |
Tu sú súradnice priesečníkov kilometrovej siete pre tréningový región z Malej Fatry na severnom Slovensku:
UPPER LEFTEASTING: 4355000 NORTHING: 5454000
UPPER RIGHT EASTING: 4356000 NORTHING: 5454000
LOWER LEFT EASTING: 4355000 NORTHING: 5453000
LOWER RIGHT EASTING: 4356000 NORTHING: 5453000
Proces rektifikácie zabezpečujú príkazy typu i.*. Postupuje sa nasledovne. GRASS treba spustiť výberom LOCATION so súradnicovým systémom typu „x, y“. Modulom i.group sa definuje, ktoré mapové vrstvy sa budú rektifikovať. Tie sa vyberú a uložia do tzv. „image group“, čo nie je nič iné iba podmnožina všetkých exitujúcich rastrov v MAPSETE, spravidla tých, ktoré ešte nie sú rektifikované (tj. sú v lokálnej súradnicovej sústave x, y). Následne sa definuje tzv. „target LOCATION“, čo je LOCATION so súradnicovým systémom identickým s mapovou predlohou, modulom i.target. Potom nasleduje použitie modulu i.points, kde sa v grafickom okne vyznačia referenčné body so známymi súradnicami a zadajú sa cez klávesnicu. V našom prípade pôjde o priesečníky kilometrovej siete a vyššie ponúknuté súradnice (Obr. 1.). Modulom sa grafické okno rozdelí na dve časti a za použitia myši treba zvoliť z mapovej predlohy taký „zoom in“, aby bol rozoznateľný individuálny pixel, ten potom vybrať myšou a zadať súradnice. Stačí vybrať tri body (systém pri výbere ponuky ANALYZE, poskytne prehľad o RMS chybe, ktorá by nemala byť vačšia, ako polovica rozlišovacej schopnosti zoskenovanej predlohy).
Po zadaní referenčných bodov nasleduje spustenie príkazu i.rectify. Pri stupni polynómu, ktorý sa použije pre rektifikáciu, treba zvoliť „1“. Ten mapovú vrstvu len otočí a prípadne natiahne. Systém spustí proces rektifikácie na pozadí, to znamená, že zatiaľ môžme s GRASSom pracovať ďalej. V našom prípade však bude rektifikácia trvať rádovo sekundy. Preto vzinknuvšiu mapovú vrstvu (ktorej meno sme zadali, ako jednu z volieb v interaktívnom module i.rectify) môžme hneď zobraziť modulom d.rast. Nasledujúca štvorica príkazov nastaví región presne na rozsah rektifikovanej mapovej vrstvy, spraví zoom na záujmové územie a pre kontrolu zistí hodnoty súradníc pre body zadané myšou.
GRASS:~ g.region rast=vmapa GRASS:~ d.erase GRASS:~ d.zoom GRASS:~ d.what.rast |
Podobne môžme rektifikovať viacero máp naraz. Ak sa nám veľká mapa nezmestí do skeneru, veď nie každý má k dispozícií bubnový skener, treba mapu zoskenovať po častiach, a to tak, aby sa navzájom trochu prekrývali. Potm treba pre každú mapovú časť spraviť jednu „image group“. Následne pre každú mapovú časť nastaviť „target location“, a pre každú zoskenovanú časť mapy definovať modulom i.points referenčné body. Potom už len ostáva spustiť príkaz i.rectify (stupeň polynómu „1“). Takto môžme rektifikovať prakticky ľubovoľne veľkú mapu bez potreby zakúpenia veľkého skeneru. Proces rektifikácie (georeferencovania) je nevyhnutný a mal by byť prevedený najlepšie ako vieme. V ďalších fázach projektu sa nám námaha pri rektifikácií niekoľkonásobne vráti.
A ešte jeden malý trik ako spojiť po častich rektifikované územie do jednej súvislej mapovej vrstvy. V GRASSe sa na túto operáciu používa modulr.patch, ktorý individuálne mapové vrstvy spojí do jednej.
GRASS:~ r.patch input=cast1,cast2,cast3,cas4 output=orig.mapa |
Nabudúce budeme v GRASSe ortorektifikovať letecké fotografie, teda ukážeme si proces, ktorý bol donedávna výsadou drahých a komplexných proprietárnych balíkov. Teším sa na budúce stretnutie.
Použité zdroje:1. M. Neteler a H. Mitášová. 2002. Open Source GIS: A GRASS GIS Approach. 1st edition. Kluver Academic Publishers.
2. http://grass.itc.it