153YZOD Zpracování obrazových dat 2006 - 1. cvičení

Z GeoWikiCZ

Úvod do problematiky (GNU/Linux, GIS GRASS - základní příkazy)

osnova

Cílem tohoto cvičení je studenty velmi zběžně seznámit s operačním systémem GNU/Linux. Vzhledem k tomu, že se předpokládá jistá znalost tohoto OS z předcházejícího předmětu Úvod do operačního systému GNU Linux, bude tato část omezena na naprosté minimum nutné pro práci s GISem GRASS.

V druhé části cvičení přijde na řadu samotný GRASS. Budou vysvětleny základní pojmy jako je databanka GRASSu, location, mapset... Spuštění GRASSu, vizualizace jednotlivých mapových vrstev v GRASS monitoru, tj. demonstrace základních příkazů GRASSu s důrazem na modulární strukturu systému.

seznam použitých příkazů

  • g.list
  • g.manual
  • d.mon
  • g.region
  • d.rast, d.vect
  • d.m

spuštění GRASSu, základní pojmy

Poznámka: V dalším textu budeme předpokládat verzi GRASSu 6.x. Pokud používáte starší či novější:-) verzi, očekávejte drobné rozdíly...

Předpokládejme, že jsme úspěšně přihlášeni v systému GNU/Linux (či jiném) a máme již založenu databanku GRASSu (v našem případě adresář /home/student/grassdata). Otevřeme tedy příkazovou konzoli (xterm) a GRASS spustíme zadáním příkazu:

#spustit GIS GRASS
#
$ grass6

Poznámka: číslovka odpovídá instalované verzi GRASSu, může se tedy lišit. Nejde o dogmatickou kombinaci...

GRASS se spustí podle nastavení (soubor ~/.grassrc6) v grafickém či textovém módu (toto chování lze ovlivnit parametry -gui-text).

Obr č.1: Grafická uvítací obrazovka GRASSu
Obr č.2: Textová uvítací obrazovka GRASSu

Jsme ve fázi, kdy by bylo nanejvýš vhodné si objasnit základní pojmy a to v souvislosti se strukturou dat, které GRASS používá.

DATABASE (databanka GRASSu)
je adresář ve stromové struktuře OS, my se uklidníme jednoduchým tvrzením: jde o adresář /home/student/grassdata. V tomto adresáři jsou v podstatě uložena veškerá data, se kterými GRASS pracuje (tedy rastrové a vektorové mapové vrstvy, atributové tabulky, popisky ...). Jednu z mála výjimek představují atributová (popisná) data skladovaná v některém z externích databázových systémů (PostgreSQL, MySQL).
LOCATION (lokace)
je adresář umístěný v databance GRASSu. Lze konstatovat, že obsahuje data, která souvisejí s daným projektem. Je definována souřadnicovým systémem (referenční elipsoid, kartografické zobrazení, mapové jednotky) a velikostí zájmového území.
MAPSET (mapset)
je souborem map, které tvoří jakýsi logický celek v rámci lokace (daného projektu). Může např. odpovídat jednotlivým uživatelům (to pokud na projektu pracuje více lidí) nebo uceleným analýzám (studium vegetace, záplavová území, ...). Každá lokace musí obsahovat alespoň jeden mapset s unikátním názvem PERMANENT. Ten většinou obsahuje základní datové vrstvy, ostatní mapsety jsou pracovní (zpracování vstupních dat, jejich analýza...).

My zvolíme lokaci sevcech a mapset student (nikoliv tedy mapset PERMANENT!). Po stisknutí kombinace kláves ESC-RETURN (tj. ESC-ENTER), resp. kliknutí na tlačítko "Enter GRASS" se objeví příkazový interpret GRASSu. Jedná se v podstatě o klasický interpret, který je navíc obohacen o příkazy GRASSu (jsou tedy dostupné všechny systémové příkazy - ukažte mi GIS, který svému uživateli umožňuje spustit např. e-mailového klienta či internetový prohlížeč;-) Pokud je GRASS nastartován v grafickém módu, je také automaticky spuštěn tzv. "GIS Manager". Manuálně jej můžete spustit pomocí příkazu

