Geografický informačný systém GRASS (3)

30. 7. 2002
Doba čtení: 8 minut

Sdílet

V minulej časti sme si ukázali krátke sedenie v GRASSe. Dnes preberiame jeho štruktúru príkazov - tri spôsoby, ktorými sa zadávajú. Ukážeme si tiež, ako spravovať mapové vrstvy. Na záver preberieme niektoré mapové zobrazenia a ako medzi nimi konvertovať dáta. Text je písaný tak, aby nevyžadoval špeciálne geografické, alebo kartografické vedomosti, ale zároveň tak, aby problém neprípustne nezjednodušoval.
Štruktúra príkazov v GRASSe.

GIS GRASS na obrazovke tvorí príkazová konzola, grafický monitor a grafické Tcl/Tk rozhranie (Obr. 1). Okrem toho 3D vizualizačné prostredie nviz má vlastné GUI. Žiadne ďalšie vlastné okná, alebo kontrolné utility GRASS nemá, úplne však postačuje to, čo ponúka. Koncepcia práce je jednoduchá. V konzole zadáte príkaz a v grafickom okne vidíte výstup. Príkazy (niekdy označené ako moduly) sa v GRASSe spúšťajú tromi spôsobmi:

  • príkazový riadok v prompte GRASS:~
  • interaktívny dialóg v prompte GRASS:~. Spustíte príkaz bez volieb a modul si postupne pýta všetky vstupy a parametre.
  • Tcl/Tk grafické rozhranie, ktoré obsahuje všetky príkazy

Príkazy GRASu sú na jednej úrovni s príkazmi UNIXu, to znamená, že sa môžu ľubovoľne kombinovať a zvyšovať tak produktivitu práce v systéme. Ak napríklad exportujete raster v ASCII kóde, môžte ho hneď presmerovať cez > do súboru a vzápätí importovat do štatistického prostredia R pre ďalšie analýzy. História zadávaných príkazov je samozrejmosťou.

Netvrdím, že ľudí, ktorý čitajú ROOTa odradí príkazový riadok v GRASSe, príkazový riadok tam nie je preto, aby GRASS za každú cenu vyzeral sparťansky, ale jednoducho preto, že pri zložitejších moduloch je to naozaj najefektívnejší spôsob, ako systému zadať parametre a vstupy. GRASS možno triviálne veci rieši trochu zložitejšie, ale v náročnejších analýzach (teda v takých, ktoré nie sú štandardne obsiahnuté v magickej ikonke proprietárneho GISu) je naozaj doma, preto ten príkazový riadok. Len pre príklad Arc/Info, proprietárny GIS od firmy ESRI, ktorý je považovaný za vysoko kvalitný nástroj (niekedy až za štandard) takisto používa prostredie príkazového riadku. Pre zložitejšie analýzy (veda a výskum, netriviálne riešenia problémov reálneho sveta) sa jednoducho ikonka nehodí.

GRASS dokáže pracovať s dátami v rastrovom, vektorovom a bodovom modeli. Najsilnejší je však v analýze rastrového modelu dát. Funkcie pre vektorový model dát (podpora 3D vektorov) sa však zjavne zlepšujú. Treba to chápať asi tak, že v rastrovej analýze je na úrovni tých najlepších proprietárnych riešení (v určitých analýzach ich dokonca predstihuje) a vo vektorových zasa nijako zvlášť nevyniká. Treba si počkať na verziu 5.1.
Príkazy v GRASSe sa delia podľa modelu dát, s ktorým pracujú a podľa funkcie, ktorú vykonávajú do niekoľkých skupín. Tieto skupiny príkazov sa odlišujú začiatočným písmenom.

Tabulka č. 308
predpona trieda druh operácie
d.*   display grafický výstup
s.*   sites operácie s bodovými dátami
r.*   raster operácie s rastrami
i.*   imagery operácie s družic. snímkami
v.*   vector operácie s vektormi
g.*   general všeobecne operácie so súbormi
m.*   misc rôzne príkazy
p.*   paint tvorba map v PPM formáte
ps.*   postscript tvorba máp vo formáte Postscript

Počet monitorov v GRASSe môže byť maximálne sedem (x0 – x6). Ako prvý sa otvára monitor x0. Nový monitor (x1) treba otvoriť príkazom, ten sa automaticky stáva aktívnym monitorom. Ak chcete zobraziť výstup na pôvodnom monitore (x0), treba sa naň prepnúť. Monitor zavriete, alebo príkazom, alebo myšou podobne, ako iné okná pod XWindows (Obr. 1).

