Hlavní navigace

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

11. 2. 2003
Doba čtení: 4 minuty

Sdílet

V dnešnej časti si vysvetlíme princípy použitia masky v GRASSe a preberieme úvod do rastrovej algebry. Obidva postupy sa často používajú v praxi. Zatiaľ čo maska sa tvorí v GRASSe jednoducho, rastrová algebra pomocou príkazu r.mapcalc je problematika značne rozsiahla.

Práca s maskou

Maska sa v GISoch používa keď chceme zablokovať určité územia regiónu, teda chceme, aby sa na nich neprevádzala žiadna operácia. Ako keby sme ich chceli pred GRASSom skryť. Napríklad:

  • Máme raster nadmorskej výšky územia, kde chceme určovať potenciál pre vznik lavín v nadmorských výškach nad 1200 metrov.
  • Chceme počítať digitálny model reliéfu územia, ale nechceme doň zahrnúť kameňolomy
  • Chceme vypočítať priemerné zrážky práve pre jedno povodie.
  • Za použitia geologickej mapy chceme určiť náchylnosť podzemných vôd na znečistenie (nespevnené horniny, hlavne piesky a štrky sú pre povrchovú vodu priepustné, ale íly nie).

Toto všetko sú úlohy, kde sa bez masky nezaobídeme. Technicky je maska raster, ktorý má dva hodnoty: 1, a NULL. Pixle s hodnotou 1 vstupujú do všetkých operácií. Na pixloch s hodnotou NULL sa žiadna operácia neprevádza. Tie sú pre GRASS skryté.

Aby sme vytvorili masku potrebujeme zdrojový raster. Zdrojovou mapou môže byť mapa geology (z location SPEARFISH). Maska sa vytvára príkazom r.mask. Hodnotu 1 priradíme len nespevneným horninám (shale, sandy shale, claysand, sand; kategórie 6–9 (Obr. 1)). Po zadaní príkazu r.mask, vyberieme ponuku „Identify a new mask“, zadáme zdrojovú mapu a zadáme hodnotu 1 pre nespevnené horniny. Takto môžme hodnotu 1 priradiť jednej, alebo viacerým kategóriam rastra. Ak teraz zobrazíme raster nadmorských výšok, objaví sa len na miestach nespevnených hornín (Obr 2.). Základné informácie o rozložení nadmorských výšok získame formou histogramu (Obr. 3)

Tabulka č. 375
GRASS: r.info map=geology
GRASS: r.mask
GRASS: d.rast map=geology
GRASS: d.rast map=elevation.dem
GRASS: d.hist map=elevation.dem

obr. 1

obr. 2

obr. 3

Čo sa pri vytvorení masky vlastne stalo? Všetkým pixlom, okrem tých, ktorým sme priradili hodnotu 1, sa priradila hodnota NULL. Tiež sa nám v danom MAPSETe vytvoril raster s menom „MASK“, čo je preddefinované meno pre masku. S rastrom MASK môžme pracovať ako s každým iným súborom, môžme ho napríklad premenovať, a tak si vytvoriť masku pre ďalšie použitie. Masku odstránime príkazom r.mask vybraním ponuky „Remove the current mask“.

Hodnoty rastrov „NULL“ a „0“

GRASS rozlišuje medzi hodnotami NULL a 0. Zatiaľčo 0 môže predstavovať reálne exitujúcu hodnotu (napr. teplota, počet chránených druhov…), hodnota NULL sa môže prekladať ako „nič“, teda pixel bez informácie.

V GRASSe je na prácu s NULL hodnotami príkaz r.null. Umožňuje dve operácie:

  • Priradiť hodnotu NULL, už existujúcej hodnote rastra.
  • Zmeniť exitujúcu hodnotu NULL, na nami definovanú hodnotu.
Tabulka č. 376
GRASS: r.null nejaka_mapa null=1999
GRASS: r.null nejaka_mapa setnull=1999

Môže nastať prípad, keď sa hodnoty NULL vyskytujú v rastri, čo spôsobuje, že sa niektoré operácie neprevádzajú korektne. Príkazom r.fillnulls sa vyplnia interpolovanými hodnotami z okolia.

Úvod do rastrovej algebry

Rastrová algebra má v GIS operáciach široké možnosti. Je založená na princípe pohybujúceho sa okna („moving window approach“). Ide o to, že okno definovanej veľkosti (3, 5, 7 …pixlov ) prechádza rastrom a pre centrálny pixel sa prevádzajú operácie s hodnotami susedných pixlov (Obr. 4). Výsledkom operácie v jednej polohe okna je nová hodnota pre jeho centrálny pixel. Okno sa pohybuje po všetkých riadkoch a stĺpcoch rastra, až sa vypočítajú nové hodnoty pre všetky pixle. Rastrová algebra je v GRASSe implementovaná príkazom r.mapcalc. Ide o rozsiahlu problematiku, preto na začiatok pomôžu dva manuály (na stránke treba hľadať výraz „mapcalc“). Oficiálny manuál k príkazu zasa obsahuje zoznam operandov a funkcií.

obr. 4

Všeobecná forma zápisu rastrovej algebry príkazom r.mapcalc je nasledovná:

Tabulka č. 377
nova_mapa = hodnota/mapa1 _rovnica_ [mapa2, mapa3...]

Príkaz r.mapcalc rozlišuje medzi integer a floating point hodnotami. Floating point hodnota sa vo výsledku objaví iba vtedy, ak aspoň jedna zo vstupných hodnôt bola floating point. Ak všetky hodnoty v rovnici boli typu integer, ale výsledok rovnice má byť floating point, musíme rovnicu prenásobiť hodnotou „1.0“ a to rovno so znakom „=“.

CS24_early

V nasledujúcich troch príkladoch budu mať výstupné rastre hodnoty: integer, floating point, floating point.

Tabulka č. 378
GRASS: r.mapcalc
mapcalc> mapa1 = integer_mapa + 123
mapcalc> mapa2 = integer_mapa + 123.
mapcalc> mapa3 = 1.0 * integer_mapa

V nasledujúcej časti seriálu spojíme príkazy r.reclass a r.mapcalc do praktických príkladov.

Použitá literatúra:

  1. Neteler, M. a Mitášová H. (2002). Open Source GIS: A GRASS GIS Approach. 1st edition. Kluver Academic Publishers
  2. http://grass.it­c.it
  3. Jones, Ch. (1997). Geographical Information Systems and Computer Cartography, Addison Wesley Longman
  4. ERDAS Inc. ERDAS Field Guide 4th ed., 1997. Atlanta, Georgia

Byl pro vás článek přínosný?

Autor článku