#otevřít GIS Manager
#
GRASS:~ > d.m &

z příkazové konzole GRASSu.

Poznámka: Znak ampersandu (&) je v tomto případě velmi důležitý. Daná aplikace je potom totiž spuštěna na pozadí a příkazový interpret je přístupný pro další příkazy.

Obr č.3: GIS Manager ve vývojové větvi GRASSu 6.1

GRASS lze ovládat jak z příkazové řádky, tak pomocí GUI (grafického uživatelského rozhraní). My budeme během další práce vesele GUI ignorovat (a to jak výše zmíněný "GIS Manager", tak GUI jednotlivých modulů).

Nu, a nyní konečně do práce!

mapové vrstvy, vizualizace v grafickém okně GRASSu

Pro naše první koketování s GRASSem využijeme výše zmíněnou lokaci sevcech obsahující sadu družicových snímků LandSat TM5 z oblasti Severních Čech, dva snímky z družice SPOT a konečně i dva ukázkové radarové snímky. Navíc obsahuje několik jednoduchých vektorových map pokrývající území snímků LandSat. Po potvrzení lokace a mapsetu se tedy octneme v příkazovém interpretu obohaceného o příkazy (tzv. moduly) GRASSu. Tady se dostáváme k podstatné vlastnosti tohoto systému - a to jeho modularitě. Ve své podstatě to znamená, že disponuje poměrně rozsáhlou množinou malých, ale výkonných programů. To odpovídá koncepci UNIXu (tj. i GNU/Linuxu) jako takového, daný program má za úkol vyřešit dílčí problém, nic víc, měl by být co nejmenší a poměrně jednoduchý. V jednoduchosti se totiž skrývá nezměrná síla;-)

Jednotlivé moduly GRASSu mají až na výjimky podobnou syntaxi a jsou jako celek poměrně konzistentní. Jejich jména se skládají z předpony označující rodinu příkazů a krátkého názvu napovídajícího účelu modulu. Tak například modul d.mon patří do skupiny "Display" a je určen pro manipulaci s tzv. GRASS monitorem (otevření, uzavření).

Skupiny modulů GRASSu
předpona třída krátký popis
db. database práce s externími databázovými systémy
d. display grafické výstupy a vizuální dotazy
g. general obecné příkazy pro manipulaci s daty
r3. grid 3D zpracování 3D rastrových dat ("volume")
i. imagery zpracování obrazových dat
p. paint příkazy určené pro tvorbu mapových výstupů
ps. postscript příkazy pro tvorbu map ve formátu PostScript
r. raster zpracování rastrových dat
v. vector zpracování vektorových dat

Pokud tedy napíšete do konzole "g." a stisknete klávesu TAB (automatické doplnění příkazu), vypíší se všechny příkazy ze skupiny modulů "General".

První modul, se kterým se fyzicky seznámíme, bude g.list. Na něm si ukážeme standardní chování modulů GRASSu - pokud spustíme modul bez parametrů, objeví se jeho GUI a modul tak lze ovládat pomocí něho.

Obr č.4: GUI modulu g.list

Velmi užitečným parametrem je help, který zobrazí krátký popis modulu, jeho syntaxi (názvy parametrů a přepínačů), tak např. v případě výše uvedeného modulu se nešťastný uživatel dozví asi toto:

Description:
 Lists available GRASS data base files of the user-specified data type to standard output.

Usage:
 g.list [-f] type=datatype [mapset=name]

Flags:
  -f   verbose listing (also list map titles)

Parameters:
    type   data type
           options: rast,rast3d,vect,oldvect,asciivect,icon,labels,sites,
                    region,region3d,group,3dview
  mapset   mapset to list (default: current search path)

Where type is one of:
  rast      (raster files)
  rast3d    (raster3D files)
  vect      (binary vector files)
  oldvect   (old (GRASS 5.0) binary vector files)
  asciivect (ascii vector files)
  icon      (paint icon files)
  labels    (paint label files)
  sites     (site list files)
  region    (region definition files)
  region3d  (region3D definition files)
  group     (imagery group files)
  3dview    (3D view parameters)

Rozsáhlejší nápovědu nabízí g.manual (g.manual g.list, zajímavý je přepínač -m, který zobrazí nápovědu k požadovanému modulu jako manuálovou stránku).

Vraťme se ale k modulu g.list, který vypíše obsah aktuální lokace. Zjistíme tedy, které rastrové a vektorové mapové vrstvy máme k dispozici:

#seznam dostupných rastrových mapových vrstev
#
GRASS:~ > g.list rast

----------------------------------------------
raster files available in mapset PERMANENT:
rad1  rad2  spot1  spot2  spot3  tm1  tm2  tm3  tm4  tm5  tm6  tm7

----------------------------------------------
#seznam dostupných vektorových mapových vrstev
#
GRASS:~ > g.list vect

----------------------------------------------
vector files available in mapset PERMANENT:
silnice  voda  zelez

----------------------------------------------

Mapové vrstvy tedy obsahuje pouze mapset PERMANENT, náš mapset (student) je zatím prázdný. Poznamenejme, že tyto mapy můžeme číst, ale nemůžeme je editovat. Mapset v tomto ohledu (do jisté míry) zohledňuje přístupová práva (právo čtení, zápisu).

Na závěr tohoto kurzu se pokusíme vybrané mapové vrstvy vizualizovat - zobrazit na obrazovce počítače. K tomu slouží speciální okna (tzv. "GRASS monitory"), celkem jich může být spuštěno 6 (označují se x0 až x6). Pro manipulaci s GRASS monitory slouží modul d.mon. Jeho ovládaní je poměrně intuitivní - otevření (parametr start), výběr (select) a zavření monitoru (stop).

#otevřít první GRASS monitor
#
GRASS:~ > d.mon start=x0
#
#otevřít druhý GRASS monitor
#
GRASS:~ > d.mon start=x1
#
#vybrat první GRASS monitor
#
GRASS:~ > d.mon select=x0
#
#uzavřít první GRASS monitor
#
GRASS:~ > d.mon stop=x1

Na tomto místě si dovolím malý, nepříliš vhodný (z pedagogického hlediska;-) úkrok stranou. Názvy parametrů lze libovolně zkracovat či dokonce vypouštět (to v případě, že se jedná o první parametr v seznamu parametrů). Výše uvedený příklad lze tedy alternativně zapsat:

GRASS:~ > d.mon x0
GRASS:~ > d.mon x1
GRASS:~ > d.mon se=x0
GRASS:~ > d.mon sto=x1

Před samotnou vizualizací je záhodno zmínit další velmi důležitý pojem a to region. Region je část území (tvar čtyřúhelníka), které je definováno hraničními souřadnicemi SEVER JIH ZÁPAD VÝCHOD. Kromě velikosti nese informace o rozlišení, které se nicméně dotýká pouze rastrových dat - na data vektorová tedy nemá vliv. Výchozím regionem je myšlen region, který pokrývá (měl by) zájmové území celé lokace. Pro manipulaci s regionem slouží "kupodivu" modul g.region. Mezi nejdůležitější patří přepínač -d, který nastaví výchozí region a parametry rastvect, které nastaví region podle dané mapové vrstvy. Chceme-li tedy zobrazit družicový snímek tm1, je vhodné nejprve nastavit aktuální region podle této rastrové vrstvy (tedy území, které bude zobrazeno v GRASS monitoru) - velikost a rozlišení.

#nastavit aktivní region podle mapové vrstvy
#
GRASS:~ > g.region rast=tm1

Ve výsledku tedy máme otevřen první GRASS monitor (x0), který je navíc aktivní. Pro zobrazení rastrových dat se používá modul d.rast, pro vektorová data existuje, světe div se, d.vect. Oba moduly (především d.vect) disponují velkou množinou přepínačů a parametrů, které ovlivňují zobrazený výsledek na monitoru. Pro bližší informace odkazuji na jejich manuálové stránky. Na tomto místě si uvedeme pouze jeden demonstrační příklad:

#zobrazit v GRASS monitoru vybranou rastrovou a vektorovou mapovou vrstvu
#
GRASS:~ > d.rast tm1
GRASS:~ > d.vect zelez col=yellow
Obr č.5: Vizualizace rastrových a vektorových dat v GRASS monitoru