Tabulka č. 309
GRASS:~ grass5 &
GRASS:~ tcltkgrass &
GRASS:~ d.rast aspect
GRASS:~ d.mon start=x1
GRASS:~ d.rast geology
GRASS:~ d.mon sel=x0
GRASS:~ d.mon stop=x1

Osobne Tcl/Tk rozhranie veľmi nepoužívam, vystačím si s oknom pre zobrazovanie rastra, vektora a bodov. K tomu ešte okno na zmazanie, (prekreslenie) obrazovky s farbou prekreslenia nastavenou na „white“. Príkazový riadok je rýchlejší a v kombinácii s históriou príkazov u mňa vyhráva. Často totiž používam ten istý príkaz, len s inými vstupmi, alebo parametrami. GUI však bol dobrý počin od tvorcov GRASSu, hlavne k ľuďom, ktorí s GRASSom začínajú.

Správa mapových vrstiev.

Jedna mapová vrstva v GRASSe (ďalej len ako mapa) je v skutočnosti tvorená viacerými súbormi, ktoré sú uložené v internej GRASSovskej adresárovej štruktúre. Môžete si ju prezrieť, ak si vylistujete obsah MAPSETu označenom ako PERMANENT. Platí však, že čokoľvek chcete robiť s mapou, mali by ste to robiť cez príkazy, nie editáciou, alebo mazaním súborov v tejto adresárovej štruktúre.

Kopírovanie máp sa prevádza príkazom g.copy, nasledovanom čiarkou a menom novej mapy. Skopírujme mapu „geology“ do „geology.new“, a mapu „soils“ z MAPSETu „PERMANENT“ do MAPSETu „user1“ pod menom „soils.new“. Tá istá syntax sa používa pre premenovanie a mazanie máp.

Tabulka č. 310
GRASS:~ g.copy rast=geology,geology.new
GRASS:~ g.copy rast=soils,soils.new@user1
GRASS:~ g.rename rast=geology.new,geology.quarternary
GRASS:~ g.remove rast=geology.quarternary,soils.new@user1
GRASS:~ g.mlist type=rast "soils.*"

Zistili sme, že cez znak „@“ môžme pristupovať k viacerým MAPSETom v rámci jednej LOCATION a mapy medzi nimi zdieľať, mazať a premenovávať. Ak chcete vylistovať, alebo zmazať viacero máp naraz (za použitia regulárnych výrazov), treba použiť príkazy s predponou „m“, tak ako to bolo ukázané v poslednom riadku predchádzajúceho príkladu.

Čo ak chceme preniesť našu prácu z jedného počítača na iný, ktoré adresáre potrebujem preniesť? Jednoducho treba skomprimovať celú LOCATION, v tomto prípade „spearfish“ a na inom počítači ju po prenesení rozpakovať. Ti isté riešenie sa používa, keď si dáta chcete zálohovať – stačí vygenerovať jeden *.tar.gz súbor a ten napáliť, alebo uložiť na server. Ako je to s prenášaním MAPSETov? Ak na mieste, kde ich chcete dostať, je tá istá LOCATION, stačí preniesť len adresár napr. „user1“. Ak na mieste je to isté kartografické zobrazenie, len iné súradnice, mapy môžme vidieť napr. tak, že nastavíme región (cez g.region) na základe už existujúcej mapy.

Tabulka č. 311
GRASS:~ g.region rast=geology.new
GRASS:~ d.erase # prekresli region do novych suradnic.

Princíp GISov je aj v tom, že svoje dáta máte priestorovo lokalizované a môžete vidieť priestorové súvislosti medzi nimi. Napríklad vidieť, aké pôdy sú v blízkosti ciest, či na akých sklonoch reliéfu sa prejavuje erózia pôdy a na akých ešte nie. Vyskúšajte si vykresliť viacero vrstiev a skúste zistiť aké hodnoty obsahujú pomocou modulov: d.what.rast, d.what.vect a d.what.sites. Tiež vyskúšajte príkaz d.zoom (Obr .2).

Tabulka č. 312
GRASS:~ d.rast soils
GRASS:~ d.vect map=roads col=black
GRASS:~ d.sites sitefile=bugsites color=yellow size=3

Vytvorenie novej LOCATION.

