Hlavní navigace

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

Rado Bonk 30. 7. 2002

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.

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

Našli jste v článku chybu?

23. 8. 2002 19:18

Jaro (neregistrovaný)

Nedalo mi nezapojit sa. Kratko: Som rad ze sa konecne niekto nasiel, kto by predstavil GRASS sirsej verejnosti. Vdaka Rado!
...tesim sa na pokracovanie!


22. 8. 2002 6:46

Dora (neregistrovaný)

Super clanok, hned rozposlem linky znamim, a teraz k veci, ked sme pri tych LOCATION, ako je to so zadefinovanim projekcii krovak (suradnice s-jtsk) a Gauss-kruger, lebo vacsina udajov u nas je v tom, a este otazocku, pri definovani mapsetu, location atd. je tam parameter velkosti pixla, ten je cisto informativny ? napr. ked si zadefinujem location SR a v nej kcem mat mapsety s roznou rozlisovacou urovnou aky vplyv na to ma uvodne nastavenie velkosti pixla ?

dakujem, za odpoved a s radostou o…

DigiZone.cz: ČRo rozšiřuje DAB do Berouna

ČRo rozšiřuje DAB do Berouna

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Podnikatel.cz: EET zvládneme, budou horší zákony

EET zvládneme, budou horší zákony

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Root.cz: Vypadl Google a rozbilo se toho hodně

Vypadl Google a rozbilo se toho hodně

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

Lupa.cz: UX přestává pro firmy být magie

UX přestává pro firmy být magie

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

DigiZone.cz: ČRa DVB-T2 ověřeno: Hisense a Sencor

ČRa DVB-T2 ověřeno: Hisense a Sencor

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

Vitalia.cz: Chtějí si léčit kvasinky. Lék je jen v Německu

Chtějí si léčit kvasinky. Lék je jen v Německu

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí