Přeskočit obsah

Úvod do GRASS GIS

Přednáška

Cvičení

Při prvním spuštění GRASS automaticky nastaví vše potřebné a spustí grafické uživatelské rozhraní.

Poznámka

Toto chování platí pro verzi GRASS 8. Ve starších verzí se zobrazovala uvítací obrazovka.

Data, se kterými GRASS pracuje, jsou organizována v hierarchické struktuře. Ta má tři úrovně:

  1. Database (báze dat) - běžný adresář na disku, např. /opt/grassdata
  2. Location (lokace, projekt) - podadresář báze dat
    • Data, která souvisejí s daným projektem, zájmovým územím
    • Definována referenčním souřadnicovým systémem (referenční elipsoid, kartografické zobrazení, mapové jednotky)
  3. Mapset - podadresář lokace
    • Soubor datových vrstev, které tvoří logický, tématický celek v rámci lokace
    • Může odpovídat jednotlivým uživatelům (pokud na projektu pracuje více lidí) nebo uceleným analýzám (studium vegetace, záplavová území, terénní analýza, ...)
    • Každá lokace musí obsahovat alespoň jeden mapset s unikátním názvem PERMANENT (základní datové vrstvy)

Podobu datové struktury zobrazuje panel Data:

Při prvním spuštění je vytvořena ukázková lokace World LatLong WGS84. Rovněž se zobrazí vektorová mapa světa.

Poznámka

GRASS se liší od běžně používané terminologie GIS. Běžně používaný termín "vrstva" (layer) je v GRASS označován jako mapa (map).

GRASS GIS 8 při spuštění

Grafické uživatelské rozhraní GRASS je navrženo jako jednoduché a lehké. V podstatě se jedná o front-end, které volá příkazy systému GRASS na pozadí.

Tip

Pokud GUI spadne, lze jej znovu spustit pomocí g.gui z podkladového terminálu (příkazového řádku).

GRASS GUI vede uživatele pomocí tooltipů, jak je znázorněno na obrázku výše. Výchozí lokace není určena pro skutečnou práci. Dalším krokem je obvykle vytvoření nového "projektu" (v GRASS terminologii lokace) s uživatelem definovaným souřadnicovým referenčním systémem.

Poznámka

Zvažte změnu jazykového nastavení na angličtinu v Nastavení > Vlastnosti > Vzhled. Nastavte jazyk na en a restartujte GRASS.

Vstupní data

Tip

Pro stažení dat RÚIAN můžeme použít "RÚIAN plugin" pro QGIS.

Poznámka

Předstažená data najdete na GIS.labu v adresáři Repository/155FGIS/05.

Vytvoření lokace (projektu)

Kliknutím na tlačítko Create new Location v nápovědě (nebo kliknutím na tlačítko v panelu Data ) se zobrazí průvodce vytvořením nové lokace. Novou GRASS lokaci lze snadno vytvořit pomocí kódů EPSG nebo uživatelem definovaných geodat.

Na první stránce průvodce definujme název lokace (projektu). Volitelně můžeme přidat také krátký popis:

Na další stránce zvolme souřadnicový referenční systém (CRS), který bude pevně svázán s nově vytvořenou lokací. CRS se obvykle definuje pomocí

  • kódu EPSG (Select CRS from a list by EPSG or description) nebo
  • uživatelem definovanými geodaty (Read CRS from a georeferenced data file).

Pro vytvoření nové lokace zvolme možnost Read CRS from a georeferenced data file:

V našem případě pro definici CRS zvolme jeden ze vstupních datových souborů, a to městské části MAP_MESTSKECASTI_P.shp:

Prostorový referenční systém je v našem případě nastaven na základě vstupního souboru na EPSG:5514.

Novou GRASS lokaci vytvořme kliknutím na tlačítko Finish.

Po vytvoření nové lokace importujme data použitá pro definici CRS (v našem případě MAP_MESTSKECASTI_P.shp):

Ve výchozím nastavení GRASS vytvoří v nové lokaci také mapset PERMANENT. Zde jsou uložena všechna nastavení lokace. Tento mapset se typicky používá pro import vstupních geodat použitých v rámci projektu (lokace).

Importovanou vrstvu městských částí zobrazme dvojklikem na vrstvu v panelu Data:

Import rastrových dat

Importujme digitální model terénu (rastrová data) ve formátu GeoTIFF. Rastrová data lze importovat z panelu Data případně z menu File > Import raster data > Simplified raster import with reprojection.

Dialogové okno umožňuje importovat jeden rastrový soubor (Soubor) nebo více souborů z adresáře (Directory). V našem případě zvolme jeden soubor a vyberme DMT.tif.

Důležité

Pokud je souřadnicový referenční systém (CRS) vstupních dat liší od CRS aktuální GRASS lokace (Project match: No), dojde při importu dat k jejich transformaci do cílového CRS GRASS lokace. GRASS nepodporuje "on-the-fly" transformaci hned z několika důvodů.

V našem případě je ale informace o CRS ve vstupním souboru nepřesně zapsána. Transformace dat není v tomto případě žádoucí. Z tohoto důvodu zaškrtneme volbu Override projection check. Vstupní data jsou ve stejném souřadnicovém systému jako GRASS lokace.

Importovaná rastrová data se automaticky zobrazí v mapovém okně. Průběh importu se zobrazuje na kartě Console.

Ve vlastnostech (pravé tlačítko myši nad vrstvou v panelu Layers a Properties) vrstvy městských částí nastavme transparetní výplň a barvu hranic plošných prvků:

Základní metadata rastrové vrstvy vypišme z kontextového menu v panelu Layers (Metadata):

Rastrové mapy jsou reprezentovány pravidelnou mřížkou. Jsou podporovány tři datové typy:

  • CELL (celé číslo)
  • FCELL (float)
  • DCELL (double)

Úkol

Zjistěte prostorové rozlišení rastru.

Import vektorových dat

Importujme vrstvu vodních ploch z datasetu Data50 ve formátu Esri Shapefile. Vektorová data lze importovat z panelu Data případně z menu File > Import vector data > Simplified vector import with reprojection.

Poznámka

Na rozdíl od rastrových dat je v tomto případě souřadnicový systém detekován korektně (viz položka Projection match).

Podobně importujme vodní toky z datasetu Data50 a nastavme vlastnosti zobrazení v mapovém okně. Výsledek může vypadat následovně:

Základní metadata vektorové vrstvy vypišme opět z kontextového menu v panelu Layers (Metadata):

Podívejme se blíže na vektorová metadata vrstvy městské části. Místo "polygonů" vidíme "plochy" a další druhy geometrických prvků. GRASS nepřistupuje k vektorovým datům jako k jednoduchým prvkům (simple features), ale topologicky. Ve výpisu vidíme základní topologická primitiva jako body, linie, hranice, centroidy, plochy ostrovy.

Tip

Více k tématu topologická vektorová data najdete ve školení GISMentors.

Nastavení tabulky barev

Výchozí tabulka barev není zcela vhodná. Zvolme vhodnější tabulku barev elevation. V kontextovém menu (pravé tlačítko myši nad vrstvou v panelu Layers a Set color table) rastrové vrstvy nastavme v záložce předefinovanou tabulku barev elevation.

Atributové dotazování

Vyberme městskou část "Praha 7" jako naše zájmové území. Atributový dotaz proveďme pomocí správce atributových dat:

Tip

Stejnou operaci lze provést pomocí nástroje v.extract (viz následující sekce), což se hodí ve skriptech:

v.extract input=MAP_MESTSKECASTI_P@PERMANENT where="NAZEV_MC = 'Praha 7'" output=praha_7

Výpočetní nástroje

GRASS GIS je modulární systém, který se skládá z několika stovek nástrojů ("modulů" v GRASS terminologii). Nástroje jsou přístupné z menu, záložkyTools, nebo z příkazového řádku (Console).

Najděme nástroj, který ořeže vodní plochy podle zájmového území Prahy 7.

Vyhledejme nástroj podle klíčového slova 'clip'. Nástroj, který hledáme, se jmenuje v.clip. Modul lze otevřít pomocí tlačítka Run.

Tip

Nástroje (moduly) lze spouštět z dialogových oken grafického uživatelského rozhraní v kartě Console, nebo pomocí rozhraní API jazyka Python (to se naučíme v následující lekci).

Spuštění nástroje v.clip z Console:

Obrázek níže ukazuje dialog nástroje v.clip.

Tip

Syntaxe příkazu se zobrazuje ve stavovém řádku dialogu. Příkaz lze zkopírovat do schránky pomocí tlačítka Copy pro pozdější použití.

Odpovídající příkaz pro příkazovou řádku by vypadal následovně:

v.clip input=VodniPlocha clip=praha_7 output=voda_aoi

Oříznuté vodní plochy zájmovou oblastí (na pozadí WMS ZABAGED):

Poznámka

WMS vrstvu lze přidat do mapové okna pomocí v panelu Layers.

Každý nástroj v GRASS GIS začíná předponou. Tento prefix seskupuje nástroje do několik sekcí, viz tabulka níže.

prefix sekce popis
db. database Správa atributový dat
d. display Zobrazení mapových vrstev, dekorací, a pod.
g. general Správa, kopírování mapových vrstev a pod.
i. imagery Zpracování obrazových dat
ps. postscript Příprava mapových výstupů
r. raster Zpracování rastrových dat
r3. raster3D Zpracování 3D rastrových dat
t. temporal Zpracování časoprostorových dat
v. vector Zpracování vektorových dat

Tip

Nástroje systému GRASS lze v terminálu efektivně kombinovat se standardními příkazy UNIXu. Základní informace o syntaxi nástroje poskytuje přepínač --help.

Příklad:

cd ~/Repository/155FGIS/05
for f in `ls *.shp`; do v.import in=$f out=${f%%.shp}; done

Výpočetní region

Výpočetní region je klíčovým nastavením ve zpracování rastrových dat v GRASS GIS. Na rozdíl od jiných GIS softwarů, jako je Esri ArcGIS, který nastavuje výpočetní oblast na základě vstupních dat, GRASS tuto operaci nechává na uživateli.

Důležité

Uživatel tedy musí definovat výpočetní oblast před jakýmkoli zpracováním rastrových dat!!!

Výpočetní region je definován pomocí rozsahu (sever, jih, východ, západ) a prostorového rozlišení v obou směrech (východ-západ, sever-jih). Všimněme si, že GRASS podporuje pouze pravidelné mřížky.

Poznámka

Pro 3D rastrová data (známá jako "volumes") je k dispozici rozšíření 3D výpočetní mřížky.

Tip

Aktuální rozsah výpočetní oblasti je ve výchozím nastavení vizualizován v mapovém okně jako červený obdélník.

Velká většina nástrojů pro zpracování rastrových dat (r.*) respektuje nastavení výpočetního regionu. Existuje několik výjimek, jako jsou importní nástroje (např. r.import). Na druhou stranu většina nástrojů pro zpracování vektorových dat (v.*) výpočetní region zcela ignoruje, protože pro ně není definován žádná výpočetní mřížka.

Výpočetní region můžeme snadno nastavit podle rastrových nebo vektorových vrstev v panelu Layers:

Všimněme si, že při nastavování výpočetní oblasti na základě vektorové vrstvy se pouze nastavuje pouze prostorový rozsah. Výpočetní mřížku je vhodné zarovnat na základě rastrové vrstvy použité pro výpočet (Align computational region to selected map). Jinak by mohlo dojít k nechtěnému převzorkování dat.

Tip

Výpočetní region lze velmi efektivně spravovat pomocí nástroje g.region. Příklad níže:

g.region vector=praha_7 align=DTM

Topografické analýzy povrchu