Pred tým než vytvoríme novú LOCATION, potrebujeme vedieť súradnicový systém, súradnice pre záujmové územie a rozlíšenie, v ktorom chceme pracovať. Vytvorme teda novú LOCATION v geografickom súradnicovom systéme (latitude/lon­gitude) pre územie Južnej Dakoty tak, aby pokrývala našu databázu Spearfish. Súradnice pokrývajúce územie Spearfish databázy sú nasledovné: SEVER 45° N, JUH 44° N, ZÁPAD 104° W, VÝCHOD 103° W. Novú LOCATION vytvoríme tak, že vo vstupnom dialogóvom okne vyberieme „Create New Location“. Systém sa v textovom menu spýta na názov novej location. Zadajte: „spearfishll“, pokračujte ďalej, až sa dostanete k menu, kde máme určiť súradnicový systém. Tu vyberte „B“ (Latitude-Longitude), pokračujte ďalej a zadajte jednoriadkovy popis novej LOCATION. Keď si systém vypýta meno elipsoidu zadajte „wgs84“. Nasleduje tabuľka, kde treba vyplniť súradnice špecifikujúce rozsah záujmového územia. Súradnice zadajte cez znak „:“, nezabudnite na znaky „N“ a „W“. Rozlíšenie nastavíte na 0:00:01 (stupne, minúty, sekundy), neskôr ho môžete ľubovoľne zmeniť (Obr. 1). Nakoniec zadajte ešte meno nového MAPSETu. Ak ste sa preklikali až k GRASSovskému promptu, gratulujte si, prvú LOCATION ste úspešne vytvorili.


Rozsah záujmového územia a rozlíšenie, v ktorom pracujeme sa dá nastaviť aj počas práce. Tieto parametre sa nastavujú príkazom g.region, ide o dôležitý príkaz a v každom GIS sedení ho určite použijete. Zoznam operácií, ktoré umožňuje získate po jeho výpise do promptu. Je dobré ovládať ho do detailov, bez neho sa ďaleko ísť nedá. Stane sa, že si naimportujete mapu do svojho MAPSETu, dáte si ju zobraziť a nič. Aj keď sa systém tváril, že niečo vykresľuje. GRASS ju vykreslil, ale mimo definovaného územia, ktoré vidieť na monitore, vtedy treba použiť kombináciu príkazov g.region a d.erase a mapu znovu vykresliť (viz. predchádzajúci príklad). Bude sa vám to na začiatku stávať často ;-)

Transformácia projekcií v GRASSe.

Niekedy potrebujeme preniesť mapu (transformovať mapu) z jednej projekcie do druhej. Prečo sa to robí? Pri zložitejšom projekte máme často vstupné dáta z rôznych zdrojov, teda od rôznych dodávateľov a v rôznych kartografických zobrazeniach. Pred konečnou analýzou a odovzdaním výsledného produktu ich však potrebujeme priestorovo ujednotiť, tj. transformovať do jednotného kartografického zobrazenia. Dôležitosť tohto kroku si uvedomíme až vtedy, keď v už naplno rozbehnutom projekte zistíme, že nami zvolené zobrazenie nedáva najlepšie výsledky, alebo produkuje neakceptovateľné skreslenia. Je to ako keď pri návrhu databázy nevhodne navrhnete štruktúru a prepojenia tabuliek. Našou úlohou bude transformovať územie Spearfish z zobrazenia UTM (Universal Transverse Mercator) do LOCATION „spearfishll“ (Latitude/Lon­gitude), ktorú sme si práve pripravili.

Koncepcia tejto operácia je nasledovná. Potrebujeme dve LOCATIONs – jednu zdrojovú (spearfish, UTM) a druhú cieľovú (spearfishll, Lat./Long.). Mapu zo zdrojovej LOCATION akoby vytiahneme do cieľovejLOCATION. Transformácia sa prevádza príkazom r.proj (platí pre raster, pre vektor a site dáta treba použiť v.proj resp. s.proj). Budeme transformovať mapu „elevation.dem“. Spusťme GRASS a v uvítacom dialógu vyberme LOCATION „spearfishll“ (cieľovú LOCATION). Ostatný postup je zrejmý z príkazov.

ict ve školství 24

Tabulka č. 313
GRASS:~ r.proj in=elevation.dem out=elev.ll \
location=spearfish mapset=PERMANENT
GRASS:~ g.region rast=elev.ll
GRASS:~ d.erase
GRASS:~ d.rast elev.ll
GRASS:~ g.region

Po transformácií rastra (rastrov, vektorov, site dát) môžme interaktívne myšou zisťovať polohu na území a takisto hodnotu rastra nadmorskej výšky cez príkaz d.what.rast. Mapové transformácie je potrebné zvládnuť aj preto, aby sme neboli limitovaní zobrazením, v ktorom sme dáta získali a aby sa dáta dali vzájomne zdieľať a vymienať. Nezabúdajte, že modulug.region sa pri práci s GRASSom nevyhnete. Ak ste zvládli transformáciu jednej vrstvy, skúste si transformovať aj niektoré vektorové, či bodové dáta. Nabudúce sa pozrieme na prácu s rastrom a naimportujeme do GRASSu prvé vlastné dáta.

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://gras­s.itc.it

Autor článku