Hlavní navigace

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

4. 2. 2003
Doba čtení: 5 minut

Sdílet

Dnes si ukážeme, ako sa pracuje s metadátami v GRASSe a tiež vysvetlíme princípy reklasifikácie rastrovej mapy. Reklasifikácia sa používa prakticky pri každej netriviálnej operácii v GRASSe. Metadáta oceníme zasa vtedy, keď sa nám na disku nahromadilo toľko dátových vrstiev, že v nich pomaly ale isto strácame prehľad.

Práca s metadátami v GRASSe

Metadáta sú „dáta o dátach“. To znamená, že je v nich informácia o tom, ako daná rastrová vrstva vznikla (napr. interpolačná metóda), kedy vznikla, aké boli vstupné dáta, aká je presnosť dát a podobne. Ak pracujeme s malým počtom rastrov, ktoré sme sami vygenerovali, metadáta nám veľmi nepomôžu. Ak sme však prebrali dáta od druhej strany, aby sme ich mohli použiť, potrebujeme vedieť, ako boli vygenerované, prípadne či prešli nejakým preprocessingom. Odpovede na tieto otázky sú práve v metadátach.

V GRASSe sú metadáta uložené v textových súboroch v adresári hist (~/grass_data/spe­arfish/PERMANEN­T/hist). Vypis metadát pre raster slope získame príkazom r.info. Ak chceme modifikovať existujúce metadáta, spravíme tak príkazom r.support jeho spustením v interaktívnom mó­de.

Tabulka č. 367
GRASS:~ r.info slope
GRASS:~ r.support

Na prácu s časovým údajom rastrovej vrstvy sa používa príkaz r.timestamp. Ak je zadaný bez argumentu času, vypíše sa existujúci časový udaj o vrstve (ak sa nevypíše žiadny, tak údaj neexistuje). Ak je ako argument zadaný čas, priradí sa tento údaj k rastrovej vrstve. V nasledujúcich zápisoch nastavíme aktuálny čas pre raster slope, časový interval pre raster landuse (ako oddeľovač je použitá čiarka), a relatívny čas pre raster vegcover.

Tabulka č. 368
GRASS:~ r.timestamp slope date="Ut jan
      28 16:34:12 EST 2003"
GRASS:~ r.timestamp landuse date="1 May 2000,
      31 August 2000"
GRASS:~ r.timestamp vegcover date="50 days"

Ten istý postup platí aj pre vektorové vrstvy (v.timestamp). Podľa manuálu by mal platiť aj pre bodové dáta. Avšak s.timestamp som vo svojej inštalácií (GRASS 5.0.0 (August 2002)) nenašiel.

Reklasifikácia restrových vrstiev

Reklasifikácia je zmena kategórií v rastri na iné kategórie. Napr. potrebujeme reklasifikovať mapu sklonov na kategórie podľa toho, ako vstupujú do modelu vodnej erózie pôdy, alebo kategórie využitia zeme podľa ich protierózneho účinku. Reklasifikovať môžme vrstvy s integer hodnotami, ale aj vrstvy s floating point hodnotami. Reklasifikácia sa prevádza modulom r.reclass. Ten môže byť spustený interaktívne, alebo so vstupnými parametrami. Reklasifikačnú tabuľku si treba pripraviť vopred vo forme textového súboru (nie je to nevyhnutné, ale môžme ju hocikedy editovať a použiť pre viacnásobnú reklasifikáciu).

Môžme reklasifikovať jednak podľa individuálnych kategórií (integer rastre), alebo podľa intervalov (integer a floating point rastre). Príklady reklasifikačných tabuliek môžu vyzerať takto:

Tabulka č. 369
1 2 3 4 = 1 úrodné pôdy
5 6  = 2  stredne úrodné pôdy
7 8 9 = 3 málo úrodné pôdy

alebo môžme kombinovať viaceré spôsoby reklasifikácie do jednej reklasifikačnej tabuľky:

Tabulka č. 370
1 2 3 4 = 1 úrodné pôdy
5 thru 6  = 2  stredne úrodné pôdy
7 thru 9 = 3 málo úrodné pôdy

Hodnoty rastrov, ktoré nie sú uvedené v reklasifikačnej tabuľke sa automaticky reklasifikujú na hodnotu NULL.