Základní topografické analýzy povrchu poskytuje modul r.slope.aspect (Raster > Terrain analysis > Slope and aspect).

V dialogu nejprve zvolme vstupní rastrovou mapu s digitálním modelem terénu a poté v záložce Output požadovaný výstup:

r.slope.aspect elevation=DTM slope=sklon
Příklad výsledné mapy sklonu svahu ve stupních:

Úkol

Výpočet opakujte s různým nastavením výpočetního regionu.

Vypočítejte také orientaci svahu pro zájmové území Prahy 7:

Nastavení masky

Masku můžeme nastavit pomocí nástroje r.mask na základě vstupních rastrových či vektorových dat. Maska se vytvoří v aktuálně nastaveném výpočetním regionu.

V našem případě nastavme masku na základě zájmového území dané Prahou 7.

r.mask vector=praha_7

Mapa skonu svahu pro území Prahy 7 v barevné tabulce sepia:

Důležité

Maska je aplikována globálně pro všechny následné rastrové operace v daném mapsetu.

Masku můžeme odstranit pomocí příkazu r.mask -r.

Simulace povodně

Nejprve nastavme výpočetní region:

g.region vector=praha_7 align=DTM grow=1000

Pomocí nástroje Query raster/vector maps(s) v mapové okně odečteme souřadnici zvoleného bodu (seed) a jeho nadmořskou výšku. Např.

-741903.25,-1040411.12,180.2648

Simulaci povodně proveďme pomocí nástroje r.lake:

r.lake elevation=DTM water_level=181.26 lake=zaplava coordinates=-741903.25,-1040411.12

Ukázka simulace (na pozadí ČÚZK WMS Ortofoto):

Nyní spočťeme pro parcely počet zaplavených buněk, minimální, maximální a průměrnou výšku povodně:

v.rast.stats map=parcely raster=zaplava column_prefix=zaplava method=number,minimum,maximum,average

Poznámka

Vzhledem k tomu, že pracujeme s prostorovým rozlišením 1 m, tak "počet zaplavených buněk" udává výměru zaplaveného území v m2.

Vypišme pro zaplavené parcely jejich číslo, výměru, výměru zaplaveného území, minimální, maximální a průměrnou výšku povodně. Ve výpisu budeme ignorovat parcely s druhem pozemku 11 (vodní plocha).

v.db.select map=parcely columns=KmenoveCislo,PododdeleniCisla,VymeraParcely,zaplava_number,zaplava_minimum,zaplava_maximum,zaplava_average where="DruhPozemkuKod != 11 and zaplava_number > 0"

Příklad výpisu:

KmenoveCislo|PododdeleniCisla|VymeraParcely|zaplava_number|zaplava_minimum|zaplava_maximum|zaplava_average
1929|1|35885|344|0.0024871826171875|1.45750427246094|0.892444211383199
1904|7|282|281|0.190658569335938|0.277130126953125|0.218380150845891
1903|13|585|586|0.07611083984375|0.533905029296875|0.259752032699845
...

Přidejme do atributové tabulky nový atribut zaplava_perc:

v.db.addcolumn map=parcely columns="zaplava_perc double precision"

A dopočítejme procento zaplaveného území pro každou parcelu:

v.db.update map=parcely column=zaplava_perc value="(zaplava_number / VymeraParcely) * 100"

Tip

Tyto operace můžeme provést také ve správci atributových dat.

Vypišme parcely, které nepatří do vodních ploch a mají zaplavenu alespoň čtvrtinu své výměry:

v.db.select map=parcely columns=KmenoveCislo,PododdeleniCisla,zaplava_maximum,zaplava_average where="DruhPozemkuKod != 11 and zaplava_perc > 25"

Příklad výpisu:

KmenoveCislo|PododdeleniCisla|zaplava_maximum|zaplava_average
1904|7|0.277130126953125|0.218380150845891
1903|13|0.533905029296875|0.259752032699845
1903|12|0.2393798828125|0.140911561656373
...

A vizualizace:

Další materiály