Reklasifikujme teraz raster slope do hodnôt, ktoré vstupujú do modelu výmoľovej erózie pôdy. Pripravíme si textový súbor s originálnymi a reklasifikovanými hodnotami sklonov. Príkazom r.report si prezrieme nové kategórie sklonov, a príkazom d.rast sa potom pozrieme na výsledok (Obr.1).

Tabulka č. 371
GRASS:~ r.report slope
GRASS:~ cat slope_reclass.txt | r.reclass slope
       out=slope.erosion
GRASS:~ r.report slope.erosion
GRASS:~ r.rast map= slope.erosion

Obr. 1

UNIXový príkaz cat bol použitý na presmerovanie reklasifikačnej tabuľky do príkazu r.reclass. Pri reklasifikovaní treba pamatať na dôležitú vec. Výsledný reklasifikovaný raster sa nevygeneruje fyzicky. Vygeneruju sa len pravidlá, ktoré vravia o tom, ako má vyzerať. Na monitore sa zjaví podľa rekl. pravidiel modifikovaný jeho „materský raster“. Takýto postup šetrí miestom na disku. To znamená, že ak zmažeme „materský raster“ zmažeme tým aj reklasifikovanú raster. Ak chceme aby rekl. raster existoval fyzicky, vygenerujeme ho príkazom r.mapcalc.

Tabulka č. 372
GRASS:~ r.mapcalc "slope.erosion.true=slope.erosion"

Výsledná mapa je však dosť rozbitá. To znamená, že mozaika kategórií sklonov je zložitá a neprehľadná. Keďže proces výpočtu sklonov, hlavne podľa účelu ich použitia, nie je triviálna záležitosť, môžme mozaiku, ktorú sme dostali, považovať za zbytožne zložitú. Ide najmä o výskyt malých areálov jednotlivých kategórií na mape, ktoré v tejto malej mierke, jednoducho rozdrobujú informáciu o sklonoch na území tak, že je ešte menej čitateľná, ako originálna mapa. Odovzdanie takejto mapy objednávateľovi len preto, že je výstupom z GISu, vyžaduje dobré zváženie.

V tejto fáze projektu nastupuje niečo, čo môžme nazvať geografická erudovanosť, či skúsenosť. Je potrebné vzniknuvšiu mapu dostať do prehľadnejšej podoby. To znamená odstrániť vysokú variáciu kategórií sklonov na malých plochách. Aplikujeme teda na mapu filter, ktorého výstupom budú len areály sklonov s rozlohou nad 5 hektárov (Obr. 2). Prázdne pixle (teda plochy s rozlohou pod 5 ha), vyplníme hodnotami pixlov s ich okolia (Obr. 3). Na prvú operácie použijeme príkaz, r.reclass.area a na druhú príkaz r.neighbours.

Tabulka č. 373
GRASS:~ r.reclass.area -g 5 slope.erosion slope.erosion.5
GRASS:~ d.rast map=slope.erosion.5
GRASS:~ r.neighbors input=slope.erosion.5 \
output=slope.erosion.5.fill method=mode size=7
GRASS:~ d.rast map=slope.erosion.5.fill

Príkaz r.neighbours má parameter size, ktorým sa definuje veľkost okolia nad aktívnym pixlom, v ktorom sa daná operácia prevádza. V našom prípade je size=7, tj. aktívny pixel sa nahradzuje najčastejšie sa vyskytujúcou hodnotou pixla (method=mode) v jeho okolí ohraničenom plochou 7×7 pixlov (najmenšia plocha pre „moving window approach“ je 3×3 pixle). „Moving window approach“ je často používaný spôsob výpočtu lokálnych parametrov spojitého poľa. Treba však vedieť, že od veľkosti okna (3×3, 5×5 … 15×15…) závisí aj kvalita a presnosť takto vypočítaných parametrov. Táto operácia je teda mierkovo závislá. Záleží teda od požiadaviek na presnosť a od účelu, akú veľkosť okna použiť. V našom prípade opakujeme príkaz r.neighbours dovtedy, kým sa nevyplnia všetky pixle s hodnotou NULL. Pričom vstupom je výsledok z predchádzajúceho použitia príkazu a tiež znížime veľkosť parametra size

root_podpora

Obr. 2
Obr. 3

V nasledujúcej časti si ukážeme používanie masky v GRASSe a preberieme si úvod do rastrovej algebry.

Použitá literatúra:

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

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