Úvod do praktických dovedností se svobodným geografickým informačním systémem GRASS 6.0 Otto Dassau, Stephan Holl, Marcus Neteler, Dr. Mandred Redslob Český překlad: Jáchym Čepický, Martin Landa, Záboj Hrázský verze/verze překladu: 1.0/0.1
6. května 2005
Impressum
Tento text není oficiální dokumentací k výše zmíněnému programu. Většina programů a hardwaru jsou obchodní značky a jako takové jsou chráněny patřičnými zákony. GRASS GIS je uvolněn pod licencí GNU General Public Licence. Bližší informace naleznete na jeho domovské stránce [4]. Všechny údaje, data a výsledky uvedené v tomto textu byli autory podle jejich nejlepšího svědomí vytvořeny a přezkoušeny. Chyby v obsahu ovšem nelze zcela vyloučit. Veškeré údaje jsou zbaveny ze strany autorů jakýchkoliv závazků či garance. Autoři a vydavatel nepřebírají žádnou odpovědnost nebo záruku za chyby a jejich následky. Upozornění na eventuální omyly budou přirozeně vzaty v potaz. Tento dokument byl vysázen v systému LATEX. Lze si jej stáhnout buď jako zdrojový kód LATEXu, jako dokument ve formátech PDF a HTML nebo si objednat tištěnou verzi u GDF Hannover bR [1]. Obrázky v tomto textu byly vytvořeny na základě volně dostupných geografických dat. Tato data a použitý software podléhají buď Public Domain, GNU General Public Licence nebo jiné odpovídající licenci. Další informace o svobodném softwaru, GISu GRASS a volně dostupných geodatech naleznete na internetových stránkách Sdružení uživatelů GISu GRASS (GRASS Anwender-Vereinigung e.V. (GAV)) [6], projektu FreeGIS [8] a Free Software Foundation Europe [2]. Stav: Březen 2005 c Copyright °2004-2005 GDF Hannover bR Autoři: Otto Dassau Stephan Holl Markus Neteler Dr. Manfred Redslob Internet: http://www.gdf-hannover.de Kontakt:
[email protected] Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections. A copy of the license is included in the section entitled ”GNU Free Documentation License”.
Obsah Předmluva
xi
1 Úvod
1
2 Výstavba a struktura
3
2.1
Geografická data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.2
Dimenze dat v GISu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.3
Databanka GRASSu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.3.1
Mapset PERMANENT . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.3.2
Struktura dalších mapsetů . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.4
Struktura příkazů v GRASSu . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.5
Nápověda k modulům GRASSu . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.6
Proměnné prostředí GRASSu . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
3 Instalace GRASSu 3.1
11
Instalace z binárního souboru . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
3.1.1
GRASS 5.4 [stable] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
3.1.2
GRASS 6.0 [testing] . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
3.2
Kompilace zdrojového kódu . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
3.3
Instalace z CVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
4 Databanka GRASSu
15
4.1
Spuštění GRASSu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
4.2
Mapová projekce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
4.2.1
19
Geoid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i
4.3
4.4
4.5
4.6
4.2.2
Referenční elipsoid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
4.2.3
Geodetické datum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
4.2.4
Typy kartografických zobrazení . . . . . . . . . . . . . . . . . . . . . . .
20
4.2.5
Výběr typu kartografického zobrazení . . . . . . . . . . . . . . . . . . .
21
Příklady kartografických zobrazení . . . . . . . . . . . . . . . . . . . . . . . . .
22
4.3.1
Azimutální zobrazení . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
4.3.2
Kuželová zobrazení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
4.3.3
Válcová zobrazení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
Souřadnicové systémy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
4.4.1
Globální souřadnicové systémy . . . . . . . . . . . . . . . . . . . . . . .
23
4.4.2
Dvou a tří dimenzionální souřadnicové systémy . . . . . . . . . . . . . .
23
Založení location v GRASSu . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
4.5.1
Příklady pro založení nové location . . . . . . . . . . . . . . . . . . . . .
25
4.5.2
Založení location se souřadnicovým systémem Gauß-Krüger . . . . . . .
25
4.5.3
Založení location se souřadnicovým systémem XY . . . . . . . . . . . .
27
4.5.4
Založení location s UTM . . . . . . . . . . . . . . . . . . . . . . . . . .
28
4.5.5
Založení location se systémem Latitude-Longitude . . . . . . . . . . . .
29
Mazání map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
5 Import dat
31
5.1
Import rastrových dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
5.2
Import vektorových dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
5.3
Import bodových dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
6 Georeferencování dat 6.1
6.2
37
Příprava před georeferencováním dat . . . . . . . . . . . . . . . . . . . . . . . .
37
6.1.1
Volba optimálního rozlišení při skenování . . . . . . . . . . . . . . . . .
38
6.1.2
Definice zájmové oblasti projektu . . . . . . . . . . . . . . . . . . . . . .
38
Proces georeferencování dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
6.2.1
Volba vlícovacích bodů . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
6.2.2
Transformace map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
7 Export dat 7.1
43
Export rastrových dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
7.1.1
Export pomocí knihovny GDAL . . . . . . . . . . . . . . . . . . . . . .
44
7.2
Export vektorových dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
7.3
Export bodových dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
8 Grafická uživatelská rozhraní
45
8.1
TclTkGRASS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
8.2
GIS Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
8.2.1
Menu s moduly analýzy dat (TclTkGRASS) . . . . . . . . . . . . . . . .
46
8.2.2
Grafická tlačítka pro jednoduchou vizualizaci (Display Manager) . . . .
47
9 Práce s rastrovými daty
49
9.1
Vizualizace rastrových map . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
9.2
Dotazování se na rastrové mapy a jejich metadata . . . . . . . . . . . . . . . .
51
9.3
Vybrané aplikace rastrových map . . . . . . . . . . . . . . . . . . . . . . . . . .
53
9.3.1
Výpočet profilů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
9.3.2
Analýza viditelnosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
9.3.3
Překryv jednotlivých rastrových map . . . . . . . . . . . . . . . . . . . .
55
9.3.4
Rastrové buffery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
55
9.4
Změna tabulky barev rastrové mapy . . . . . . . . . . . . . . . . . . . . . . . .
56
9.5
Statistické charakteristiky map . . . . . . . . . . . . . . . . . . . . . . . . . . .
57
9.6
Metody pro manipulaci s rastrovými mapami . . . . . . . . . . . . . . . . . . .
59
9.6.1
Reklasifikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
59
9.6.2
Maskování . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
Vektorizace rastrových dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
61
9.7
10 Nová struktura funkčních nástrojů pro zpracování vektorových dat
63
10.1 Nové vlastnosti GRASSu 6.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . .
63
10.2 Správa geometrie vektorových dat . . . . . . . . . . . . . . . . . . . . . . . . .
64
10.2.1 Práce s formáty podporovanými knihovnou OGR . . . . . . . . . . . . .
64
10.2.2 Geometrie vytvořená z DBMS
66
. . . . . . . . . . . . . . . . . . . . . . .
10.2.3 Geometrie uložená v textovém souboru
. . . . . . . . . . . . . . . . . .
66
10.3 Správa atributů vektorových map . . . . . . . . . . . . . . . . . . . . . . . . . .
67
10.3.1 Správa uživatelů a hesel u externích databází . . . . . . . . . . . . . . .
68
10.3.2 Výpis atributů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
10.3.3 Přiřazení atributů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
69
10.3.4 Manipulace s atributovými daty . . . . . . . . . . . . . . . . . . . . . .
70
11 Práce s vektorovými daty
71
11.1 Síťové analýzy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
72
11.1.1 Analýza nejkratší cesty . . . . . . . . . . . . . . . . . . . . . . . . . . .
72
11.1.2 Podsítě sítí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
73
11.1.3 Úloha minimálního Steinerova stromu . . . . . . . . . . . . . . . . . . .
73
11.1.4 Úloha obchodního cestujícího . . . . . . . . . . . . . . . . . . . . . . . .
73
11.1.5 Analýza nákladů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
73
11.2 Funkce průniku, překryvu a spojení . . . . . . . . . . . . . . . . . . . . . . . . .
73
11.2.1 Funkce spojení (union) . . . . . . . . . . . . . . . . . . . . . . . . . . . .
74
11.2.2 Funkce průniku (intersection) . . . . . . . . . . . . . . . . . . . . . . . .
75
11.2.3 Funkce vyříznutí (cutout) . . . . . . . . . . . . . . . . . . . . . . . . . .
75
11.2.4 Funkce překrytí (overlay) . . . . . . . . . . . . . . . . . . . . . . . . . .
75
11.3 Extrakce dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
76
11.4 Správa topologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
76
11.5 Vektorizace v GRASSu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
77
12 Příklad použití: Vektorová optimalizace spádových oblastí
85
12.1 Import ukázkových dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
85
12.2 Výběr klinik z bodové mapy . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
86
12.3 Přiřazení klinik síti silnic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
87
12.4 Vytvoření optimálních spádových oblastí . . . . . . . . . . . . . . . . . . . . . .
89
13 Konverze dat
91
13.1 Vektorizace rastrových dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
91
13.1.1 Vektorizace linií a isolinií . . . . . . . . . . . . . . . . . . . . . . . . . .
91
13.2 Rasterizace vektorových dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Interpolace
93 95
14.1 Interpolace rastrových dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
95
14.1.1 Metoda IDW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
96
14.1.2 Metota RST (spline) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
96
14.2 Interpolace dat ve vektorovém formátu . . . . . . . . . . . . . . . . . . . . . . .
97
15 Mapová algebra s modulem r.mapcalc 15.1 Modul r.mapcalc: definované operátory . . . . . . . . . . . . . . . . . . . . . .
99 99
15.2 Modul r.mapcalc: definované funkce . . . . . . . . . . . . . . . . . . . . . . . . 100 15.3 Vnitřní proměnné modulu r.mapcalc . . . . . . . . . . . . . . . . . . . . . . . 101 15.4 Maskování . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 16 3D vizualizace a animace
103
16.1 Zobrazení 3D rastrových dat v modulu NVIZ . . . . . . . . . . . . . . . . . . . 103 16.2 Zobrazení 3D rastrových dat
. . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
16.3 Vytváření animací . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 17 Vizualizace dat a mapový výstup
109
17.1 Mapový výstup ve formátu PostScript . . . . . . . . . . . . . . . . . . . . . . . 109 17.2 Export map pomocí ovladače PNG . . . . . . . . . . . . . . . . . . . . . . . . . 112 17.3 Stínovaný reliéf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 17.4 Tvorba map pomocí programu Xfig . . . . . . . . . . . . . . . . . . . . . . . . . 113 17.4.1 Zvolení vhodného měřítka . . . . . . . . . . . . . . . . . . . . . . . . . . 113 17.5 Tvorba map pomocí programu Skencil . . . . . . . . . . . . . . . . . . . . . . . 114 18 QGIS
117
18.1 Práce s vektorovými daty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 18.2 Vizualizace a klasifikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 18.2.1 Editace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 18.3 Práce s rastrovými daty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 18.4 Zpracování dat z GPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
18.5 Tvorba analogových map v QGISu . . . . . . . . . . . . . . . . . . . . . . . . . 122 19 Definice Svobodného Softwaru
125
20 GNU Free Documentation License
129
21 Seznam příkazů
137
Literatura
150
Seznam obrázků 1.1
Mapa vývoje GRASSu od roku 2001 (stav 1/2005) . . . . . . . . . . . . . . . .
1
2.1
Geometrická a popisná data v rámci geografických informačních systémů . . . .
4
2.2
Srovnání rastrového a vektorového datového formátu na identickém prvku . . .
5
2.3
Dimenze dat v GISu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
2.4
Struktura databanky GRASSu 6.0 . . . . . . . . . . . . . . . . . . . . . . . . .
7
3.1
Porovnání verzí GRASSu 5.4 a 6.0 . . . . . . . . . . . . . . . . . . . . . . . . .
11
4.1
Grafická Tcl/Tk uvítací obrazovka GRASSu . . . . . . . . . . . . . . . . . . . .
16
4.2
Textová uvítací obrazovka GRASSu pro definici nové location . . . . . . . . . .
17
4.3
Okno pro výběr kódu EPSG . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
4.4
Zobrazení zemského tělesa do roviny mapy . . . . . . . . . . . . . . . . . . . . .
19
4.5
Různá kartografická zobrazení . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
4.6
Zadání hraničních souřadnic . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
6.1
Proces souřadnicového připojení dat v GRASSu . . . . . . . . . . . . . . . . . .
37
6.2
Volba vlícovacích bodů naskenované topografické mapy v modulu i.points . .
40
8.1
Grafické uživatelské rozhraní TclTkGRASS 4.0 . . . . . . . . . . . . . . . . . .
45
8.2
d.m – GIS Manager GRASSu 6.0 s daty FRIDA . . . . . . . . . . . . . . . . . .
46
9.1
Několik profilů digitálního modelu terénu – modul d.profile . . . . . . . . . .
54
9.2
Vytvoření vyrovnávací (buffer) zóny pomocí modulu r.buffer . . . . . . . . .
56
10.1 Popis vektorové architektury GRASSu 6.0 . . . . . . . . . . . . . . . . . . . . .
65
11.1 Data VMAP0 Německa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
74
vii
11.2 Grafický panel modulu v.digit . . . . . . . . . . . . . . . . . . . . . . . . . . .
77
11.3 Topografická mapa regionu Spearfish s informacemi o využití půdy . . . . . . .
80
11.4 Vytvoření atributové tabulky při manuální vektorizaci . . . . . . . . . . . . . .
81
11.5 Udání atributů při vektorizaci . . . . . . . . . . . . . . . . . . . . . . . . . . . .
82
11.6 Nastavení hodnoty okolí („snapping thresholdÿ) pro navázání linií . . . . . . .
83
12.1 Síť silnic a klinik města Osnabrück . . . . . . . . . . . . . . . . . . . . . . . . .
86
12.2 Přiřazení ulic k nejbližší klinice . . . . . . . . . . . . . . . . . . . . . . . . . . .
89
13.1 Moduly pro automatickou vektorizaci rastrových map . . . . . . . . . . . . . .
91
13.2 Vyhlazování vektorizovaných linií . . . . . . . . . . . . . . . . . . . . . . . . . .
92
13.3 Moduly pro rasterizaci vektorových dat . . . . . . . . . . . . . . . . . . . . . .
93
16.1 Ovládací panel NVIZu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 16.2 Panel „Volumeÿ a zobrazení 3D rastrových dat . . . . . . . . . . . . . . . . . . 105 16.3 Rozdílné úrovně srážek na území Slovenska . . . . . . . . . . . . . . . . . . . . 106 16.4 Tvorba animací v NVIZu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 17.1 Jednoduchý výstup modulu ps.map . . . . . . . . . . . . . . . . . . . . . . . . . 111 17.2 Zobrazení stínovaného reliéfu pomocí modulu d.his . . . . . . . . . . . . . . . 113 17.3 Jednoduché rozvržení mapy v programu Xfig . . . . . . . . . . . . . . . . . . . 114 17.4 Výběr důležitých funkcí pro kreslení a editaci v programu Xfig
. . . . . . . . . 115
17.5 Grafický editor Skencil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 17.6 Grafický editor Xfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 18.1 QGIS s datasetem FRIDA (město Osnabrück) . . . . . . . . . . . . . . . . . . . 117 18.2 Vlastnosti vektorové vrstvy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 18.3 Editační režim zásuvného modulu QGISu pro GRASS . . . . . . . . . . . . . . 119 18.4 Zahájení a ukončení editace vrstvy ShapeFile . . . . . . . . . . . . . . . . . . . 120 18.5 Průhlednost („alpha-blendingÿ) vrstev v QGISu 18.6 QGIS-GPS plugin
. . . . . . . . . . . . . . . . . 121
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
18.7 Map Composer pro tvorbu analogových map v QGISu . . . . . . . . . . . . . 123
Seznam tabulek 2.1
Struktura modulů GRASSu . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
4.1
Parametry vybraných mezinárodně používaných elipsoidů . . . . . . . . . . . .
20
4.2
Vybrané geodetické datumy a jejich lokace . . . . . . . . . . . . . . . . . . . . .
20
4.3
Příklady azimutálních zobrazení . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
4.4
Příklady kuželových zobrazení . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
4.5
Příklady válcových zobrazení . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
5.1
Moduly GRASSu pro import rastrových dat . . . . . . . . . . . . . . . . . . . .
32
5.2
Moduly GRASSu pro import vektorových dat . . . . . . . . . . . . . . . . . . .
33
6.1
Stupeň polynomu transformace . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
7.1
Výběr modulů pro export rastrových dat . . . . . . . . . . . . . . . . . . . . . .
43
7.2
Výběr modulů pro export vektorových dat . . . . . . . . . . . . . . . . . . . . .
44
15.1 Definované operátory modulu r.mapcalc . . . . . . . . . . . . . . . . . . . . .
99
15.2 Definované funkce modulu r.mapcalc . . . . . . . . . . . . . . . . . . . . . . . 100 15.3 Proměnné modulu r.mapcalc . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 18.1 Nástroje GRASSu pro vektorizaci dat . . . . . . . . . . . . . . . . . . . . . . . 120
ix
Předmluva GDF Hannover bR [1] nabízí v rámci svých školení velké množství doprovodného materiálu. Ten je určen mimo jiné k tomu, aby si účastníci těchto kurzů mohli i po nich jednotlivé příklady samostatně zopakovat. Obsah tohoto textu se orientuje na kurz GDF Hannover bR s tématem: Úvod k praktickým dovednostem se svobodným geografickým informačním systémem GRASS 6.0 Jednotlivé části jsou popsány na základě letitých zkušeností našich spolupracovníků, vně i uvnitř naší podnikatelské činnosti, výuky na univerzitě v Hannoveru a spolupracovníků, členů vývojářského týmu GRASSu. Souvisí s naší filosofií, snažit se aktivně přispět k prosazování, rozšiřování a vývoji svobodného (GIS) softwaru. Z toho důvodu jsou všechny kapitoly knihy uvolněny pod GNU Free Documentation License a lze je stáhnout z internetových stránek GDF Hannover bR [1]. Jelikož jsou okruhy témat našich kurzů závislé jak na jejich délce, tak na specifických nárocích jejich účastníků, jsou jednotlivé kapitoly v tomto textu koncipovány jako přehled základních funkcí systému GRASS. Kapitoly nejsou žádným způsobem propojeny se speciálními cvičeními na kurzech GDF Hannover bR GISu GRASS. Tento text chápejte jako kompaktní přehledný úvod k tématu GRASS 6.0, se kterým je možné se během krátké doby seznámit a osvojit si jeho základní funkční nástroje. Jedná se zejména o text ve verzi 1.1, ve kterém jsou obsaženy všechny důležité změny týkající se GRASSu 6.0. Pro komplexní přehled odkazujeme na jednotlivé publikace uvedené v seznamu literatury.
Společnost pro analýzu dat a dálkový průzkum Země bR (Gesellschaft für Datenanalyse und Fernerkundung bR) Hannover, březen 2005 xi
Předmluva k českému překladu Toto je již druhý počin překladatelského tandemu Jáchym Čepický1 – Martin Landa2 (s laskavou pomocí Aleny Novotné, Záboje Hrázského3 a především Jarmily Landové). Tímto textem navazujeme na publikaci „GIS GRASS – Praktická rukověť ke geografickému informačnímu systému GRASSÿ (GRASS Handbuch) Markuse Netelera. Ačkoliv je tato příručka myšlena především pro GRASS 6.0 a GRASS Handbuch je zaměřena na řadu GRASSu 5.0.x, resp. 5.4, nemohou být tyto texty chápány jako ekvivalenty. Hlavní změnou v GRASSu 6.0 je zcela nová vektorová architektura. Způsob práce s rastrovými daty a daty dálkového průzkumu Země zůstal bez výraznějších změn. Tato publikace se zaměřuje především na práci s vektorovými daty a na další nové vlastnosti tohoto oblíbeného GISu. Po GRASS Handbuch vztáhne ruku určitě každý, kdo se chce poněkud hlouběji zabývat rastrovými daty a především zpracováním dat dálkového průzkumu Země. Tato témata jsou v této publikaci probrána jen zběžně (v případě DPZ vůbec). V každém případě je více než doporučeníhodné, nahlédnout také do publikace „Open Source GIS: The GRASS GIS Approachÿ [NM04] autorů Mitášové a Netelera, kde jsou zmíněná témata probrána velmi podrobně. Jelikož je ale tato publikace psána pro verzi GRASSu 5.4, musí se zájemce o práci s vektorovými daty s potřebnými informacemi seznámit buď prostřednictvím tohoto textu a nebo na síti Internet – dokumentace je více než dost. I když se snažíme podrobit překlad důkladné kontrole, je možné, že nám některé chyby utekly. Překladatelé budou rádi, budou-li na tyto chyby upozorněni. Text si lze stáhnout z domovské stránky „Českého sdružení uživatelů GISu GRASSÿ http://gama.fsv.cvut.cz/~grass/ ve formátu PDF, PostScript a jako archiv zdrojových textů (LATEX) a obrázků. Doufáme, že vám překlad usnadní počáteční orientaci v tomto skvělém softwaru. Jáchym Čepický & Martin Landa jaro 2005 1
Kapitoly 1–4, 7–17. Kapitoly 5, 6. 3 Kapitola 18. 2
xiii
1 Úvod Svobodný software se stává synonymem pro inovaci a pokrok, jelikož umožňuje volnou výměnu myšlenek mezi uživateli a vývojáři a zaručuje tak svobodu spuštění, modifikace a šíření programů včetně volně dostupného zdrojového kódu. Pro geografický informační systém GRASS GIS to znamená neustálý, celosvětově organizovaný a uživatelsky orientovaný vývoj. Tento dokument nabízí krátký úvod do geografického informačního systému GRASS. Rozšiřuje známou německy a anglicky psanou literaturu [Net00; NM04] o aspekty používání a instalace GRASSu 6.0. Poskytuje tak aktuální materiál popisující jeho nejnovější vlastnosti. Na úplný úvod si ozřejmíme mapu vývoje systému GRASS (obr. 1.1) s ohledem na jeho další předpokládaný vývoj. Z obrázku je patrné, jakým směrem se od roku 2001 ubírá vývoj GRASSu a kam dále směřuje.
Mapa vyvoje GRASSu 5.1.x CVS
5.0/5.1 code mix
6+ CVS HEAD 2003
5.1.x 2001 5.0.x CVS HEAD
5.3.x m
m
er
ge
5.7 2005 de co e r g o aj er m m
6.0
2003
er
ge
2004
5.0.x CVS release branch
5.4.x CVS release branch 5.0.2
5.0.3
Obrázek 1.1: Mapa vývoje GRASSu od roku 2001 (stav 1/2005)
1
5.4.0
2
2 Výstavba a struktura GRASS je hybridní, modulárně postavený GIS, jenž je orientován jak na zpracování rastrových, tak vektorových dat. Každá vlastnost – funkční prvek – je reprezentována zvláštním modulem. Tím je dána jasná struktura GRASSu a program tak působí značně transparentně. Další přednost této modularity spočívá v tom, že v paměti počítače jsou nahrány vždy pouze aktuálně používané moduly. Zdroje jsou tak využívány poměrně efektivně.
2.1
Geografická data
GIS obsahuje několik hlavních složek [BF91]: • vstup • správa • analýza • prezentace Datové typy jsou na základě svých vlastností dále děleny na geometrická, popisná a grafická data: Geometrická data popisují prostorovou polohu objektů s ohledem na jejich formu a relativní polohu v prostoru. Zpravidla se předpokládá vztah jednotlivých bodů, linií a ploch k danému souřadnicovému systému, čímž jsou tyto objekty vztaženy k reálnému světu a jeho metrice. Geometrická data mohou být uložena v rastrové (pixelové) nebo vektorové (polygony/plochy/areas, linie/lines, body/sites) podobě (viz obr. 2.1). Rastrová data reprezentují data v prostoru kontinuálně rozložená. Jsou uložena v pravidelné maticové, zpravidla čtvercové, struktuře dané buňkami o stejném rozměru. Každé buňce je přiřazen atribut (vlastnost), reprezentující určitý fenomén (např. hodnotu teploty nebo barvu). Uložení buněk je dáno jejich souřadnicemi. Jsou tak uspořádány do řádků a sloupců. Geometricky orientovaný přístup k datům se děje na základě souřadnic nebo 3
4
2.1. GEOGRAFICKÁ DATA zadáním řádku a sloupce matice. Práce s rastrovými daty umožňuje nasazení a analýzu dat dálkového průzkumu Země, jako jsou barevné infračervené letecké snímky, satelitní snímky a další. Nevýhodou rastrových dat jsou poměrně vysoké nároky na paměť a výpočetní výkon procesoru, které exponenciálně stoupají s jejich rozlišením. Tato nevýhoda se ale postupně ztrácí se stoupajícími výkony CPU a velikostí pevných kotoučů. Kromě toho nejsou rastrovým datům přiřazeny žádné relativní vztahy sousedů: každý pixel je definován v souřadnicovém systému sám o sobě. rastrova data 10 23 23 35 35 44 67 88 88 y 52 4 25 18 −5
vektorova data y
x
x
bodova data
popisna data x
y
x
x
x
x
x
x
x x xxx xx
x
y
3595555 3595249 3595009
5774906 5774455 5774123
Lts Lts Ls
3595867 3595339 3595889
5774983 5774445 5774101
Su Ls Lts
x
Obrázek 2.1: Geometrická a popisná data v rámci geografických informačních systémů
Vektorová data umožňují uložení liniových informací a jedná-li se o uzavřené linie (polygony) tak informací o plochách. Linie spojuje vždy dva body (uzly) o pevně daných souřadnicích. K jejich správě používá GRASS ve výchozím nastavení formát dBase. K dispozici ovšem máme i rozhraní umožňující přípojení externího DBMS (Database Management System), např.databázových systému jako PostgreSQL, MySQL, Oracle a další. V porovnání s rastrovými daty vykazují vektorová data výrazně nižší nároky na paměť počítače a odpovídající výpočetní čas při provádění analýz. Na rozdíl od rastrových dat nesou vektorová data informaci o tzv. topologii. To znamená, že linie a plochy „vědíÿ, které uzly obsahují, příp. které plochy s nimi sousedí. Bodová data (sites) můžeme zpracovat jako zvláštní formu vektorových dat. Používána bývají při skladování bodových informací rozmístěných v prostoru. V GRASSu 6.0 je tento typ dat, na rozdíl od verzí 5.0.x a 5.4 uložen ve formě vektorových bodů a má tedy vlastnosti odpovídající vektorové mapě.
2.1. GEOGRAFICKÁ DATA
5
Popisná data jsou atributy (categories), se kterými jsou výše zmíněné datové typy spojeny. Jejich uložení je ve většině GISů realizováno pomocí DBMI (Database Management Interface) v databázovém systému připojeném ke GISu.
Grafická data popisují způsob, jakým bude prostorový objekt znázorněn na určitém výstupním zařízení (monitor, plotter). V GISu dochází ke kvalitativním a kvantitativním vztahům výše zmíněných datových typů v rámci tzv. objektových modelů. V GISu uložené fenomény a objekty (entity) vystupují ve dvou základních strukturách:
• kontinuální → plošné a ohraničené v prostoru • diskrétní → ohraničitelné plošné a liniové objekty Výběr „správnéÿ reprezentace datových struktur při výstavbě GISu je vždy závislý na měřítku, prostorovém rozlišení, množství, zdroji dat, plánovaných analýzách atd. V rámci GRASSu je možná konverze mezi různými datovými strukturami, např. vrstevnice, uložené v podobě plošné modelu reliéfu (rastrový formát), mohou být převedeny na vektorové linie. A naopak interpolací je možné z vrstevnic (ve vektorovém formátu) vygenerovat spojitý povrch v rastrovém formátu. V závislosti na rozlišení dochází při převodu k relevantnímu stupni generalizaci výchozích dat (viz obr. 2.2).
Znazorneni identickeho prvku v rastrovem a vektorovem formatu 1
1
1
1
1
1
2
2
2
1
1
1
1
1
2
2
2
2
1
1
1
1
1
2
2
2
2
3
3
3
3
1
2
2
2
2
1
1
1
3
3
2
2
2
2
1
1
1
1
3
3
3
2
2
1
2 3
1 = louka
1
2 = vodstvo
3 = zastavba
Obrázek 2.2: Srovnání rastrového a vektorového datového formátu na identickém prvku
6
2.2. DIMENZE DAT V GISU
2.2
Dimenze dat v GISu
Prostorová data jsou převážně plošného charakteru, ve formě 2D nebo 2.5D. Jakmile je definována třetí informace (např. u výškových dat), začínáme hovořit o dvou a půlté dimenzi. Teprve u pravých 3D–systémů jsou uloženy informace popisující vlastnosti povrchů těles (např. povrchy budov nebo půdní profily) (viz obr. 2.3).
Bod 0D
Linie 1D
Plocha 2D
Relief 2.5D
Teleso 3D
Obrázek 2.3: Dimenze dat v GISu
2.3
Databanka GRASSu
Geodata jsou v GRASSu uložena v interní adresářové struktuře. Ve většině případů bývá k tomuto účelu založen adresář (např. grassdata) v domovském adresáři uživatele. Tento adresář bývá označován jako databanka GRASSu a musí být těsně po instalaci systému uživatelem založen: $ cd (přepnutí do domovského adresáře uživatele) $ mkdir grassdata (vytvoření podadresáře pro databanku GRASSu) Pro každou oblast projektu v GRASSu je automaticky založen podadresář v adresářovém stromu databanky GRASSu tzv. location, ve kterém budou uložena všechna data dotýkající se daného projektu. Location se dále dělí na mapové adresáře (mapsety). Tím je organizován přístup k datům (viz kapitola 2.3.1 a 2.3.2). Správa dat na této interní úrovni musí být přenechána GRASSu, což znamená, že všechny operace (kopírování, mazání, přejmenování) musí být provedeny patřičnými příkazy GRASSu (g.copy, g.remove, g.rename), aby se promítly do všech částí (geometrie, popisná a grafická data) jednotlivých vrstev v různých podadresářích.
2.3.1
Mapset PERMANENT
Souhrnné informace o mapové projekci, rozlišení a zájmové oblasti projektu jsou uloženy v location GRASSem automaticky založeném mapsetu PERMANENT. Na tomto místě lze sklado-
2.3. DATABANKA GRASSU GRASS Database
Location
7 Mapset
Geometricka a popisna data cats
/prov_bz
/meran /huber
cell cellhd cell_misc
/europa /home/user/grassdata
/hannover
colr /kronsberg
fcell hist
/world
/europe
strassen gruenflaechen vector
gewaesser poi
coor dbln hist sidx topo
strassen.dbf dbf
gruenflaechen.dbf gewaesser.dbf poi.dbf
Obrázek 2.4: Struktura databanky GRASSu 6.0
vat základní data (výchozí mapy) projektu, protože právo zápisu má zde pouze uživatel, který projekt založil. Tím je zajištěno, že tato data nemůže modifikovat nikdo třetí. Další uživatelé GRASSu, obyčejně se tím rozumí i uživatel, který vlastní mapset PERMANENT, by měli založit další mapsety, ve kterých budou uložena vlastní data, vzniklá na základě map z mapsetu PERMANENT a dalších zdrojů. V těchto mapsetech také probíhá vlastní zpracování dat. Soubory v mapsetu PERMANENT Přístup ke každému projektu location je řízen individuálně. Za předpokladu, že v mapsetu PERMANENT nejsou uloženy žádné mapy, obsahuje tento pouze informace o území projektu: DEFAULT WIND údaje o okrajových souřadnicích, rozsah a rozlišení oblasti PERMANENT MYNAME název projektu, např. hannover PROJ INFO údaje o kartografickém zobrazení, např. tmerc (Transverse Mercator), bessel (elipsoid), postdam (geodetické datum) PROJ UNITS údaje o použitých jednotkách, např. meter WIND údaje aktuálního REGIONu a projekce mapsetu
8 VAR
2.3.2
2.4. STRUKTURA PŘÍKAZŮ V GRASSU údaje pro ovladač databanky a cesty k databázovému souboru, resp. databázi
Struktura dalších mapsetů
Každý uživatel GRASSu může založit hned několik mapsetů, ve kterých jsou skladována jeho vlastní data dotýkající se daného projektu. Ty mohou pokrývat celé či pouze část zájmového území. Tato vlastnost struktury databanky GRASSu umožňuje více uživatelům, spojených např. sítí, pracovat současně na jednom projektu, aniž by hrozilo, že jeden uživatel zničí nebo změní data jinému. Mapsety uživatelů mohou být nastavením práv pro čtení dalším uživatelům cíleně začleněny do „vlastního projektuÿ. Výsledky analýz a další data jsou uložena v těchto mapsetech, ve kterých se uživatel nachází během svého sezení.
Struktura souborů v dalších mapsetech hodnoty kategorií (např. barvy nebo teplota) a atributů (třídy s legendou) jednotlivých rastrových dat cell/ vlastní rastrové mapy cellhd/ hlavičkové soubory jednotlivých rastrových map cell misc/ statistická data jednotlivých rastrových map colr/ tabulky barev jednotlivých rastrových map dbf/ obsahuje vnitřní vektorové atributy ve formátu dBase fcell/ rastrové mapy s plovoucí desetinnou čárkou (f: floating point) hist/ historie vzniku jednotlivých rastrových map vector/ obsahuje jednotlivá vektorová data (geometrie, topologie atd.) WIND údaje k aktuálnímu regionu a mapové projekci mapsetu. cats/
GRASS 6.0 umožňuje jedinému uživateli souběžně více sezení, tj. více aktivních mapsetů.
2.4
Struktura příkazů v GRASSu
Příkazy GRASSu mají jasnou strukturu. Typ příkazu se pozná podle jeho prvního písmene (předpony). Po této zkratce následuje jméno příkazu, které představuje program, v GRASSu označený jako modul. Např. modul sloužící pro digitalizaci rastru se jmenuje r.digit. Pro automatickou vektorizaci rastrových dat slouží modul v.to.rast. Tabulka 2.1 ukazuje jednotlivé skupiny těchto modulů.
2.5. NÁPOVĚDA K MODULŮM GRASSU
9
Moduly a programy v GRASSu Vedle modulů GRASSu máme během práce k dispozici veškeré Unix/Linuxové programy, které mohou být vyvolány pomocí shellu – příkazového interpretu. To je mimo jiné důležité při psaní programů, jejich aplikaci v GRASSu nebo jejich modifikaci. I když se to může zdát začátečníkovi obtížné, představuje programování pro GRASS v podstatě neomezenou možnost realizovat vlastní požadavky a představy v rámci GISu. Kromě toho se lze poměrně rychle naučit jednoduché vytváření Unix/Linux shellových skriptů.
2.5
předpona
Tabulka 2.1: Struktura modulů GRASSu třída funkčnosti význam příkazu
d.*
display
grafické výstupy a vizuální dotazy
r.*
raster
zpracování rastrových dat
i.*
imagery
zpracování obrazových dat
v.*
vector
zpracování vektorových dat
g.*
general
obecné příkazy pro manipulaci s daty
p.*
paint
příkazy sloužící pro vytváření map
ps.*
postscript
příkazy pro vytvoření map ve formátu PostScript
db.*
database
modul pro správu databází
r3.*
voxel raster
pro práci s 3D rastrovými daty
Nápověda k modulům GRASSu
Ke všem téměř čtyřem stům modulům existuje soubor s nápovědou (help), ve kterém jsou vysvětleny jednotlivé příkazy a jejich syntaxe. Rychlou nápovědu k použití modulu obdržíme pomocí parametru -help. GRASS:~ > d.rast -help Vyčerpávající návod s popisem modulu a příklady nasazení, který odpovídá manuálovým stránkám z domovské stránky GRASSu, vyvoláme příkazem g.manual jmeno modulu. GRASS:~ > g.manual d.rast Automaticky se spustí webový prohlížeč, ve které se manuálová stránka zobrazí. V nápovědě je rovněž začleněn index příkazů.
10
2.6
2.6. PROMĚNNÉ PROSTŘEDÍ GRASSU
Proměnné prostředí GRASSu
Během sezení v GRASSu jsou používány různé proměnné prostředí. Ty mohou být vypsány a modifikovány modulem g.gisenv. Spustíte-li tento modul bez parametrů, vypíše aktuální hodnoty proměnných: GRASS:~ > g.gisenv GISDBASE=/home/holl/grassdata GRASS DB ENCODING=utf-8 MAPSET=PERMANENT LOCATION NAME=spearfish GRASS GUI=tcltk Chceme-li získat pouze název právě spuštěného mapsetu, zadáme příkaz s parametrem MAPSET: GRASS:~ > g.gisenv MAPSET Pro změnu proměnných je syntaxe následující: g.gisenv set=’OVERWRITE=0’. Dojde k nastavení hodnoty proměnné OVERWRITE na přepisování, které je standardně vypnuto. Seznam všech proměnných prostředí GRASSu nabízí manuálová stránka g.gisenv variables. Poznámka: Nezávisle na popsané proměnné OVERWRITE nabízí GRASS pro rastrové a vektorové moduly přepínač -o nebo --overwrite (se dvěma pomlčkami). Tak lze přepsání map některými moduly vynutit, standardně jsou ale mapy proti zápisu chráněny.
3 Instalace GRASSu Při instalaci GRASS GIS máme k dispozici dvě varianty. Ačkoliv jsou tato skripta úvodem do GRASSu verze 6.0, zmíníme se na tomto místě také o instalaci verze 5.4. Volba verze se řídí podle potřeb uživatele a podle úloh, řešených v rámci daného projektu.Tyto dvě verze lze charakterizovat následujícím způsobem: • GRASS 5.4: Tato verze uzavírá vývoj oficiální řady GRASS 5.x., která je již mnoho let úspěšně používána v praxi a lze ji označit za krajně stabilní. Obsahuje rastrové funkční nástroje verze 6.0.0, rozdíl leží právě v nástrojích pro správu dat vektorových. Pro uživatele orientované na rastrové úlohy je tak verze 5.4 spolehlivou volbou. • GRASS 6.0.0: Jedná se o nejaktuálnější verzi, vydanou počátkem roku 2005 jako [testing]. Další vývoj GRASSu tak staví právě na této verzi. Rádi bychom uživatele povzbudili v používání a testování verze 6.0, neboť právě to je hnacím motorem další vývoj aplikace. GDF Hannover bR používá pro veškerou práci pouze tuto verzi.
GRASS 5.4
GRASS 6.0.0
rastrová analýza a zpracování obrazových dat 2D a 3D vizualizace d.dm /tcltkgrass
d.m / grafická rozhraní modulů
podpora bodových dat (sites)
body (sites) jako vektorová mapa
podpora 2D vektorových dat (starý formát)
2D/3D vektorová data
transformace mapové projekce síťové analýzy vektorových dat podpora DBMS prostorový index Obrázek 3.1: Porovnání verzí GRASSu 5.4 a 6.0
Následující popis se vztahuje na systém GNU/Linux, lze jej však podobně použít také na jiných operačních systémech. 11
12
3.1. INSTALACE Z BINÁRNÍHO SOUBORU
3.1
Instalace z binárního souboru
GRASS verze 5.4 a 6.0 lze nalézt na oficiálních internetových stránkách projektu1 [4]. GDF Hannover bR nabízí aktuální GNU/Linux distribuci GRASSu také jako balíček RPM.
3.1.1
GRASS 5.4 [stable]
Jak již bylo zmíněno, GRASS 5.4.0 je od 5.11.2004 oficiální stabilní verzí. Obsahuje v porovnání s předchozí verzí 5.0 důležité rastrové funkční nástroje. Nové funkční nástroje pro vektorová data však byly integrovány až ve verzi 6.0. Binární soubor založený na oficiálním zdrojovém kódu GRASSu verze 5.4.0 byl předkompilován pro různé platformy. Pro instalaci z toho vyplývá, že GRASS lze na počítač nainstalovat, aniž by jej musel uživatel opět kompilovat. A to v případě, že je tedy binární soubor pro požadovaný systém k dispozici a jsou na něm nainstalovány také důležité knihovny, se kterými GRASS spolupracuje2 . Pro názornost si na tomto místě popíšeme instalaci z binární souboru. Pro systémy GNU/Linux existuje momentálně binární soubor GRASSu 5.4.0. Kompilace na systému GNU/Linux se řídila pevně definovanými kritérii a soubor by tak měl být instalovatelný na většině platforem x86/Intel. K tomu je potřeba program a příslušný skript stáhnout do zvoleného adresáře a následně jej spustit s právy roota3 : $ su Password: $ sh grass5.4.0 i686-pc-linux-gnu install.sh \ grass5.4.0 i686-pc-linux-gnu bin.tar.gz Pokud máte nějaké individuální požadavky, překompilujte si raději aktuální zdrojový kód verze 5.4 sami. V některých případech je kompilace zdrojového kódu nutná, distribuce předkompilovaného programu totiž neobsahuje všechna rozšíření (např. podporu externích databází). Zdrojový kód GRASSu 5.4.0 a příslušný binární soubor je možné stáhnout přímo z domovské stránky GRASSu [4]. 1
Pozn. překl.: Na tomto místě si dovolím upozornit uživatele systému Debian GNU/Linux na projekt DebianGIS, který obsahuje velké množství balíčků ve formátu deb právě z oblasti GIS, tedy včetně GRASSu 6.0. Navíc je právě tato verze GRASSu součástí výše zmiňované distribuce (větev „testingÿ a „unstableÿ). 2 Pozn. překl.: Zároveň to také znamená, že GRASS může být zkompilován na míru daného systému. 3 Pozn. překl.: GRASS lze nainstalovat také bez práv uživatele root. Stačí jako cílovou cestu zadat adresář, do kterého máte právo zapisovat, např. /home/uzivatel. Jedná se o nouzové, ale funkční řešení. Více viz sh grass5.4.0 i686-pc-linux-gnu install --help.
3.2. KOMPILACE ZDROJOVÉHO KÓDU
3.1.2
13
GRASS 6.0 [testing]
Postup instalace je identický s verzí 5.4, pouze si ho rámcově připomeneme (viz kapitola 3.1.1). Nejdříve musí být binární soubor a patřičný skript uložen do zvoleného adresáře a následně spuštěn pod uživatelem root: $ su Password: $ sh grass6.0.0beta2 i686-pc-linux-gnu install.sh grass6.0.0beta2 i686-pc-linux-gnu bin.tar.gz V případě komplikací je řešením stáhnout aktuální zdrojový kód verze 6.0.0 a zkompilovat jej vlastními silami. Samotné kompilaci se v některých případech jednoduše nevyhnete, distribuovaný binární soubor totiž neobsahuje všechny funkční nástroje a moduly (např. podporu externích databází). Po úspěšné instalaci můžeme GRASS 6.0 spustit z konzole příkazem grass60.
3.2
Kompilace zdrojového kódu
Na tomto místě si popíšeme krátký postup kompilace a to pro případ, kdy je nezbytné zdrojový kód GRASSu verze 5.4 a 6.0 překompilovat. Je třeba si uvědomit, že s kompilací programů je potřeba mít určité zkušenosti a je vhodné prostudovat si návod k instalaci, tak aby vše proběhlo bez problémů. Nejprve zdrojový kód stáhneme a rozbalíme jej. Poté provedeme kompilaci a posléze instalaci, která je se v Unixových systémech řídí tzv. „svatou trojicíÿ: $ ./configure [...] $ make $ make install Skript ./configure je třeba spustit s dodatečnými parametry (cesty ke knihovnám a programům). Ukážeme příklad, kdy zahrneme podporu pro GDAL a PostgreSQL: $ ./configure --with-gdal=/usr/local/bin/gdal-config \ --with-postgres-includes=’/usr/include/pgsql usr/include/pgsql/server’ \ --with-postgres-libs=/usr/lib $ make $ make install Výpis konfiguračních parametrů získáme příkazem ./configure --help. Různé příklady konfigurace lze získat z internetové stránky GDF Hannover bR [1] z adresy
14
3.3. INSTALACE Z CVS
http://gdf-hannover.de/gis.php?id=2 nebo z domovské stránky GRASSu [4].
3.3
Instalace z CVS
Poslední varianta, o které se krátce zmíníme, spočívá ve stažení zdrojového kódu GRASSu 5.4 resp. 6.0 jako „CVS-Snapshotÿ z domovské stránky GRASSu [4] nebo přímo ze systému CVS. Nejdříve musíme nastavit proměnou prostředí CVSROOT. Následně se přihlásíme k serveru CVS a po zadání hesla stáhneme zdrojový kód a zkompilujeme postupem z kapitoly 3.2. Následující příklad platí pro interpret BASH: $ export CVSROOT=:pserver:
[email protected]:\ /home/grass/grassrepository $ cvs login Password: grass Samotný zdrojový kód stáhneme následující posloupností příkazů: $ cvs -z3 co grass $ cvs -z3 co grass51
pro GRASS 5.4 CVS pro GRASS 6.0 CVS (z historických důvodů GRASS 5.1)
A nakonec tento zdrojový kód zkompilujeme (viz kapitola 3.2). $ ./configure [...] $ make $ make install Aktualizaci zdrojového kódu lze v rámci adresáře grass příp. grass51 provést příkazy: $ make distclean vyčištění zdrojového kódu od již kompilovaných částí $ cvs up -dP aktualizace zdrojového kódu ze systému CVS
4 Databanka GRASSu V databance GRASSu jsou spravována souřadnicově připojená prostorová data. Proto je třeba na začátku práce definovat souřadnicový systém (např. Gauß-Krüger, UTM, atd.) zájmového území tzv. location. Před vlastním spuštěním GRASSu je potřeba si položit několik základních otázek. To je ostatně potřeba při práci v jakémkoli GISu. Se strukturou a organizací databanky stojí a padá pozdější práce. Velikost zájmového území projektu: všechna data importovaná během pozdější práce musí zapadnout do zájmového území location. Mimo jiné je důležité zamyslet se nad použitým kartografickým zobrazením. Mapová projekce je často dána vstupními daty (ta by měla obsahovat informaci o použitém kartografickém zobrazení, elipsoidu a geodetickém datumu). Rozlišení rastrových dat: obecně lze říci, že se zvyšujícím se rozlišením stoupá exponenciálně potřebný výpočetní čas počítače a požadavky na paměť. Pokud je na druhou stranu rozlišení příliš nízké, dostaneme jen těžko uspokojivé výsledky. Smysl má zvolit výchozí („defaultÿ) rozlišení takové, které odpovídá základním datovým zdrojům. Rozlišení rastrových map lze v podstatě kdykoliv změnit nastavením regionu. Při importu zůstává mapa v originálním rozlišení. Poté, co jsou tyto základní otázky objasněny, můžete založit adresář (např. grassdata), ve kterém se bude nacházet databanka GRASSu.
4.1
Spuštění GRASSu
Pokud se startovací skript GRASSu 6.0 nachází v cestě systémové proměnné ($PATH), může být GRASS spuštěn příkazem grass60 v okně příkazového interpretu („X-terminalÿ). Více je k tomuto tématu uvedeno v kapitole 3. Následně se objeví uvítací obrazovka, ve které je nutno vyplnit několik údajů. Parametrem -text a -gui lze zvolit textovou či grafickou podobu uvítací obrazovky (viz obrázky 4.1 a 4.2). $ grass60 -text textová uvítací obrazovka 15
16
4.1. SPUŠTĚNÍ GRASSU
$ grass60 -gui grafická uvítací obrazovka
Obrázek 4.1: Grafická Tcl/Tk uvítací obrazovka GRASSu Na tomto místě můžete zvolit již existující location a mapset nebo založit nové. Pokud chcete založit nový mapset v již existující location, vyberete požadovanou location a zadáte jméno nového mapsetu do pole Create New mapset a poté kliknete na tlačítko Create. . . (viz obrázek 4.1). Vytvořit novou location můžeme třemi způsoby. Údaje potřebné pro založení location mohou být zadány manuálně (1) či pomocí kódu EPSG (viz http://www.epsg.org), kde jsou zahrnuty nejrozšířenější mapové projekce a souřadnicové systémy. Tento kód můžete nalézt v menu (obr. 4.3) případně může být součástí metadat (2). Při poslední variantě je location založena automaticky na základě importovaných dat (moduly r.in.gdal a v.in.ogr) (3). 1. Pokud budete zadávat definiční údaje (např. mapovou projekci) ručně, klikněte na tlačítko Create New Location. GRASS se přepne zpět do textového režimu (obr. 4.2). Samotné zadání údajů je popsáno v kapitole 4.5.1. 2. Kód EPSG lze použít pro automatické založení nové location. Klikněte myší na tlačítko Create Location from EPSG a zadejte odpovídající kód (obr. 4.3). Pomocí EPSG Codes lze vypsat dostupné kódy včetně jejich definice1 . 1
Pozn. překl.: Souřadnicový systém S-JTSK (Křovákovo zobrazení) má kód 2065. Daný kód lze zjistit přímo v souboru /usr/local/share/proj/epsg příkazem: cat ‘locate proj/epsg‘ | grep krov.
4.1. SPUŠTĚNÍ GRASSU
17
Obrázek 4.2: Textová uvítací obrazovka GRASSu pro definici nové location
Obrázek 4.3: Okno pro výběr kódu EPSG
3. Data již mohou potřebné údaje obsahovat v podobě příslušných metadat. V tomto případě je možné vytvořit novou location přímo z aktuální lokace a použít k tomu právě metainformace dat. Příkladem mohou být data ve formátu SHAPEFILE, pokud disponují souborem obsahujícím metainformace (.prj) (což nebývá příliš často), nebo formát GeoTIFF. Příklad: Obsah souboru ve formátu SHAPEFILE (.prj) PROJCS["Transverse Mercator",GEOGCS["bessel", DATUM["Deutsches_Hauptdreiecksnetz", SPHEROID["bessel",6377397.155,299.1528128], TOWGS84[590.5,69.5,411.6,-0.796,-0.052,-3.601,8.30]],
18
4.2. MAPOVÁ PROJEKCE PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433]], PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0], PARAMETER["central_meridian",9],PARAMETER["scale_factor",1], PARAMETER["false_easting",3500000],PARAMETER["false_northing",0], UNIT["meter",1]]
Příklad: Metainformace jako součást rastrové mapy (GeoTIFF) Driver: GTiff/GeoTIFF Size is 3570, 3753 Coordinate System is: PROJCS["Transverse Mercator", GEOGCS["Deutsches_Hauptdreiecksnetz", DATUM["Deutsches_Hauptdreiecksnetz", SPHEROID["bessel",6377397.155,299.1528128000033], TOWGS84[590.5,69.5,411.6,-0.796,-0.052,-3.601,8.3]], PRIMEM["Greenwich",0], UNIT["degree",0.0174532925199433]], PROJECTION["Transverse_Mercator"], PARAMETER["latitude_of_origin",0], PARAMETER["central_meridian",9], PARAMETER["scale_factor",1], PARAMETER["false_easting",3500000], PARAMETER["false_northing",0], UNIT["meters",1]] Origin = (3368561.280000,5928333.120000) Pixel Size = (0.32000000,-0.32000000) Corner Coordinates: Upper Left ( 3368561.280, 5928333.120) ( 7d 1’12.86"E, 53d28’18.24"N) Lower Left ( 3368561.280, 5927132.160) ( 7d 1’14.67"E, 53d27’39.41"N) Upper Right ( 3369703.680, 5928333.120) ( 7d 2’14.77"E, 53d28’19.26"N) Lower Right ( 3369703.680, 5927132.160) ( 7d 2’16.56"E, 53d27’40.43"N) Center ( 3369132.480, 5927732.640) ( 7d 1’44.71"E, 53d27’59.33"N)
Je důležité tyto informace zkontrolovat a zajistit, aby byly pokud možno kompaktní. Položky jako geodetické datum (DATUM) či referenční elipsoid (SPHEROID) mohou vést k chybnému souřadnicovému připojení dat.
4.2
Mapová projekce
Než založíme location (definujeme tak zájmové území projektu), musíme uvážit, jakou použijeme mapovou projekci a nastavit její parametry. Této problematiky se dotkneme v následujícím textu.
4.2. MAPOVÁ PROJEKCE
19
Obrázek 4.4: Zobrazení zemského tělesa do roviny mapy podle [NM04]
4.2.1
Geoid
Geoid představuje snahu matematicky popsat tvar zemského tělesa. Jedná se tak o komplexní fyzikální model popisující gravitační pole Země2 jehož matematické vyjádření je značně složité. Geiod je ve značně zjednodušené formě znázorněn na obrázku 4.4. Pro potřeby praktické geodézie, mapování, kartografie i celé geoinformatiky je proto nahrazován referenčním elipsoidem, referenční koulí nebo i referenční rovinou.
4.2.2
Referenční elipsoid
Zjednodušený model Země jako referenční koule je pro mapy malých měřítek (1:2 mil.) příliš nepřesný3 . Komplexní tvar zemského tělesa se snaží exaktně – matematicky pokud možno co nejpřesněji popsat právě rotační elipsoid. Elipsoid je zploštělý – vzdálenost mezi póly je menší než průměr v oblasti rovníku (viz obr. 4.4). Existuje celá řada referenčních elipsoidů, které jsou navrženy tak aby v maximální míře nahrazovaly geoid v zájmové části Země nebo aby nahrazovaly celý geoid4 . Obecně lze konstatovat, že elipsoid jako matematická abstrakce zemského tělesa pro potřeby GIS postačuje.
4.2.3
Geodetické datum
Geodetické datum určuje model zemského tělesa (koule, elipsoid, geoid) jeho tvarem, velikostí, umístěním a orientací vůči zemskému tělesu. K určení datumu bylo třeba znát v minulosti jeden (v současnosti více) základních bodů, kde byly astronomickými, geofyzikální i terestrickými metodami měřeny údaje potřebné k určení parametrů datumu. V čase se geodetické datum mění! 2
Pozn. překl.: Geoid je definován jako plocha, na které všechny body mají stejný geopotenciál a která nejlépe odpovídá nerušené střední hladině světových moří, protažené i pod kontinenty. Tato plocha je ve všech bodech kolmá na směr tíže. 3 Pozn. překl.: Rovinu jako referenční plochu lze použít pouze pro malá území s nízkou požadovanou přesností. 4 Pozn. překl.: Rozlišujeme tak elipsoidy lokální (referenční) a globální (zemské).
20
4.2. MAPOVÁ PROJEKCE
Tabulka 4.1: Parametry (zaokrouhlené) vybraných mezinárodně používaných referenčních elipsoidů a příklady regionu podle [NM04]. elipsoid
hlavní poloosa (a)
vedlejší poloosa (b)
Bessel 1841
6377397
6356079
Clarke 1880 Hayford 1909
6378249 6378388
6356515 6356912
WGS 1984
6378137
6356752
lokace Německo, Chile, Nizozemí, Švédsko, . . . Afrika, Francie Belgie, Finsko, Itálie, Španělsko, ... Sev. Amerika, světově
Několik příkladů globálních a regionálních datumů je uvedeno v tabulce 4.2. Verze GRASSu 5.4 a 6.0 transformaci geodetického datumu podporují (viz obr. 3.1). Tabulka 4.2: Vybrané geodetické datumy s obecným údajem o jejich použití
4.2.4
datum
oblast
výchozí bod
elipsoid
WGS 84
globální
střed Země
WGS 84
NAD 1983
Sev. Amerika, Karibik
střed Země
GRS 80
European 1950
Evropa, Sev. Afrika
Potsdam
mezinárodní
Typy kartografických zobrazení
Kartografické zobrazení slouží k přenosu trojrozměrné (3D) informace ze zemského tělesa na dvourozměrnou (2D) rovinu mapy. V závislosti na regionu existují různá zobrazení (obr. 4.5), snažící se o co nejmenší možné zkreslení. Válcové (cylindrické) zobrazení: Toto zobrazení je poměrně triviální. Plocha zobrazení je „obtočenaÿ okolo referenční plochy v oblasti rovníku. Rovnoběžky a poledníky jsou pak na tuto rovinu promítnuty tak, že vzniká pravoúhlá síť. Toto zobrazení je používáno především v rovníkových oblastech. Kuželové (kónické) zobrazení: Pokud bychom vzali kužel a „nasadiliÿ jej na zemské těleso, dostaneme kuželové zobrazení. V nejjednodušším a také nejčastěji používaném případě špičku kužele protíná zemská osa. Poledníky směřují k pólu pod stejným úhlem a rovnoběžky tvoří koncentrické kružnice se středem v místě dotyku kuželu se zemským tělesem. Kužel se referenční plochy dotýká v jednom nebo dvou místech – standardních rovnoběžkách. Toto zobrazení je používáno především v oblastech se středními zem. šířkami.
4.2. MAPOVÁ PROJEKCE
21
valcove
kuzelove
azimutalni
Obrázek 4.5: Různá kartografická zobrazení (válcové, kuželové, azimutální)
Azimutální zobrazení: Rovina mapy je tečnou rovinou referenční plochy. Toto zobrazení si lze představit asi tak, jako bychom globus „prosvítiliÿ z nekonečně vzdáleného bodu. Poledníky a rovnoběžky by tak na mapě vytvořily odpovídající obraz. Základní typy zobrazení zde představené existují v různých modifikacích – v poloze normální (0◦ k zemské ose), obecné (šikmé) (45◦ k ose) a nebo příčné (transversální, rovníkové) (90◦ k ose).
4.2.5
Výběr typu kartografického zobrazení
Výběr kartografického zobrazení je dán jeho požadovanými vlastnostmi. Kartografické zobrazení je vždy ovlivněno jistým stupněm zkreslení jednoho nebo více prvků. Proto se musíme rozhodnout, které vlastnosti jsou pro náš účel primární. Úhlová věrnost (konformní, stejnoúhlá zobrazení): Délkové zkreslení není nijak závislé na směru uvažovaného délkové elementu a je tedy tedy konstantní. Poledníky a rovnoběžky se kříží v pravém úhlu. Jelikož je měřítko ve všech místech stejné, zůstává zachován tvar ploch. Kromě toho nedochází ke zkreslení úhlů mezi liniemi. Toto zobrazení se používá převážně v navigaci a zeměměřičství. Plošná věrnost (ekvivalentní, stejnoplochá zobrazení): Nedochází ke zkreslení ploch, zato zkreslení úhlová jsou značná. Poledníky a rovnoběžky se neprotínají v pravém úhlu, což ale u malých ploch tolik nevadí. Toto zobrazení bývá používáno pro mapy využití půdy, zalidnění a dalších faktorů závislých na ploše. Délková věrnost (ekvidistantní, stejnodélná zobrazení): V tomto případě zůstává zachována vzdálenost mezi body na mapě, nedochází tak ke zkreslení délky elementů. Bývá využíváno např. pro mapy silničních sítí.
22
4.3. PŘÍKLADY KARTOGRAFICKÝCH ZOBRAZENÍ
4.3
Příklady kartografických zobrazení
V tabulkách 4.3, 4.4 a 4.5 jsou uvedeny příklady typů jednotlivých kartografických zobrazení a jejich hlavní znaky. Další informace lze najít např. v [HG94] a [Kam86].
4.3.1
Azimutální zobrazení Tabulka 4.3: Příklady azimutálních kartografických zobrazení
typ
gnomické
stereografické
ortografické
střed Země
na povrchu Země
v nekonečnu, paprsky jsou paralelní
vlastnosti
není ani ekvidistatní ani konformní, kružnice se zobrazuje jako přímka, konstrukce geografické sítě závisí na poloze
jde o konformní zobrazení, poledníky a rovnoběžky tvoří ortogonální síť
není ekvivalentní ani konformní, zkreslení v rovnoběžkách je rovno jedné
použití
námořní, lesnické mapy
oblasti s kruhovým tvarem
při zobrazení z vesmíru
střed
promí-
tání
4.3.2
Kuželová zobrazení Tabulka 4.4: Příklady kuželových kartografických zobrazení
typ
Lambert Conformal Conic
Albers Equal-Area Conic
vlastnosti
konformní
ekvivalentní
použití
pro mapy velkých a středních měřítek středních zem. šířek
rovnoběžky jsou v okolí pólů blíže k sobě, než na rovníku. Používá se často v USA.
4.4. SOUŘADNICOVÉ SYSTÉMY
4.3.3
23
Válcová zobrazení Tabulka 4.5: Příklady válcových kartografických zobrazení
typ
Merkatorovo
transverzální Merkatorovo
zobrazení
normální poloha
transverzální poloha
vlastnosti
konformní, odstupy rovnoběžek se od rovníku zvětšují
konformní
použití
při navigaci a zobrazení blízko rovníku
doporučeno pro oblasti s protáhlým severojižním tvarem (základ pro Gauß-Krüger a UTM)
4.4
Souřadnicové systémy
Poté, co jsou objekty na referenční ploše zobrazeny do roviny zobrazení, je nutné ještě definován souřadnicový systém, tak aby bylo možné přesně určit pozici bodů na mapě. Rozlišujeme globální, 2D a 3D souřadnicové systémy.
4.4.1
Globální souřadnicové systémy
Longitude-Latitude: Nejčastěji používaný globální systém je definován zem. šířkou a délkou, příp. nadmořskou výškou. Referenčními hladinami jsou nultý poledník a rovník. Země je rozdělena na 180◦ od Greenwiche na východ a na západ do délkových stupňů a od rovníku na 90◦ severní a jižní šířky. Výška je měřena od středu Země, který je ovšem definován několika různými způsoby. Jednotky systému mohou být udávány v sexadecimálním (stupně:minuty:vteřiny, písmena k určení kvadrantu) nebo decimálním (kladné/záporné stupeň s plovoucí desetinnou čárkou) systému.
4.4.2
Dvou a tří dimenzionální souřadnicové systémy
Pro přesné numerické určené pozice bodů se v rovině zobrazení definuje kartézský souřadnicový systém. Většinou je osa y orientována k východu a osy x na sever. Počátek systému je pro každý systém jiný, pro vizualizaci v GRASS monitoru je umístěn ve spodním levém rohu okna. Na rozdíl od geografických a geocentrických souřadnic, jsou tyto systémy požívány pouze pro definovanou oblast (např. rovníkový pás). Ve světe je využívána celá řada souřadnicových systémů. Jsou definovány rozdílným počátkem, jednotkami, referenčním elipsoidem a kartografickým zobrazením. Vzájemnou transformaci mezi nimi je nutno exaktně matematicky popsat. GRASS disponuje pro tyto účely moduly r.proj a v.proj. Krátce se zmíníme o příkladu v Německu používaných souřadnicových systémů Gauß-Krüger a UTM.
4.5. ZALOŽENÍ LOCATION V GRASSU
24 Souřadnicový systém Gauß-Krüger
Tento souřadnicový systém byl poprvé použit v Německu roku 1927. Referenčním elipsoidem je Besselův elipsoid, kartografické zobrazení transverzální Merkatorovo zobrazení. Území Německa bylo rozděleno hlavními poledníky 6◦ , 9◦ , 12◦ a 15◦ (oddělené osy). Délkové zkreslení tak dosahuje pouhých 12 cm na jeden kilometr a to na okrajích pásů. Šířka těchto pásů odpovídá v obou směrech od hlavního poledníku cca. 100 km, čímž dochází k překryvu jednotlivých pásů asi 23 km. Hodnoty zem. šířky se odečítají na poledníku jako vzdálenost od rovníku. Aby se zamezilo vzniku záporných hodnot, přičítá se k hlavnímu poledníku vždy hodnota 500 000 m. Pro hodnotu zem. délky je tedy souřadnice rovna 500 000 minus (západní) nebo plus (východní směr) vzdálenost od poledníku (v metrech). Před tuto hodnotu je ještě přidáno číslo stupně poledníku, dělené třemi. Tak například Lüneburg leží v systému 9. poledníku o souřadnicích 3593000, 5902000 a v systému 12. poledníku na 4392753, 5902298. Souřadnicový systém UTM Souřadnicový systém UTM (Universal Transversal Mercator) je často používán v kombinaci s referenčním elipsoidem WGS84. Oblast mezi 84◦ severní a 80◦ jižní šířky je rozdělena na 60 poledníkových pásů, širokých vždy 6◦ . Z důvodu minimalizace délkového zkreslení na okrajích pásů je použit válec, který referenční plochu protíná ve dvou místech. Střední (hlavní) poledník má délkové zkreslení 0.9996. Zem. šířka je podobně jako v případě systému Gauß-Krüger odečítána od rovníku v kilometrech, na jižní polokouli je nutné přičíst 10 000 km, tak aby se předešlo vzniku záporných hodnot. Hodnota na ose x je dána vzdáleností od středního poledníku, a stejně jako v případě souř. systému Gauß-Krüger je přičtena konstanta 500 km. Souřadnice jsou označovány jako východní E (East) a severní N (North). Střední poledníky jsou 3◦ , 9◦ , 15◦ atd. Tento systém je používán pro armádní mapy USA a NATO. Díky mezinárodnímu rozšíření tohoto souřadnicového systému existují snahy zavést jej také v Německu příp. Evropě.
4.5
Založení location v GRASSu
Po tomto letmém výletu do světa kartografie bychom měli získat základ pro práci s geografickým informačním systémem a můžeme se tak pustit do definice různých oblastí projektu (locations) v GRASSu (viz kapitola 4.1). Pro založení location potřebujeme znát následující parametry: • souřadnicový systém (matematický systém xy nebo mapová projekce, referenční elipsoid a geodetické datum)
4.5. ZALOŽENÍ LOCATION V GRASSU
25
• zájmová oblast (minimální a maximální hraniční souřadnice území projektu) • rozlišení rastrových dat (výchozí rozlišení rastrových map)
4.5.1
Příklady pro založení nové location
Po startu GRASSu (kapitola 4.1) založíme novou location kliknutím na tlačítko Create New Location. Poté bude vyvoláno textové rozhraní (obr. 4.2). Toto prostředí lze přímo při startu GRASSu vyvolat příkazem grass60 -text. Po každém startu se uloží aktivní mód, ve kterém byl GRASS spuštěn. Pokud si tedy přejete vyvolat opět grafické rozhraní, spusťte GRASS napříště příkazem grass60 -gui. Pro vytvoření nové location musíte v okně vyplnit následující údaje: Location: Zde zadejte jméno této nové location (např. Hannover). Mapset: Zadejte jméno nového pracovního území (mapsetu), nacházejícího se v rámci území location (např. Kronsberg). Database: Nakonec doplňte cestu k adresáři grassdata, založeném předtím příkazem mkdir grassdata. Na tomto místě se tedy bude nacházet databanka GRASSu, kde budou posléze skladována všechna data (např. /home/martin/grassdata). Zapamatujte si: Mapset PERMANENT, ve kterém jsou uloženy základní informace o zájmovém území projektu vytvoří GRASS automaticky (viz kapitola 4). Následně pokračujeme pro GRASS typickou kombinací kláves Esc – Enter . Nyní nás čeká zadání dalších potřebných údajů. V kapitole 4.5.2 si ukážeme vše potřebné na příkladu location se systémem Gauß-Krüger. Postup je u jiných souřadnicových systémů podobný. Poznámka: Rozsah území (výřezu) lze kdykoliv pomocí modulu g.region -d nastavit na výchozí hodnotu. Aktuální hodnotu lze vytisknout příkazem g.region -p.
4.5.2
Založení location se souřadnicovým systémem Gauß-Krüger
Souřadnicový systém Gauß-Krüger používá transverzální Merkatorovo zobrazení, při kterém je zobrazovací plocha (válec) umístěna v transverzální poloze – tedy pootočena o 90◦ vůči zemské ose, a je otáčena okolo Besselova elipsoidu. Délkové zkreslení dosahuje maximálních hodnot na krajích pásů (12 cm/km na délku 2◦ ). To v podstatě znamená, že se topografické mapy na okrajích pásů nekryjí. První otázka směřuje na mapovou projekci. Systém Gauß-Krüger není uveden přímo v nabízeném seznamu, musí se tedy zadat volba other. Následující kroky jsou:
4.5. ZALOŽENÍ LOCATION V GRASSU
26
Pro souřadnicový systém Gauß-Krüger zadáme: - coordinate system for location: other (D) Následuje krátký popis nové location: - one line description for location: např. Hannover A další údaje o mapové projekci: - specify projection name: tmerc (Transverse Mercator) - specify ellipsoid name: bessel (Bessel Ellipsoid) - Do you want to specify a map datum for this location? potsdam - Enter Central Parallel [lat 0] (23N): 0N (Vztažná rovnoběžka) - Enter Central Meridian [lon] (96W): 9E (Vztažný poledník) - Enter Scale Factor at the Central Meridian: 1 - Enter False Easting: 3500000 (3 protože 9E je centrální poledník) - Enter plural form of units: meters (jednotky jsou metry)
Během jednotlivých otázek lze definované hodnoty vypsat pomocí příkazu list. Poté, co jsou zadány základní parametry použité mapové projekce, musí se definovat i okrajové souřadnice zájmové oblasti projektu se zadanou přesností. Při větší přesnosti musí být desetinná čísla oddělena tečkou (obr. 4.6). V tom samém formuláři zadáme rozlišení (velikost rastrové buňky v mapových jednotkách) ve směru východ-západ a sever-jih. Jedná se o standardní rozlišení (default) založené location. Na vektorová a bodová data nemá tento údaj žádný vliv. Tuto hodnotu je možné kdykoliv změnit. Nesmíme zapomenout na to, že velké rozlišení zvyšuje (exponenciálně) nároky na paměť a výpočetní čas procesoru. Po zadání všech potřebných údajů stiskneme kombinaci kláves Esc – Enter . Ocitneme se opět v uvítací obrazovce. Jelikož bylo spolu s location zadáno i jméno nového mapsetu, musíme jeho vytvoření potvrdit. Uvítací obrazovku tedy opustíme dalším Esc – Enter a vytvoření nového mapsetu potvrdíme zadáním yes. Tím jsme založili území projektu a spustili GRASS. To poznáme mimo jiné podle příkazového řádku GRASSu („GRASS promptÿ). Zadané údaje lze pro kontrolu vypsat příkazem g.region -p. Ukázkový výpis pro systém Gauß-Krüger by mohl vypadat např. takto: projection: zone: datum: ellipsoid: north: south:
99 (Transverse Mercator) 0 potsdam bessel 5801000 5787000
4.5. ZALOŽENÍ LOCATION V GRASSU
27
Obrázek 4.6: Zadání hraničních souřadnic a rozlišení rastrových dat projektu
west: east: nsres: ewres: rows: cols:
4.5.3
3427000 3445000 2.5 2.5 5600 7200
Založení location se souřadnicovým systémem XY
Vytvoření tzv. location xy, která bývá často potřebná jako mezikrok při souřadnicovém připojení nereferencovaných naskenovaných map, je o poznání jednodušší. Nezadáváme zde totiž žádné parametry mapové projekce. Po zadaní volby A při otázce na souřadnicový systém - coordinate system for location: x,y (A) pokračujeme rovnou do formuláře pro zadání okrajových souřadnic (columns nebo width, rows nebo height) zájmové oblasti projektu. Okrajové souřadnice jsou určeny velikostí nereferencované mapy v pixelech. Tuto velikost lze mimo jiné zjistit např. pomocí programu xv (v menu Windows→Image Info)5 . Za předpokladu, že počátek má nulové souřadnice, stačí zadat pouze výšku a šířku obrázku v pixelech. Výchozí rozlišení rastrových dat musí být logicky 1. 5
Pozn. překl.: Textově lze informace o obrázku zjistit např. pomocí ImageMagicku: identify obrazek.png
4.5. ZALOŽENÍ LOCATION V GRASSU
28
V souvislosti s importem naskenovaných map určených k souřadnicovému připojení se o tomto tématu zmíníme ještě v kapitole 6. Příkladový region (g.region -p) by mohl vypadat např. takto: projection: zone: north: south: west: east: nsres: ewres: rows: cols:
4.5.4
0 (x,y) 0 8000 0 0 8000 1 1 8000 8000
Založení location s UTM
Založení location UTM (Universal Transverse Mercator) je podobné založení location GaußKrüger (kromě menšího válce). Jak již bylo zmíněno zobrazovací rovinou není tečnový válec na Besselově elipsoidu, ale sečný válec na elipsoidu WGS84. Rozdílené údaje oproti systému Gauß-Krüger: -
coordinate system for location: UTM (C) specify ellipsoid name: z.B.: wgs84 (world geodetic system 1984) do you want to specify a map datum for this location? např: wgs84 Enter Zone 32 (UTM zóna pro západní Německo) Is this South Hemisphere? n (severní nebo jižní polokoule)
Následně se definují hraniční souřadnice zájmové oblasti projektu. Hodnoty jsou v mapových jednotkách (např. v metrech), což znamená sedmimístné číslo pro severní a šestimístné číslo pro východní souřadnici. Příklad (g.region -p) může vypadat např. takto: projection: zone: datum: ellipsoid: north: south:
1 (UTM) 32 potsdam wgs84 6100000 5880000
4.6. MAZÁNÍ MAP west: east: nsres: ewres: rows: cols:
4.5.5
29
500000 630000 12.5 12.5 17600 10400
Založení location se systémem Latitude-Longitude
Souřadnice location Latitude-Longitude jsou v šedesátinných stupních (0–90◦ severní příp. jižní šířky, 0–180◦ východní příp. západní délky), vyjádřené sexadecimálně (stupně:minuty:vteřiny, písmenko kvadrantu) nebo decimálně (kladné/záporné stupeň jako reálné číslo). Vstup okrajových souřadnic a rozlišení lze uvést jak v decimálním tak sexadecimálním tvaru. - coordinate system for location: latitude - longitude (B) Příkladový region (g.region -p) by mohl vypadat např. takto: projection: zone: datum: ellipsoid: north: south: west: east: nsres: ewres: rows: cols:
4.6
3 (Latitude-Longitude) 0 unknown (default: WGS84) unknown (default: WGS84) 90N 90S 180W 180E 0:04:48 0:04:48 2250 4500
Mazání map
Abychom nepoškodili interní strukturu databanky GRASSu, musíme při mazání map z mapsetu vždy použít příkaz g.remove! Pokud nevíte co děláte, nikdy nemažte soubory ručně, tedy mimo GRASS UNIXovými příkazy nebo v grafickém rozhraní. Pokud chcete smazat více map najednou, použijte příkaz g.mrenove.
30
4.6. MAZÁNÍ MAP
Jedinou výjimkou je vymazání kompletního mapsetu nebo location. Nejdříve opusťte GRASS příkazem exit a následně příkazem rm -r nebo pomocí správce souborů (např. Konquerorem6 ) smažte požadovaný mapset nebo location. Upozornění: Při tomto postupu budou všechna data (mapy, soubory) v adresáři (location, mapsetu) smazána7 ! Např. příkaz rm -rf ~/grassdata/Hannover odstraní celou location Hannover se všemi obsaženými mapsety nevratně a bez dalších otázek.
6 7
Pozn. překl.: Či lépe Midnight Commander – mc. Pozn. překl.: UNIXové systémy neví, co je koš a není cesty zpět.
5 Import dat Dříve než se dotkneme problematiky importu dat, je nutno ještě jednou poukázat na model datové struktury GRASSu, který je blíže popsán v kapitole 4. Interoperabilita je důležitým předpokladem pro práci v GISu, například pro import nezpracovaných dat nebo dat ve výměnných formátech ostatních produktů. GRASS poskytuje velký počet modulů určených pro import vektorových, rastrových a bodových dat. Syntaxi daného příkazu lze zjistit pomocí parametru --help nebo pomocí modulu g.manual. GRASS:~ > v.in.ogr -help GRASS:~ > g.manual v.in.ogr & GRASS:~ > r.in.gdal -help
5.1
Import rastrových dat
GIS GRASS podporuje řadu rastrových formátů. Všeobecně lze rozlišit tři typy formátů. obrazové formáty: Dobře známé obrazové formáty jako PPM, PNG, JPEG, GIF. Pixely mohou nést pouze kladné, celočíselné hodnoty. formát ASCII: Rastrová data ve formátu ASCII mohou obsahovat jak kladné tak záporné hodnoty, celočíselné hodnoty i hodnoty s plovoucí desetinnou čárkou. Příkladem tohoto formátu je ASCII-GRID. binární formát: V binárním rastrovém formátu mohou jednotlivé pixely obsahovat kladné i záporné hodnoty, hodnoty celočíselné i hodnoty s plovoucí desetinnou čárkou. Mimo to mohou nést různé kanály s rozdílným rozlišením. Příkladem pro tento formát je GeoTIFF nebo ERDAS/IMG. Na tomto místě je třeba poukázat na vlastnost GRASSu při práci s rastrovými daty: Rastrové mapy jsou vždy importovány v originálním rozlišení a s původními okrajovými souřadnicemi. Exportovány jsou naopak v aktuálně nastaveném rozlišení a aktivním výřezu (viz kapitola 7.1). Při importu souřadnicově nepřipojených dat je avšak třeba rozlišovat dva případy. 31
32
5.1. IMPORT RASTROVÝCH DAT 1. Location je definována s daným rozlišením a mapa musí do ní „zapadnoutÿ. Potom se rozlišení při skenování řídí právě podle tohoto požadovaného rozlišení (GRID RESOLUTION). 2. Parametry location – zejména rozlišení – se mají řídit podle importované mapy. Potom by měla být tato location vytvořena tak, aby mapa bez problému do tohoto prostoru zapadla.
V tabulce 5.1 je uvedena řada modulů, které jsou určeny pro import rastrových dat rozdílných formátů. Vedle formátů ostatních GISů zde naleznete i speciální formáty z oblasti dálkového průzkumu Země.
modul
Tabulka 5.1: Moduly GRASSu pro import rastrových dat rastrový formát
r.in.ascii
GRASS ASCII
r.in.bin
BIL, GMT binary files, LANDSAT TM5
r.in.gdal
ARC/INFO ASCII/Binary GRID, BIL, ERDAS (LAN, IMG), USGS DOQ, JPEG, SAR CEOS, EOSAT, GeoTIFF, PPM/PNM, SDTS DEM, GIF, PNG (viz http://www.gdal.org/formats_list.html)
Import dat ve formátu GeoTIFF Nejčastěji používaný importní modul GRASSu se jmenuje r.in.gdal. Jak je uvedeno v tabulce, tento modul podporuje velké množství různých formátů a to jak pro režim čtení tak zápisu (r.out.gdal). Jako příklad na tomto místě uvedeme import jedné již referencované mapy ve formátu ERDAS Imagine. Analogicky k vektorovým datům města Osnabrück je k dispozici na interních stránkách GDF Hannover bR ASTERDEM v rozlišení 30 m (viz http://www.gdf-hannover.de/gis.php?id=2). GRASS:~ > r.in.gdal in=asterdem30m.img out=asterdem30m Projection of input dataset and current location appear to match. Proceeding with import... 100% CREATING SUPPORT FILES FOR asterdem30m COPYING COLOR TABLE FOR asterdem30m Přepínač -e má za následek eventuální rozšíření výchozího regionu location na základě vstupních dat. # přizpůsobení aktuálního regionu podle vstupní mapy GRASS:~ > g.region rast=asterdem30m -p
5.2. IMPORT VEKTOROVÝCH DAT
33
Výsledek importu lze vizualizovat např. pomocí d.m (Display Manager) nebo jednoduše pomocí příkazu d.rast. Předtím musíte otevřít pomocí d.mon x0 příslušný GRASS monitor. # start Display Manageru GRASS:~ > d.m& # vizualizace mapy přes příkazový interpret GRASS:~ > d.mon x0 GRASS:~ > d.rast asterdem30m
5.2
Import vektorových dat
V aktuální verzi GRASSu 6.0 byla kompletně přepracována vektorová knihovna. Tento krok byl v podstatě nutný, GRASS ve verzi 5.4 byl totiž velmi silně zaměřen pouze na analýzu rastrových a bodových dat. V rámci této příručky se tak zaměříme především na nové funkční nástroje GRASSu verze 6.0 určených pro zpracovaní právě vektorových dat. Změny ve struktuře vektorového formátu jsou blíže popsány v kapitole 10. Při importu vektorových dat narazíte na velké množství rozličných formátů různých standardů. Struktura vektorových dat je navíc v porovnaní s rastrovými formáty komplexnější. Výměna se tak ukazuje často jako komplikovaná. Nejrozšířenějším formátem je ESRI ShapeFile. Seznam všech GRASSem podporovaných formátů naleznete v tabulce 5.2. Po importu vektorových dat vznikne v normálním případě mapa v nativním binárním vektorovém formátu GRASSu. To znamená, že geometrie, topologie a všechny charakteristické znaky jsou uloženy v interní databance GRASSu. Pro každou mapu se tedy vytváří během importu její topologie. Aktuální informace o topologii dat lze vypsat pomocí příkazu v.info. Další informace na toto téma jsou uvedeny v kapitole 10.
modul
Tabulka 5.2: Moduly GRASSu pro import vektorových dat vektorový formát
v.in.ogr
SHAPE file, UK.NTF, SDTS, TIGER, S57, MapInfo-File, DGN, VRT, AVCBin, REC, Memory, GML, ODBC (viz také: http://www.gdal.org/ogr/ogr_formats.html)
v.in.ascii
GRASS ASCII
v.in.e00
ArcInfo E00
v.in.db
databázová tabulka obsahující souřadnice
34
5.2. IMPORT VEKTOROVÝCH DAT
Import dat ve formátu ShapeFile Modul určený mimo jiné pro import dat ve formátu ShapeFile se jmenuje v.in.ogr. Důležité je přitom si uvědomit, že ShapeFile není topologickým formátem; neuchovává informace o vzájemných vztazích mezi jednotlivými objekty. Hraniční linie mezi plochami (polygony) tak mohou být duplicitní, což může vést k dalším komplikacím. Proto je nutné po importu tato data v GRASSu vyčistit. Data použitelná v dalším textu pocházejí z projektu FRIDA [9], který obsahuje řadu detailních vektorových map města Osnabrück a je volně k dispozici na Intevation GmbH [5]. GRASS:~ > v.in.ogr -o dsn=./frida-1.1-shp-joined/strassen-joined.shp \ out=ulice
12323 primitives registered 0 areas built 0 isles built Number of nodes : 8937 Number of primitives: 12323 Number of points : 0 Number of lines : 12323 Number of boundaries: 0 Number of centroids : 0 Number of areas : 0 Number of isles : 0
Pokud obsahují vektorová data informace o mapové projekci, lze na jejich základě automaticky vytvořit novou location z právě probíhajícího sezení. V případě formátu ShapeFile jsou tyto informace uloženy v souboru s příponou .prj. Syntaxe pro vytvoření nové location na základě importovaných dat je: GRASS:~ > v.in.ogr dsn=./frida-1.1-shp-joined/strassen-joined.shp out=ulice \ location=osnabrueck V interní databance GRASSu ($GISDBASE/$LOCATION/$MAPSET) je během importu vytvořen v adresáři vector podadresář obsahující mapu ulic. V tomto podadresáři jsou uložena data topologie (topo), hlavičky (head) , vektorové geometrie (coor), historie (hist), prostorový index (sidx), hodnoty kategorie (cidx) a odkaz na související atributová data (dbln). Atributová data byla uložena podle nastavení, tedy taktéž během importu dat. Výchozím nastavením je formát DBASE v adresáři dbf. V případě potřeby lze prohlédnout obsah právě importované atributové tabulky (ulice.dbf) odpovídajícím editorem. Pod operačním systémem GNU/Linux to může být OpenOffice.org, Gnumeric nebo KOffice.
5.3. IMPORT BODOVÝCH DAT
5.3
35
Import bodových dat
Speciální bodový formát již není podporován. Tato data jsou ukládána v podobě vektorových bodů a jsou analyzovatelná vektorovými moduly. Vektorové body, které jsou k dispozici ve formátu ShapeFile se importují podobně jako ve výše uvedeném příkladu modulem v.in.ogr: GRASS:~ > v.in.ogr -o dsn=./frida-1.1-shp-joined/poi-joined.shp out=body
268 primitives registered 0 areas built 0 isles built Number of nodes : 268 Number of primitives: 268 Number of points : 268 Number of lines : 0 Number of boundaries: 0 Number of centroids : 0 Number of areas : 0 Number of isles : 0
Import bodů (X|Y) Bodová data jsou velmi často uložena v prostém textovém formátu (ASCII). GRASS poskytuje pro tento případ modul v.in.ascii, který si na tomto místě krátce přiblížíme. Souřadnice bodových dat by měly být v pořadí y (EW) x (NS). Oddělovač přitom nehraje žádnou zvláštní roli. Jako příklad importujeme datový soubor (coord.txt), jednotlivé sloupce jsou od sebe odděleny svislým lomítkem:
1664619|5103481 1664473|5095782 1664273|5101919
GRASS:~ > cat coords.txt | v.in.ascii out=body Chybějící hodnoty kategorií (IDs) lze doplnit modulem v.category, a tak lze zajistit připojení dalších atributů, které jsou uloženy v databance: GRASS:~ > v.category in=body out=body2 op=add GRASS:~ > v.category body2 op=report Výsledek importu je potom uložen ve vektorovém formátu GRASSu v aktuální location v adresáři vector databanky GRASSu.
36
5.3. IMPORT BODOVÝCH DAT
Import výškových dat (X|Y|Z) Pro případ, že třetí sloupec nese jako atribut výškový údaj, musí být použit během importu přepínač -z. 1664619|5103481|101.2 1664473|5095782|102.2 1664273|5101919|101.7 GRASS:~ > cat coords3d.txt | v.in.ascii -z out=vysky GRASS:~ > v.category in=vysky out=vysky2 op=add GRASS:~ > v.category vysky2 op=report Další příklady vytvoření bodové mapy z již existujících dat uložených v databance jsou uvedeny v kapitole 10.
6 Georeferencování dat Tuto kapitolu můžete přeskočit, jestliže nepotřebujete žádná data georeferencovat, tj. souřadnicově připojit. V souvislosti s importem naskenovaných rastrových map s dostupnými údaji nutnými pro pozdější souřadnicové připojení je třeba definovat celkem dvě locations. Naskenovaná mapa se importuje nejprve do location xy (bez definované mapové projekce) a poté se transformuje do druhé location s definovaným souřadnicovým systémem.
GRASS location xy bez geokodovani
GRASS cilova location geokodovana transformace georeferencovani
naskenovana mapa
i.group i.target i.points/i.vpoints i.rectify
vysledna mapa
Obrázek 6.1: Proces souřadnicového připojení dat v GRASSu
6.1
Příprava před georeferencováním dat
Nejdříve je nutno založit cílovou location s definovaným souřadnicovým systémem (mapovou projekcí a rozlišením). Obecně lze použít libovolnou mapovou projekci podporovanou GRASSem. Rozlišení cílové location nesmí být zvoleno příliš nízké. Pokud je totiž toto rozlišení v poměru k rozlišení souřadnicově nepřipojených dat příliš malé, vzniká georeferencováním výsledek, který je velmi špatně čitelný. Dochází tak k přílišné informační ztratě (vlivem tzv. „resamplingÿ). V opačném případě (příliš vysoké relativní rozlišení cílové location) je výsledná mapa sice dobře čitelná, ale zabírá zbytečně velký diskový prostor. 37
38
6.1. PŘÍPRAVA PŘED GEOREFERENCOVÁNÍM DAT
6.1.1
Volba optimálního rozlišení při skenování
Při importu analogové („papírovéÿ) mapy určuje rozlišení při skenování podkladu také nastavené rozlišení location. Na první pohled to zní velmi jednoduše. Nalezení vhodného rozlišení při skenování mapy však často vyžaduje experimentování, tak aby nebyla informační ztráta vzniklá při procesu skenování a importu do GRASSu neúnosná. Na následujícím ukázkovém výpočtu si demonstrujeme, jak správně postupovat, abychom mohli nastavit parametry location optimálně právě na základě importovaných dat (nebo naopak): (a) výpočet pro rozlišení 300 dpi 300 dpi = 300 buněk/2, 54 cm = 118, 11 buněk/cm (b) výpočet rozlišení rastrové mapy při měřítku 1 : 25 000 velikost ve skutečnosti (cm) = 25 000 cm/118, 11 buněk = 2, 12 m/buněk Pokud je location již definována včetně výchozího rozlišení, potom je zapotřebí provést výpočet opačný – na základě geografického rozlišení určit vhodné rozlišení pro skenování podkladu. Výše uvedené vztahy se tedy pouze otočí [Net00].
6.1.2
Definice zájmové oblasti projektu
Prvním krokem je vytvoření location xy určené pro import naskenovaných nezpracovaných dat. Zájmové území location by mělo odpovídat rozměru mapy v pixelech X (rows, height) a Y (columns, width). Tyto hodnoty lze zjistit např. pomocí programu xv1 . Výchozí region location xy je tedy nutno zvolit dostatečně veliký, tak aby do něj importovaná data bez problému zapadla. Obecně lze doporučit nastavit výchozí region o něco větší než je nezbytně nutné, tento „luxusÿ nic nestojí – ani místo na disku. Výchozí rozlišení se v této location zvolí přirozeně 1. Velikost pixelu importovaných dat tak odpovídá velikosti pixelu výsledné rastrové mapy v databance GRASSu. Definujete sice geografické rozlišení (např. v metrech), v této souvislosti (location xy bez mapové projekce) jsou však mapové jednotky irelevatní. Teprve později, při transformaci do jiného souřadnicového systému se přiřazuje „pravéÿ rozlišení, které je dáno rozlišením při skenování předlohy a měřítkem mapy. Druhý krok spočívá v založení cílové location, která bude později obsahovat již georeferencovanou mapu. Je tedy třeba, pokud ještě není k dispozici, tuto location založit a to s požadovanými parametry jako mapovou projekcí, výchozím regionem a rozlišením. V nejjednodušším případě máme již cílovou location k dispozici. Ta může obsahovat již georeferencovaná data a my tedy chceme doplnit další souřadnicově připojenou mapu. Postup vytvoření cílové location je podrobně popsán v kapitole 4.5.1. 1
Pozn. překl.: Na tomto místě lze doporučit konzolový nástroj identify z balíčku ImageMagick.
6.2. PROCES GEOREFERENCOVÁNÍ DAT
39
Postup při importu jednotlivých částí mapy Části mapy, které tvoří celek, je nutno importovat do location xy jednotlivě a to tak, aby nevznikly při pozdějším georeferencování těchto částí nežádoucí chyby. Alternativně, pokud jednotlivé části mapy (nelze např. mapu naskenovat najednou) na sebe navazují, lze je před importem do GRASSu spojit v dostupném grafickém editoru. Potom můžete importovat mapu v celku. Jestliže se naopak importují data, která se souřadnicově překrývají (např. obrazová data), nabízí se postup souřadnicového připojení právě s mezistupněm v location xy. Může jít např. o import nereferencovaných satelitních snímků, které pokrývají stejné území v různých spektrálních intervalech.
6.2
Proces georeferencování dat
V této fázi byste měli mít tedy k dispozici location xy určenou pro nezpracovanou mapu a cílovou location s definovaným souřadnicovým systémem, do které se má tato mapa transformovat, tj. georeferencovat. Pokud tedy location xy obsahuje souřadnicově nepřipojenou mapu, můžeme započít s procesem georefencování. V dalším textu si krátce tuto činnost popíšeme. 1. Vytvoříme skupinu map/obrazových dat a zadáme název transformované mapy. GRASS:~ > i.group • Zadáme název pro tuto skupinu dat: např. „mapaÿ.
• Označíme („xÿ) importovanou mapu (resp. importované mapy). 2. Následuje volba cílové location (target) a mapsetu (např. location Gauß-Krüger), která ve výsledku bude obsahovat souřadnicově připojenou mapu, resp. mapy. GRASS:~ > i.target • Aktuální region cílové location by se neměl lišit od výchozího. V opačném případě se transformují pouze data zapadající do tohoto menšího regionu. GRASS totiž pracuje vždy s aktuálním nastavením location. Nastavení výchozího rozlišení v cílové location lze obnovit pomocí g.region -dp. 3. Nastartujeme GRASS monitor: GRASS:~ > d.mon start=x0 4. Přiřadíme souřadnice cílového souřadnicového systému (např. Gauß-Krüger) ke čtyřem rohovým bodům, nebo k jiným zvoleným vlícovacím bodům (viz kapitola 6.2.1) GRASS:~ > i.points GRASS:~ > i.vpoints
(pro rastrovou mapu) (pro vektorovou mapu)
40
6.2. PROCES GEOREFERENCOVÁNÍ DAT • Zadáme skupinu dat určenou pro transformaci (v našem případě mapa).
6.2.1
Volba vlícovacích bodů
Grafický monitor GRASSu se rozdělí na dvě části. Po vybrání importované mapy se tato zobrazí v levé části monitoru. Na výběr máme dva postupy georeferencování: buď na základě známých bodů v cílovém souřadnicovém systému (a), nebo na základě vhodné referenční mapy (b), která je již k dispozici v cílové location.
Obrázek 6.2: Volba vlícovacích bodů naskenované topografické mapy v modulu i.points
(a) Jako vlícovací body se volí dobře identifikovatelné body, jako např. Gaußovy křížky nebo rohové body (lze využít „papírovouÿ mapu, pokud je k dispozici). Tyto body se v GRASS monitoru označí myší a poté se do okna X-termu (příkazového interpretu) zadají odpovídající souřadnice (oddělené mezerou). (b) V tomto případě máme k dispozici v cílové location souřadnicově připojenou mapu, která obsahuje snadno identifikovatelné body (např. křižovatky silnic či budovy). Tyto body
6.2. PROCES GEOREFERENCOVÁNÍ DAT
41
tak můžeme využít pro georeferencování importované mapy. Pomocí funkce „PLOT RASTERÿ zobrazíme v pravé části GRASS monitoru tuto georeferencovanou mapu. Máme tak možnost vyhledat korespondující referenční body na obou mapách současně. Při této činnosti je nanejvýš vhodné využít funkce „ZOOMÿ (viz obrázek 6.2)2 .
Vlícovací body by měly být bezpodmínečně voleny tak, aby stejnoměrně pokrývaly plochu mapy. Funkce „ANALYSEÿ umožňuje posléze určit střední kvadratickou chybu (RMS), jejíž hodnota by neměla přesáhnout polovinu hodnoty rozlišení nastaveného v cílové location. Celková RMS chyba je určena z jednotlivých složek (středních kvadratických chyb jednotlivých vlícovacích bodů). Snížení její hodnoty či přerozdělení vlícovacích bodů je možné provést deaktivací vybraného vlícovacího bodu. To se provede poklikáním na zvolený bod v okně funkce „ANALYSEÿ. Rovnoměrné rozložení vlícovacích bodů v kombinaci s „rozumnouÿ hodnotou střední kvadratické chyby (RMS) vede k lepším výsledkům, než jednosměrně nahromaděný shluk vlícovacích bodů s minimální hodnotou RMS chyby. Po úspěšném výběru vlícovacích bodů můžeme modul i.points již opustit. Konfigurace těchto bodů se automaticky uloží. Toto platí také pro deaktivované vlícovací body3 . Při dalším spuštění modulu tak lze pokračovat v dříve zvolené konfiguraci. Po označení všech potřebných vlícovacích bodů, jejichž počet je závislý na stupni polynomu transformace, můžete spustit modul i.rectify. Následuje dotaz na to, zda se má provést transformace v rámci
1. „current regionÿ cílové location, který odpovídá aktuálnímu regionu nastaveného v této location, 2. nebo „minimal regionÿ, který GRASS automaticky nastaví v cílové location v závislosti na transformovaných datech.
Pokud na tomto místě zvolíte bod 1 „current regionÿ, je důležité se ještě jednou před samotnou transformací ujistit, zda je správně nastaven aktuální region cílové location (rozlišení a výřez). Není problém transformaci přerušit, zkontrolovat (resp. změnit) nastavení cílové location a opětovně spustit modul i.rectify. 2
Pozn. překl.: Jako referenční mapu lze kromě rastrové využít i mapu vektorovou. V tomto případě místo modulu i.points použijeme modul i.vpoints. 3 Pozn. překl.: Konfigurace vlícovacích bodů je uložena v prostém textovém souboru umístěném v aktuální location a mapsetu a to v adresáři group/
/POINTS. Přičemž deaktivované vlícovací body jsou označeny hodnotou „0ÿ.
42
6.2.2
6.2. PROCES GEOREFERENCOVÁNÍ DAT
Transformace map
Nejprve je nutno určit stupeň polynomu transformace. Jeho volba je podmíněna stupněm zkreslení obrazu (v případě leteckých snímků, středové promítání) a počtem dostupných vlícovacích bodů. Čím silnější toto zkreslení je, tím vyšší je třeba zvolit stupeň polynomu. To má však za následek zvýšení minimálního nutného počtu vlícovacích bodů (viz tabulka 6.1). Příliš vysoký stupeň polynomu však není z matematického hlediska vhodný. Obecně platí toto pravidlo: v případě nezkreslené geometrie obrazu (např. naskenovaná topografická mapa, tedy ortogonální promítání) stačí minimální počet vlícovacích bodů a s tím související nízký stupeň polynomu. Naopak mapy s deformovanou geometrií obrazu (např. historické mapy) vyžadují vyšší počet vlícovacích bodů. Tabulka 6.1: Stupeň polynomu transformace stupeň polynomu minimální nutný počet modul vlícovacích bodů 1 2 3 4
3 6 10 15
i.rectify
Proces georeferencování GRASS započne pouze v případě, že je zadán minimálně nutný počet vlícovacích bodů. Přehled nutného počtu vlícovacích bodů pro různé stupně polynomu je uveden v tabulce 6.1. V praxi se nejvíce používají polynomy prvního až třetího řádu. V případě stupně polynomu 3 je nutné určit nejméně 10 vlícovacích bodů.
7 Export dat Stejně jako import dat, popsaný v kapitole 5, je pro práci s GISy důležitý i jejich export. Data můžete exportovat do výměnných formátů zpracovatelných širokou škálou GISů nebo do formátů obrázků pro profesionální vizualizaci externími grafickými programy, jakými jsou Xfig nebo Skencil. GRASS nabízí řadu modulů pro export rastrových, vektorových a bodových dat. Rychlou nápovědu k jednotlivým modulům lze získat parametrem -help, uvedeným za příkazem.
7.1
Export rastrových dat
V tabulce 7.1 je uveden seznam modulů, sloužících k exportu rastrových map GRASSu do jednotlivých externích formátů. Vedle nativních formátů ostatních GISů jsou dostupné také výměnné formáty využívané např. při dálkovém průzkumu Země. Tabulka 7.1: Výběr modulů pro export rastrových dat modul GRASSu formát exportu r.out.arc
ARC/INFO ASCII GRID1
r.out.mpeg
MPEG
r.out.png
PNG (viz také d.mon/PNG DRIVER s podporou True Color)
r.out.pov
POV
r.out.ppm
PPM/PNM
r.out.tiff
TIF/TFW
r.out.bin
binární datové pole
r.out.gridtb
GRIDATB.FOR (TOPMODEL)
r.out.gdal
knihovna GDAL podporuje přes 20 důležitých formátů (viz část 7.1.1)
1
Poznámka: Nástroj Arc v ArcGIS podporuje import ASCII gridů: Import to raster→ASCII to GRID. Výsledek může být zobrazen pomocí nástroje ArcCatalog. Pro tuto operaci je potřeba mít nainstalované rozšíření Spatial Analyst.
43
44
7.2. EXPORT VEKTOROVÝCH DAT
Jak již bylo zmíněno v části 5.1, nesmíme při exportu rastrových dat zapomenout na důležitou vlastnost GRASSu – rastrové mapy jsou exportovány pouze v aktuálně nastaveném rozlišení a výřezu (current region). Stejně jako u rastrových analýz, je před exportem důležité přesvědčit se nejprve příkazem g.region -p, zda je aktuální region nastaven správně.
7.1.1
Export pomocí knihovny GDAL
Prostřednictvím modulu r.out.gdal probíhá export rastrových map GRASSu do různých externích formátů. Jejich seznam získáme pomocí příkazu r.out.gdal -l. Abychom byli schopni tento modul používat, musíme nainstalovat knihovnu GDAL s podporou GRASSu. Tuto podporu lze doinstalovat buď jako binární balíček, nebo musí být knihovna překompilována manuálně. Případnou pomoc může poskytnout2 např. GDF Hannover bR.
7.2
Export vektorových dat
V tabulce 7.2 je uveden seznam modulů, určených pro export vektorových dat dostupných v nativním formátu GRASSu. Tabulka 7.2: Výběr modulů pro export vektorových dat modul GRASSu formát exportu
7.3
v.out.ascii
GRASS ASCII
v.out.ogr
SHAPE, TIGE, S57, MapInfo, DGN, Memory, CSV, GML, ODBC a PostgreSQL
v.out.pov
Povray
Export bodových dat
Pro export např. výškových dat z rastrové mapy do formátu xyz je důležité nastavit rozlišení location podle rozlišení dané rastrové mapy. Data mohou být ve formátu xyz vypsána po řádcích do ASCII souboru následujícím způsobem: GRASS:~ > g.region rast=elevation.dem -p GRASS:~ > r.stats -i -g input=elevation.dem > spearfish vysky.txt
2
Pozn. překl.: České uživatele lze odkázat na Československou e-mailovou konferenci GRASSu, viz http://gama.fsv.cvut.cz/~grass/ekonf/.
8 Grafická uživatelská rozhraní Uživatelská přívětivost začíná hrát i v oblasti GISů, programů tradičně spíše textově orientovaných, stále větší roli. Na tomto místě se tedy dotkneme vývoje grafického uživatelského rozhraní GRASSu, jelikož došlo v této oblasti v posledních letech a měsících ke značným změnám.
8.1
TclTkGRASS
Od roku 1999 nabízí GRASS pro obsluhu většiny modulů grafické uživatelské rozhraní (GUI) TclTkGRASS. Během let se mnoho modulů změnilo, další přibyly, jiné byly odstraněny. Bylo načase tak obměnit i toto GUI. Za tímto účelem byla zcela změněna jeho koncepce. Vývojáři stáli před úkolem vytvořit co možná nejpřehlednější obsluhu GRASSu a integrovat do GUI přes 400 modulů.
Obrázek 8.1: Grafické uživatelské rozhraní TclTkGRASS 4.0 Výsledkem je TclTkGRASS verze 4.0 (obr. 8.1). Celkový vzhled byl převzat z předchozí verze, obsah menu je však zcela nově strukturován. Toto GUI můžete automaticky vyvolat, spustíte-li GRASS s parametrem -tcltk. Později ho lze spustit přímo v sezení příkazem tcltkgrass&1 . 1
Pozn. překl.: TclTkGRASS je součástí GRASSu <5.4. Ve verzi 6.0 byl plně nahrazen „GIS Manageremÿ.
45
46
8.2. GIS MANAGER
8.2
GIS Manager
V GRASSu 6.0 byl implementován zcela nový koncept GUI. K němuž patří především grafická okna skupin modulů, automaticky se otevírající pokud zadáte jméno libovolného modulu bez dalších parametrů. Navíc byl GRASS vybaven novým správcem – GIS Managerem. GIS Manager obsahuje řadu běžně používaných funkcí, které by měly usnadnit a zpřehlednit práci v GRASSu (viz obr. 8.2). Navíc obsahuje také všechny funkce TclTkGRASS 4.0.
Obrázek 8.2: d.m – GIS Manager GRASSu 6.0 s daty FRIDA
GIS Manager můžete spustit příkazem d.m&2 . Vedle modulů, podobně jako u TclTkGRASS seřazených v rolovacích menu, nabízí navíc grafická tlačítka. Za těmi se skrývají funkce z oblasti vizualizace, správy atributů, digitalizace a tisku.
8.2.1
Menu s moduly analýzy dat (TclTkGRASS)
V tomto menu naleznete asi 200 z celkových 400 modulů GRASSu. Díky tomu jsou nejčastěji používané moduly obsloužitelné i pomocí myši. Struktura menu je přibližně následující: File: Obsahuje moduly pro import a export dat a nastavení projektu. GIS: Umožňuje nastavení mapové projekce, pracovního prostředí a správu dat. 2
Pozn. překl.: Pokud spustíte GRASS s parametrem -gui spustí se GIS Manager automaticky.
8.2. GIS MANAGER
47
Display: Obsahuje moduly pro vizualizaci rastrových, vektorových a bodových dat. Raster: Obsahuje moduly pro analýzu rastrových dat. Vector: Obsahuje moduly pro analýzu vektorových dat. Image: Obsahuje moduly pro analýzu obrazových dat. Grid3D: Obsahuje moduly pro analýzu 3D-rastrových (voxel) dat. Databases: Obsahuje moduly pro správu databází. Help: Moduly s nápovědou.
8.2.2
Grafická tlačítka pro jednoduchou vizualizaci (Display Manager)
Pod lištou s menu jsou umístěna grafická tlačítka, umožňující rychlou intuitivní vizualizaci, dotazy a správu dat. Funkce tlačítek jsou: Display selected layers (current region) se používá, pokud chceme zobrazit všechny vybrané mapy (označené červeným čtverečkem, obr. 8.2) v aktuálním regionu a rozlišení. Display selected layers (default region) použijeme, pokud chceme všechny vybrané mapy zobrazit ve výchozím regionu a rozlišení (viz g.region -d). Display from saved region settings použijeme, pokud chceme vybraná data zobrazit v nějakém předem vytvořeném a uloženém regionu (viz g.region save=[nazev regionu]). Erase to white bývá používán, pokud chceme vymazat obsah aktivního GRASS monitoru, abychom mohli zobrazit novou mapu (viz d.erase -help). Zoom umožňuje zvětšování nebo zmenšování mapových výřezů. Je důležité sledovat funkci jednotlivých tlačítkem myši, která je vypsána do okna příkazového interpretu. Return to previous zoom se vrátí na předchozí zvětšení. Pan and recenter použijeme, pokud se chceme v aktuálním zvětšení přesunout na jiné místo. Funkce tlačítek myši jsou vypsány v příkazovém interpretu. Query map umožňuje dotazovat se na rastrová a vektorová data pomocí myši. Výsledky dotazu na rastrovou mapu jsou vypsány do okna příkazového interpretu, v případě vektorových dat jsou zobrazeny ve zvláštním grafickém okně (alternativně lze nastavit výstup do okna příkazového interpretu)3 . Před vlastním spuštěním modulu je potřeba vybrat mapu, resp. mapy, které mají sloužit jako podklad pro dotaz. 3
Pozn. překl.: Spustí-li se příkaz d.what.vect s parametrem -x, jsou výsledky dotazů na vektorová data také zobrazena v okně příkazového interpretu.
48
8.2. GIS MANAGER
Add group se použije pro definici skupiny map pro vizualizaci. Tato skupina je něco na způsob „projektuÿ, uložená na libovolném místě ve vašem domovském adresáři. Nejlepším místem je však adresář vašeho mapsetu. Add raster umožňuje přidání nové rastrové mapy do GIS Manageru. Add vector umožňuje přidání nové vektorové mapy do GIS Manageru. Add paint label umožňuje integraci obrázků z adresáře paint/labels do mapy (viz v.label). Create new command umožňuje vytvořit skupinu příkazů a následně je vyvolávat pomocí myši. Digitize vector map použijeme, chceme-li změnit geometrii vektorových map. Tímto tlačítkem se spustí modul v.digit. Mapa, která má být změněna musí být nejprve vybrána myší. Cut selection umožňuje odebrat mapy nebo příkazy z GIS Manageru. Mapy zůstávají v dané location i nadále. Pro odstranění map z datasetu se používá modul g.remove. Create new workspace file vytvoří soubor projektu, ve kterém jsou uloženy mapy, jejich barevné nastavení atd. Open an existing workspace file otevře existující soubor s projektem a načte všechny mapy s jejich tabulkou barev, a dalšími prvky. Save workspace file uloží vytvořený soubor s projektem se všemi atributy pro zobrazení map. Print map umožní uložit mapy do různých externích formátů, např. PostScript, PDF a PNG. Mapa je exportována v aktuálním regionu a jeho rozlišení.
9 Práce s rastrovými daty Počínaje jednoduchými dotazy přes komplexní algebraické funkce a logické podmínky jsou v GRASSu obsaženy snad všechny běžné funkční nástroje pro zpracování rastrových dat. Vzhledem k šíři dané problematiky (v současné době existuje více než 100 modulů pro práci s rastrovými mapami) se budeme v této kapitole zabývat pouze úvodem do jejich zpracování. Oblast dálkového průzkumu Země, tedy analýza satelitních a leteckých snímků, není součástí tohoto textu a zmíníme se o ní pouze okrajově. Na konci této příručky najdete v seznamu literatury odkazy na publikace, zabývající právě se tématikou DPZ. Jak již bylo zmíněno v kapitole 8, u většiny analýz je možné použít grafické uživatelské prostředí TclTkGRASS či GIS Manager. V této příručce se snažíme ukázat postup práce v grafickém rozhraní souběžně s postupem v příkazové řádce. Naučit se ovládat jednotlivé moduly pomocí příkazové řádky je dobré především v tom, že se s jednotlivými moduly a jejich parametry rychleji a blíže seznámíte1 .
Obecně k rastrovým datům Poloha buňky rastrové mapy je dána souřadnicemi jejího středu (x, y). Hodnota buňky z, která odpovídá naměřené hodnotě nebo vlastnosti objektu a které je přiřazena příslušná barva (např. z oboru škály šedi). V případě analýz rastrových dat, sloužících k vytvoření tématických map, rozlišujeme dva základní typy operací:
1. přístup bodově, buňkově či pixelově orientovaný (analýza sousedů) 2. přístup maticově orientovaný nebo-li metoda „pohyblivého oknaÿ (filtrování obrazu)
Použít můžeme buď specializované moduly GRASSu, kde každý z nich provádí danou operaci a nebo modul r.mapcalc, ve kterém lze navrhnout operace obou typů zcela individuálně podle potřeb uživatele (viz kapitola 15). 1
Pozn. překl.: A nejen to, tuto znalost oceníte při automatizaci jednotlivých úloh – „skriptováníÿ.
49
50
9.1. VIZUALIZACE RASTROVÝCH MAP
Správa rastrových dat Základní správa rastrových map, jako je nastavení prostorového rozšíření map, údržba atributů, přiřazení barevné škály atd., je ošetřena řadou specializovaných modulů. Ve verzích GRASSu 5.0 a 5.4 bylo potřeba vytvářet interní statistiku mapy pomocí příkazu r.support -r, který ovšem pracoval pouze v aktuálním výřezu což většinou vedlo k nechtěným efektům2 .
Nápověda k modulům GRASSu Ke všem z více než 400 modulů GRASSu existuje soubor s nápovědou, ve kterém je vysvětlena jejich syntaxe. Krátký popis příkazu se také vypíše, pokud za názvem modulu uvedete parametr -help: GRASS:~ > d.rast -help Vyčerpávající nápovědu s popisem modulu a příklady použití získáme příkazem GRASS:~ > g.manual [jméno modulu] Spustí se webový prohlížeč s danou manuálovou stránkou3 . Tato nápověda je dostupná také na domovské stránce GRASSu: GRASS:~ > g.manual d.rast &
9.1
Vizualizace rastrových map
Rastrová data se vizualizují v tzv. GRASS monitoru pomocí modulu d.rast. V GRASSu lze spustit najednou až 7 různých grafických monitorů (x0 až x6): GRASS:~ > d.mon x0 GRASS:~ > d.rast Pokud si chceme nějaké území zvětšit, použijeme modul GRASS:~ > d.zoom Zpětné nastavení původního výřezu dosáhneme pomocí modulu g.region. Nastavení výchozího regionu na rozlišení 10 m lze provést např. příkazem GRASS:~ > g.region -dpa res=10.0 GRASS:~ > d.erase GRASS:~ > d.rast rastrova mapa Po nastavení regionu modulem g.region se automaticky obsah monitoru nepřekreslí. Je potřeba jej tedy „vyčistitÿ manuálně (d.erase) a následně opět zobrazit požadovaná rastrová data (d.rast)4 . Nastavení regionu a rozlišení lze přímo nastavit podle zvolené rastrové mapy: GRASS:~ > g.region rast=rastrova mapa -p 2
Pozn. překl.: Tento modul tak není součástí GRASSu 6.0. Pozn. překl.: Nápovědu lze zobrazit také v podobě tradiční manuálové stránky, jedná se o přepínač -m. 4 Pozn. překl.: Nebo lze místo vymazání obsahu monitoru použít modul d.redraw pro jeho překreslení. 3
9.2. DOTAZOVÁNÍ SE NA RASTROVÉ MAPY A JEJICH METADATA
51
GRASS:~ > d.erase GRASS:~ > d.rast rastrova mapa Alternativně GRASS:~ > g.region rast=rastrova mapa -p GRASS:~ > d.redraw
Překrytí dvou různých rastrových map GRASS:~ > d.rast rastr1 GRASS:~ > d.rast rastr2 -o V tomto případě bude viditelná pouze ta část mapy rastr1 která se kryje s oblastmi mapy rastr2 obsahující hodnotu NULL (tzv. „žádná dataÿ). Další možnost jak překrýt dvě rastrové mapy, například za účelem vizuální kontroly správnosti souřadnicového připojení nabízí modul d.his5 : GRASS:~ > d.his h map=roads i map=tk24
Zobrazení rastrové mapy s legendou Zjednodušeně lze rastrovou mapu zobrazit spolu s patřičnou legendou v GRASS monitoru pomocí příkazu6 GRASS:~ > d.rast.leg rastrova mapa
9.2
Dotazování se na rastrové mapy a jejich metadata
Abychom získali relevantní popisná data vázaná na daný prvek rastrové mapy, použijeme modul (který se taktéž postará o zobrazení výsledku našeho dotazu) GRASS:~ > d.what.rast Po kliknutí na dané místo (pixel) na mapě bude vypsána příslušná hodnota společně se souřadnicemi do okna příkazového interpretu. Pokud je v GRASS monitoru zobrazeno více (překrývajících se) map, budou jejich hodnoty zobrazeny souběžně. Příkazem GRASS:~ > d.what.rast map=elevation.dem,geology,soils 5
Pozn. překl.: Tento modul můžeme využít, chceme-li např. zobrazit mapu na stínovaném reliéfu, který vytvoříme pomocí modulu r.shaded.relief: GRASS:~ > r.shaded.relief in=elevation.dem GRASS:~ > d.his h map=geology i map=elevation.dem shade 6
Pozn. překl.: Pro zobrazení pouze legendy mapy použijeme modul d.legend.
52
9.2. DOTAZOVÁNÍ SE NA RASTROVÉ MAPY A JEJICH METADATA
se můžeme dotazovat na hodnoty jednotlivých map bez nutnosti jejich předchozího zobrazení v GRASS monitoru. Modul po jeho spuštěn očekává stisknutí levého tlačítka myši v okně GRASS monitoru7 .
Modul r.info Zobrazení metadat rastrové mapy obstarává modul r.info. Vedle popisu dat výpis obsahuje také jejich typ, informace o mapové projekci a rozsah hodnot jednotlivých kategorií. GRASS:~ > r.info landuse GRASS:~ > r.info -r landuse
Modul r.cats Tento modul umožňuje zobrazení kategorií a příslušných textových atributů ve formě přehledné tabulky: GRASS:~ > r.cats map=landuse 1 2 3 4 5 6 7 8
residential commercial and services industrial other urban reservoirs bare exposed rock quarries, strip mines and gravel pits transportation and utilities
Modul r.report Další podrobnější informace, jako jsou např. velikosti ploch jednotlivých kategorií geologických typů na území „Spearfishÿ v hektarech, poskytne modul r.report (viz také r.stats). Tento modul nejprve vypočte interní statistiku, podobně jako v podstatě všechny rastrové moduly zohledňující nastavení aktuálního výřezu a rozlišení. Proto může být vhodné nejprve nastavit region na požadované území: GRASS:~ > g.region rast=geology -p GRASS:~ > r.report -h geology units=h
7
Pozn. překl.: Funkce jednotlivých tlačítek jsou vysvětleny v okně terminálu.
9.3. VYBRANÉ APLIKACE RASTROVÝCH MAP
53
+---------------------------------------------------------------------+ | Category Information | | |#|description | hectares| |---------------------------------------------------------------------| |1|metamorphic. . . . . . . . . . . . . . . . . . . . . . .| 1051.000| |2|transition . . . . . . . . . . . . . . . . . . . . . . .| 13.000| |3|igneous. . . . . . . . . . . . . . . . . . . . . . . . .| 3285.000| |4|sandstone. . . . . . . . . . . . . . . . . . . . . . . .| 6755.000| |5|limestone. . . . . . . . . . . . . . . . . . . . . . . .| 5537.000| |6|shale. . . . . . . . . . . . . . . . . . . . . . . . . .| 4170.000| |7|sandy shale. . . . . . . . . . . . . . . . . . . . . . .| 1019.000| |8|claysand . . . . . . . . . . . . . . . . . . . . . . . .| 1307.000| |9|sand . . . . . . . . . . . . . . . . . . . . . . . . . .| 3295.000| |*|no data. . . . . . . . . . . . . . . . . . . . . . . . .| 168.000| |---------------------------------------------------------------------| |TOTAL |26,600.000| +---------------------------------------------------------------------+
Modul r.timestamp Při zpracovávání časových řad je často důležité opatřit data „časovým otiskemÿ (čas vytvoření, datum pořízení, atd.) GRASS:~ > r.timestamp landuse date="27 Sep 2003" GRASS:~ > r.timestamp landuse date="27 Sep 2003/20 Feb 2004" Bližší popis použitého formátu získáte na manuálové stránce modulu g.manual r.timestamp.
9.3
Vybrané aplikace rastrových map
V tomto oddíle si představíme často používané moduly pro analýzu rastrových dat. Silná stránka GRASSu představuje již tradičně právě zpracování dat rastrových. Zde představené moduly jsou tak pouhým výběrem.
9.3.1
Výpočet profilů
Pro zobrazení profilů rastrové (výškové) mapy použijeme modul d.profile, ovládaný pomocí myši v GRASS monitoru (obr. 9.1). GRASS:~ > d.profile rastrova mapa
Modul r.profile naopak umožňuje vypsání hodnot jednotlivých bodů profilu do textového (ASCII) souboru. Souřadnice bodů profilu máme buď připravené (v externím textovém souboru), nebo lze spustit přepínačem -i interaktivní mód a trasu profilu „naklikatÿ manuálně
54
9.3. VYBRANÉ APLIKACE RASTROVÝCH MAP
Obrázek 9.1: Několik profilů digitálního modelu terénu – modul d.profile
myší. Podobnou funkci plní modul r.transect, který vyžaduje pouze počáteční bod profilu a množinu parametrů azimut a vzdálenost. GRASS:~ > r.profile GRASS:~ > r.transect
9.3.2
Analýza viditelnosti
Modul r.los nabízí možnost analýzy viditelnosti na základě mapy reliéfu. Vstupem jsou souřadnice stanoviska pozorovatele, příslušná výška pohledu nad zemí a dohlednost z tohoto bodu. Například použijeme elevation.10m z datasetu „Spearfishÿ. Výchozí souřadnice lze zadat ručně či je zjistit pomocí modulu d.where: # nastavíme rozlišení na 20 m GRASS:~ > g.region res=20 rast=elevation.10m -pa # spočítáme viditelnost z věže 15 m nad zemí GRASS:~ > r.los in=elevation.10m out=viditelnost coord=593670,4926877 \
9.3. VYBRANÉ APLIKACE RASTROVÝCH MAP
55
obs=15 max=3000 # kontrola GRASS:~ > d.erase GRASS:~ > r.shaded.relief elevation.10m units=meters GRASS:~ > d.rast elevation.10m shade GRASS:~ > d.rast -o roads GRASS:~ > d.rast -o viditelnost
9.3.3
Překryv jednotlivých rastrových map
Již jsme se zmínili o tom, že rastrové mapy lze vizuálně překrývat. Pokud bychom chtěli uložit výsledek do nové mapy, použijeme modul r.patch. Tímto modulem tak lze vytvořit z několika vstupních map jednu výstupní mapu vzniklou jejich překrytím: GRASS:~ > r.patch in=mapa1,mapa2,mapa3,mapa4 out=spolecna mapa První mapa leží nejvýše, další mapy vyplňují místa, kde mapy nad nimi obsahují hodnotu NULL (no data). Modul si ukážeme na příkladu překrytí rastrové mapy cest (roads) a geologie (geology) v datasetu „Spearfishÿ. Důležité je před prací nastavit potřebný region, protože GRASS pracuje vždy pouze s aktuálním výřezem a rozlišením: GRASS:~ > g.region rast=geology,roads -p GRASS:~ > r.patch in=roads,geology out=roads.on.geol Pokud bychom změnili pořadí vstupních map, budou informace o cestách překryty informací o geologii. Taková mapa bude v podstatě identická s mapou geology.
9.3.4
Rastrové buffery
Modulem r.buffer lze na základně rastrových dat vytvářet vyrovnávací (přechodové, nárazníkové) zóny (buffery). Tuto funkci můžeme využít například při vytvoření mapy zón okolo cest v datasetu „Spearfishÿ: # Jaké jsou přítomny kategorie silnic? GRASS:~ > g.region rast=roads -p GRASS:~ > r.report -h roads
|1|interstate |2|primary highway, hard surface |3|secondary highway, hard surface |4|light-duty road, improved surface |5|unimproved road |*|no data
56
9.4. ZMĚNA TABULKY BAREV RASTROVÉ MAPY
Příklad: Chceme vytvořit vyrovnávací zónu pouze okolo mezistátních silnic s odstupy 10, 250 a 500 m. Vstupní mapa má rozlišení 30 m. Tuto hodnotu nastavíme jako rozlišení pro výstupní mapy: # extrakce kategorie ’interstates’ pomocí r.reclass GRASS:~ > echo 1 = 1 interstates | r.reclass in=roads out=interstates # nebo lze využít r.mapcalc GRASS:~ > r.mapcalc "interstates=if(roads==1,roads,null())" # vytvoření vyrovnávací zóny GRASS:~ > r.buffer in=interstates out=interstates.buf dist=100,250,500 # kontrola GRASS:~ > d.rast.leg interstates.buf
Obrázek 9.2: Vytvoření vyrovnávací (buffer) zóny pomocí modulu r.buffer
Výsledná mapa obsahuje tři zóny okolo mezistátních silnic. Šířka zón je vždy vztažena ke středu silnice a je dána definovanou mapovou jednotku (např. metry). Nastavené jednotky lze zjistit pomocí modulu: GRASS:~ > g.proj -p ... -PROJ_UNITS-----------------------------------------------unit : meter units : meters meters : 1.0 Vektorizace rastrové mapy je popsána v kapitole 13.1.
9.4
Změna tabulky barev rastrové mapy
Rastrová mapa je zobrazena v barevné škále, která je dána tabulkou barev. Každá nově vytvořená rastrová mapa dostane (až na několik výjimek) přiřazenu výchozí paletu „rainbowÿ. Vytvořit specifickou tabulku barev můžete hned několika způsoby.
9.5. STATISTICKÉ CHARAKTERISTIKY MAP
57
Přiřazení standardních barevných palet umožňuje modul r.colors: GRASS:~ > r.colors map=rastr color=standardni tabulka GRASS:~ > r.colors map=rastr color=zvlastni tabulka color options: aspect, grey, grey.eq, grey.log, byg, byr, gyr, rainbow, ramp, random, ryg, wave, rules rules options: aspect, bcyr, byg, byr, elevation, evi, grey, gyr, rainbow, ramp, ryg, slope, srtm, terrain, wave Parametr rules umožňuje definování vlastní tabulky barev: GRASS:~ > r.colors map=geology color=rules << EOF 4 100 200 0 5 255 130 7 6 100 129 187 7 222 180 39 9 43 18 200 EOF Pro přenos tabulky barev z jedné rastrové mapy na druhou a nebo pro přiřazení existující dříve vytvořené barevné tabulky použijeme modul r.colors s parametrem rast: GRASS:~ > r.colors rastr rast=originální rastr Přiřazená tabulka barev může být zobrazena modulem: GRASS:~ > d.colortable rastrova mapa
9.5
Statistické charakteristiky map
Interní moduly GRASSu lze také použít pro výpočet základních statistických charakteristik map. Pro komplexní geostatistické analýzy je k dispozici rozhraní mezi GRASSem a programem pro statistické analýzy R (viz literatura).
Histogram a rozložení hodnot Histogram snímku a jeho statistika jsou potřebné pro operace vedoucí k modifikaci obrazu (zvýraznění kontrastu, roztažení histogramu) a pro operace analytické. Modul d.histogram umožňuje zobrazení histogramu: GRASS:~ > d.histogram rastrova mapa Rozdělení hodnot je vizualizováno ve formě sloupcového histogramu. Dalším možným výstupem je koláčový graf.
58
9.5. STATISTICKÉ CHARAKTERISTIKY MAP
Numerický výstup rozdělení hodnot ve formě tabulky nabízí modul r.stats. Tento modul disponuje řadou parametrů ovlivňujících jeho činnost. Bližší informace naleznete na příslušné manuálové stránce. Výše zmiňovaný modul dokáže pracovat i s více rastrovými mapami najednou: GRASS:~ > r.stats rastrova mapa Modul r.report navazuje na modul r.stats, nabízí ovšem komplexnější výstup. A to tabulku elementů s jeho délku a či výměrou plochy v definovaných jednotkách. Jako příklad si ukážeme rozdělení mapy využití půdy v závislosti na geologických ukazatelích: GRASS:~ > g.region rast=landuse -p GRASS:~ > r.report -hen landuse,geology units=h +---------------------------------------------------------------------+ | Category Information | | |#|description | hectares| |---------------------------------------------------------------------| |1|residential | 676.00000| | |--------------------------------------------------------|----------| | |1|metamorphic. . . . . . . . . . . . . . . . . . . . . .| 23.00000| | |3|igneous. . . . . . . . . . . . . . . . . . . . . . . .| 18.00000| | |4|sandstone. . . . . . . . . . . . . . . . . . . . . . .| 125.00000| | |5|limestone. . . . . . . . . . . . . . . . . . . . . . .| 70.00000| | |6|shale. . . . . . . . . . . . . . . . . . . . . . . . .| 125.00000| | |7|sandy shale. . . . . . . . . . . . . . . . . . . . . .| 29.00000| | |8|claysand . . . . . . . . . . . . . . . . . . . . . . .| 14.00000| | |9|sand . . . . . . . . . . . . . . . . . . . . . . . . .| 272.00000| |----------------------------------------------------------|----------| |2|commercial and services | 115.00000| | |--------------------------------------------------------|----------| | |1|metamorphic. . . . . . . . . . . . . . . . . . . . . .| 16.00000| | |4|sandstone. . . . . . . . . . . . . . . . . . . . . . .| 19.00000| [...] |----------------------------------------------------------|----------| |8|transportation and utilities | 400.00000| | |--------------------------------------------------------|----------| | |4|sandstone. . . . . . . . . . . . . . . . . . . . . . .| 34.00000| | |5|limestone. . . . . . . . . . . . . . . . . . . . . . .| 8.00000| | |6|shale. . . . . . . . . . . . . . . . . . . . . . . . .| 104.00000| | |7|sandy shale. . . . . . . . . . . . . . . . . . . . . .| 26.00000| | |8|claysand . . . . . . . . . . . . . . . . . . . . . . .| 4.00000| | |9|sand . . . . . . . . . . . . . . . . . . . . . . . . .| 224.00000| |---------------------------------------------------------------------| |TOTAL |1519.00000| +---------------------------------------------------------------------+ Základní statistické charakteristiky mapy vypisuje modul r.univar. Výstup obsahuje statis-
9.6. METODY PRO MANIPULACI S RASTROVÝMI MAPAMI
59
tické hodnoty závislé na aktuálním regionu – počet pixelů, minimální a maximální hodnotu, rozsahu hodnot, aritmetický průměr, medián, rozptyl, směrodatnou odchylku a koeficient variance: GRASS:~ > g.region rast=elevation.10m -p GRASS:~ > r.univar -g elevation.10m n=2654802 min=1061.06 max=1846.74 range=785.679 mean=1348.37 stddev=175.494 variance=30798.3 coeff_var=13.0153
9.6 9.6.1
Metody pro manipulaci s rastrovými mapami Reklasifikace
Při reklasifikaci je vytvořena nová tabulka atributů pro již existující rastrovou mapu. Vlastní mapa není modifikována. Jelikož vzniká pouze nová tabulka a nikoliv rastrová mapa, dochází tak k velké úspoře místa na pevném kotouči. Původní mapa tvoří základ pro nově klasifikovanou mapu. Modul r.reclass lze řídit interaktivně nebo pomocí příkazové řádky; reklasifikační tabulka je v optimálním případě uložena ve zvláštním souboru, který bude zadán při volání modulu. Před spuštěním modulu je vhodné prostudovat syntaxi reklasifikační tabulky uvedenou na manuálové stránce modulu: g.manual r.reclass. Průběh reklasifikace si ukážeme na příkladu rastrové mapy roads na území „Spearfishÿ. Místo pěti tříd chceme definovat pouze třídy dvě – silnice s dobrou nebo špatnou kvalitou vozovky: # Jaký je stav: GRASS:~ > r.report roads |1|interstate |2|primary highway, hard surface |3|secondary highway, hard surface |4|light-duty road, improved surface |5|unimproved road |*|no data # reklasifikace GRASS:~ > r.reclass in=roads out=roads.rcl
60
9.6. METODY PRO MANIPULACI S RASTROVÝMI MAPAMI Enter rule(s), "end" when done, "help" if you need it Data range is 1 to 5 > 1 2 3 = 1 dobra kvalita > 4 5 = 2 spatna kvalita > end
# Stav po reklasifikaci GRASS:~ > r.report roads.rcl |1|dobra kvalita |2|spatna kvalita |*|no data Možnost vytvoření „plnohodnotnéÿ rastrové mapy nabízí např. modul r.mapcalc: GRASS:~ > g.region rast=reclass mapa -p GRASS:~ > r.mapcalc "nova mapa=reclass mapa"
9.6.2
Maskování
Maskování daných oblastí na mapě může být před provedením některých výpočtů či analýz velmi užitečné. Nastavená maska působí – stejně jako aktuální region a rozlišení – na všechny následující rastrové analýzy. Moduly zohledňují jako masku v patřičném mapsetu rastrovou mapu MASK (veliká písmena). Pro všechny rastrové analýzy platí, že budou provedeny pouze na části mapy, které nejsou pokryty maskou. Vytvořit masku lze několika způsoby. Pokud už máme k dispozici mapu, která odpovídá tvaru požadované masky, stačí ji zkopírovat či přejmenovat: GRASS:~ > g.copy rast=rastr,MASK GRASS:~ > g.rename rast=rastr,MASK Další možnost nabízí modul r.mapcalc. Umožňuje totiž vytvoření masky extrakcí pixelů, které mají sloužit jako daná maska (viz kapitola 15).
Příklad na datasetu Spearfish Předpokládejme, že chceme analyzovat mapu využití půdy landuse pouze pro oblasti s nadmořskou výškou nad 1 200 m. Tuto hranici definujeme právě pomocí masky, kterou vytvoříme modulem r.mapcalc s mapou elevation.10m. Maska může být vytvořena následujícím způsobem: GRASS:~ > g.region rast=elevation.10m -p GRASS:~ > r.mapcalc "maska1200=if(elevation.10m > 1200, 1,null())"
9.7. VEKTORIZACE RASTROVÝCH DAT
61
GRASS:~ > g.copy rast=maska1200,MASK Analyzovány tak budou pouze ty pixely, které jsou překryty maskou. A to dokud je maska v mapsetu přítomna. Maska je definována tam, kde má rastrová mapa maska1200 hodnotu „1ÿ. Pro vizuální kontrolu: GRASS:~ > d.rast elevation.10m GRASS:~ > d.rast -o roads Během práce si můžete všimnout, že každý příkaz (modul) vypisuje upozornění [Raster MASK present] indikující přítomnost masky. Odstranit masku můžete standardním postupem – pomocí modulu g.remove. Po odstranění masky vstupuje do případných analýz opět celý aktuální region. GRASS:~ > g.remove rast=MASK Pokud má být maska odstraněna pouze dočasně, stačí ji pouze přejmenovat a tím ji jaksi „deaktivovatÿ: GRASS:~ > g.rename rast=MASK,maska
9.7
Vektorizace rastrových dat
Modulem r.digit lze manuálně vektorizovat rastrové body, linie a plochy. Každému prvku lze přiřadit hodnotu kategorie (cat) a štítek (label): GRASS:~ > r.digit Please choose one of the following A define an area C define a circle L define a line Q quit (and create map) Tímto způsobem lze také vytvářet masky (i když ne příliš přesné).
62
9.7. VEKTORIZACE RASTROVÝCH DAT
10 Nová struktura funkčních nástrojů pro zpracování vektorových dat V GRASSu 6.0 byla zcela přepracována sada funkčních nástrojů pro správu vektorových dat. Kromě jiného se jedná o nový formát vektorových dat, který překonává známá omezení formátu řady 5.x. Uživateli se nabízí množství zajímavých novinek a změn, které se pokusíme v této části představit.
10.1
Nové vlastnosti GRASSu 6.0
Vektorová geometrie: • Podpora externích „Simple Featureÿ datových formátů, jako je SHAPE a PostGIS bez nutnosti předchozího importu (přístup pro čtení zajišťuje modul v.external, který umožňuje vytvoření „virtuální mapyÿ v databance GRASSu. • Import a export dat ve formátu podporovaného knihovnou OGR. • Implementace prostorového indexu („spatial indexÿ) snižuje potřebný výpočetní čas procesoru, např. při spuštění modulu v.build a sestavení topologie vektorových dat (ve verzi 5.4 se jednalo o modul v.support). Správa popisných dat: • Atributy jsou uloženy v DBMS1 (existují rozhraní na bázi SQL k souborům dBase, či externím databázovým systémům PostgreSQL, MySQL a ovladači ODBC). • Atributy tak mohou být uloženy v souborech dBase (výchozí nastavení) a nebo v externím DBMS. • Lze vytvářet 3D vektorová data (např. TINs, soubory ze systémů CAD), která lze zobrazit modulem NVIZ. 1
Pozn. překl.: DataBase Managment System – Systém řízení báze dat.
63
64
10.2. SPRÁVA GEOMETRIE VEKTOROVÝCH DAT
Moduly: • Podpora výběrů a dotazů pomocí SQL např. moduly d.vect, v.extract. • Aktualizace atributů je možná přímo dotazem (např. pomocí d.what.vect lze přímo modifikovat záznamy v databázi). • Síťové analýzy založené na DGLIB („Directed Graph Libraryÿ) • Nový modul pro vektorizaci v.digit s grafickým uživatelským rozhraním. • Export souborů SHAPE, DGN, TIGER, MapInfo a GML2 pomocí knihovny OGR. • Grafické rozhraní pro všechny moduly (aplikace „forms libraryÿ). • Nový GIS-Manager (d.m). • Vylepšené grafické uživatelské rozhraní TclTkGRASS 4.0 se všemi potřebnými moduly2 . V následující části se detailněji seznámíme s těmito novými funkcemi, kterými GRASS 6.0 disponuje. Jedná se především o správu geometrie a atributů.
10.2
Správa geometrie vektorových dat
Správa vektorové geometrie se v GRASSu 6.0 od základů změnila. Ve standardním nastavení je geometrie uložena v novém pro GRASS specifického formátu – nativním formátu („native formatÿ). Toto základní nastavení lze ovšem bez problémů změnit. Nic vám tedy nebrání pracovat s daty ve formátech PostGIS, SHAPE, stejně jako s dalšími formáty podporovanými knihovnou OGR. Jako názornou demonstraci si ukážeme příklady práce s různými toho času podporovanými vektorovými formáty. Příklady budou demonstrovány na datasetu projektu FRIDA, který si lze stáhnout z Internetu (viz [9]).
10.2.1
Práce s formáty podporovanými knihovnou OGR
Díky implementaci knihovny OGR máme možnost pracovat s mnoha vektorovými formáty. Detailní seznam všech formátů podporovaných touto knihovnou je uveden v kapitole 8 na straně 45, stejně jako na webové stránce OGR-Software-Suite [7]. Takto lze přímo v GRASSu pracovat s daty např. ve formátu ESRI-SHAPE. K tomu slouží nový modul v.external, který zprostředkuje potřebné propojení mezi GRASSem a zdroji podporovaných knihovnou OGR. GRASS vybuduje pro netopologická data interní pseudotopologii, tak 2
Pozn. překl.: Jak již bylo dříve zmíněno TclTkGRASS 4.0 je součástí GRASSu 5.4, nikoliv 6.0.
10.2. SPRÁVA GEOMETRIE VEKTOROVÝCH DAT
65
Obrázek 10.1: Popis vektorové architektury GRASSu 6.0
aby byly umožněny např. síťové analýzy. Správa hesel zatím není pro externí data podporována. Poznamenejme, že jsou v současné době tato data přístupná pouze pro čtení, nikoliv pro zápis. Správa externích dat je v porovnání s přímo importovanými daty také o něco pomalejší: # vytvoření SHAPE-linku GRASS:~ > v.external dns=./gdf/shapes layer=frida stras out=frida cesty ext # zobrazení mapy GRASS:~ > d.vect frida cesty ext # dotazování se na elementy mapy GRASS:~ > d.what.vect frida cesty ext V případě editace dat je nutné mapu převést do nativního formátu GRASSu: GRASS:~ > g.copy vect=frida cesty ext,frida cesty int GRASS:~ > v.digit frida cesty int
Tuto konverzi lze uskutečnit buď prostým zkopírováním připojené mapy a nebo importem pomocí modulu v.in.ogr (viz část 5.2). Podobně jako v tomto příkladu lze pracovat se všechny datovými formáty podporovanými knihovnou OGR. Výměna dat např. s UMN MapServerem je možná přes databázi PostGIS. Výsledky práce tak mohou být snadno pomocí UMN MapServeru publikovány přímo na Internetu.
66
10.2. SPRÁVA GEOMETRIE VEKTOROVÝCH DAT
10.2.2
Geometrie vytvořená z DBMS
Pokud jsou data uložena jako páry souřadnic (X/Y) a atributy v souborech DBF, CSV, MS Excel či databázovém systému PostgreSQL atd., je možné z těchto souborů vygenerovat v GRASSu mapu. Ukážeme si to na příkladu jednoduché tabulky „staniceÿ v databázi „mydbÿ: GRASS:~ > v.in.db driver=pg database="host=localhost, dbname=mydb, \ user=postgres" table=stanice x=vychod y=sever z=kvota key=ID output=stanice V případě, že nemá tabulka např. ve formátu dBase žádný sloupec „IDÿ, musí být tento sloupec přidán a manuálně zaplněn vhodnými hodnotami. Pro tuto činnost se hodí např. program OpenOffice.org.
10.2.3
Geometrie uložená v textovém souboru
Odpovídající 2D či 3D mapu lze vytvořit i na základě textového souboru obsahujícího souřadnice XY nebo XYZ; mějme k dispozici např. coors.txt. 1. Příklad pro 2D mapu 1664619|5103481 1664473|5095782 1664273|5101919 1663427|5105234 1663709|5102614
# import do GRASSu GRASS:~ > cat coords.txt | v.in.ascii out=my2dmap # přidání chybějících hodnot kategorií, tak aby mohly být později # přiřazeny atributy: GRASS:~ > v.category in=my2dmap out=my2dmap final op=add GRASS:~ > v.category my2dmap final op=report
2. Příklad pro 3D mapu: 1664619|5103481|445.1 1664473|5095782|534.2 1664273|5101919|532.9 1663427|5105234|454.4 1663709|5102614|525.7
10.3. SPRÁVA ATRIBUTŮ VEKTOROVÝCH MAP
67
# import do GRASSu: GRASS:~ > cat coords.txt | v.in.ascii -z out=my3dmap # přidání chybějících hodnot kategorií, abychom mohli později # doplnit atributy GRASS:~ > v.category in=my3dmapt out=my3dmap final op=add GRASS:~ > v.category my3dmap final op=report Pokud máme připravenou tabulku atributů, můžeme ji připojit modulem v.db.connect.
10.3
Správa atributů vektorových map
Správa atributů je v GRASSu 6.0 zcela nově zpracována. Například lze připojit externí atributové tabulky. Struktura dig cats/ přítomná ještě v GRASSu 5.4 již není používána. Všechny atributy jsou uloženy v databázových tabulkách, spojených pomocí DBMI (DataBase Management Interface) s geometrií vektorové mapy. Momentálně lze využít následující ovladače: • DBF (výchozí) • databáze PosgreSQL • databáze MySQL • ODBC – jakákoliv podporovaná databáze (např. Oracle, MySQL, PostgreSQL, atd.) Spojení geometrie vektorové mapy s popisnými daty umístěnými v atributové tabulce zajišťuje interní soubor dbln. Jedná se o textový (ASCII) soubor uložený v adresáři obsahující danou vektorovou mapu. Soubor je automaticky vygenerován při importu mapy do GRASSu. Tento soubor lze modifikovat pomocí modulu v.db.connect, chcete-li připojit k mapě dodatečně tabulku atributů. Aktuální spojení mapy s databázovou tabulkou lze zjistit příkazem v.db.connect -p vektorova mapa. Modul v.db.connect umožňuje připojení hned několika atributových tabulek k jedné vektorové mapě, každé tabulce je pak přiřazeno číslo vrstvy (layer): GRASS:~ > v.db.connect map=mapa table=atributy1 layer=2 GRASS:~ > v.db.connect map=mapa table=atributy2 layer=3 GRASS:~ > v.db.connect -p map=mapa Příklad použití je uveden v kapitole 11.2.2. Poznámka: Smazáním vektorové mapy jsou odstraněny také všechny atributové tabulky připojené k mapě (viz soubor dbln). Je proto rozumné vytvořit pro další práci kopii originální atributové tabulky.
68
10.3. SPRÁVA ATRIBUTŮ VEKTOROVÝCH MAP
GRASS:~ > db.copy from driver=dbf from table=originalni tabulka to driver=dbf \ to table=kopirovana tabulka Změnu aktuálního nastavení databanky může provést aplikací následujících parametrů: • DBF: driver=dbf database=’$GISBASE/$LOCATION/$MAPSET/dbf’ • ODBC: driver=odbc database=grass60test • PostgreSQL: driver=pg database=’host=pgserver.itc.it, dbname=grass60test, user=name’ • MySQL: driver=mysql database=grass60test Moduly s předponou db.* jsou zcela nezávislé na modulech z rodiny v.*. Umožňují pouze změny obecného nastavení připojení k databázi. Ve výchozím nastavení je použit ovladač dbf. Výchozí nastavení lze obnovit příkazem: GRASS:~ > db.connect driver=dbf database=’$GISBASE/$LOCATION/$MAPSET/dbf’
10.3.1
Správa uživatelů a hesel u externích databází
Externí databáze jako PostgreSQL nabízejí správu uživatelských účtů. Modul db.login řídí přístup do odpovídacích databází a příslušné informace ukládá do souboru $HOME/.grasslogin6. To umožňuje skupinovou práci na projektu. Ukázkový scénář pro správu práv jednotlivých skupin by mohl vypadat např. takto: Location -> Databáze Mapset -> Databázové schéma UNIXový uživatel -> Uživatel v databázi UNIXová skupina -> Skupina v databázi Tak lze zajistit vybraným skupinám zvláštní práva. V rámci GRASSu toto zajišťuje modul g.access. Neměli bychom zapomenout na to, že uživatel databáze musí být synchronizován s uživatelem UNIXu. Zvláště pak v případech, kdy uživatel UNIXu je odstraněn, nesmíme zapomenout odstranit tohoto uživatele také z databáze.
10.3.2
Výpis atributů
Modul v.db.select umožňuje jednoduchý výstup atributových dat vektorových map do okna příkazového interpretu. Sloupce lze oddělit zvoleným znakem.
10.3. SPRÁVA ATRIBUTŮ VEKTOROVÝCH MAP
69
# výstup atributů mapy roads GRASS:~ > v.db.select map=roads fs="|" cat|label 0|no data 1|interstate 2|primary highway, hard surface 3|secondary highway, hard surface 4|light-duty road, improved surface 5|unimproved road
10.3.3
Přiřazení atributů
Modul v.to.db umožňuje přiřazení mnoha důležitých a užitečných atributů k vektorovým elementům. Jsou to zejména: • jednoznačné hodnoty kategorií, pokud nejsou již přítomny (sloupec cat odpovídá unikátnímu identifikátoru ID). • páry souřadnic („coordsÿ) • velikosti ploch, polygonů opatřených centroidem („areaÿ) • délku vektorových linií („lengthÿ) • počet prvků na kategorii („countÿ) • kategorie ploch nalevo a napravo od hranice ploch („sidesÿ) • výsledek dotazu („queryÿ) Před aplikací modulu je nutné přidat do atributové tabulky odpovídající sloupec (v případě souřadnic dva sloupce). Tuto operaci lze provést např. v programu OpenOffice.org nebo přímo v GRASSu. # přidání sloupce typu ’celé číslo’ (integer): GRASS:~ > echo "ALTER TABLE ADD COLUMN <sloupec> INTEGER" | \ db.execute # přiřazení délky vektorových linií GRASS:~ >
v.to.db map= option=length units=meters \
col=<sloupec> # kontrolní dotaz GRASS:~ > echo "SELECT * FROM " | db.select
70
10.3. SPRÁVA ATRIBUTŮ VEKTOROVÝCH MAP
10.3.4
Manipulace s atributovými daty
GRASS nabízí také moduly pro manipulaci s atributy. Pomocí SQL dotazu UPDATE lze atributy aktualizovat na základě různých kritérií: # aktualizovat všechny záznamy kde hodnota ’area’ je větší než 200 GRASS:~ > echo "UPDATE SET area = area*1000 WHERE area > 200" | \ db.execute Existuje také možnost editovat atributy interaktivně a to pomocí modulu d.what.vect. Atributy zobrazené ve zvláštním okně lze přímo modifikovat3 . Další možnost jak změnit atributy vektorové map nabízí nově vyvinutý zásuvný modul pro prohlížečku geodat QGIS [11]. Krátký popis tohoto programu naleznete v kapitole 18.
3
Pozn. překl.: Jedná se o přepínač -e.
11 Práce s vektorovými daty Jak je patrno z obrázku 2.1 v kapitole 2.1, adresářová struktura určená pro skladování vektorových dat v GRASSu verze 5.4 a 6.0 se liší. To umožňuje současné uložení vektorový dat obou formátů ve stejné location a mapsetu. Vektorová data ve formátu GRASSu 5.4 lze snadno převést do nového formátu (6.0). Pro tuto operaci slouží modul v.convert: GRASS:~ > v.convert in=grass5stary vektor out=grass60 vektor GRASS:~ > g.region -p vect=grass60 vektor GRASS:~ > v.info grass60 vektor GRASS:~ > v.db.connect -o grass60 vektor GRASS:~ > d.vect grass60 vektor Pokud je to nutné, můžete provést i zpětnou konverzi data (data v novém formátu do starého formátu) a to přes formát ASCII nebo ShapeFile (vhodnější). Nesmíme ovšem zapomentou na to, že GRASS 5.4 umožňuje přiřadit vektorovému elementu pouze jeden atribut. Jména sloupců atributové tabulky formátu ShapeFile lze vypsat s použitím parametru -d modulu v.in.shape (GRASS 5.4): # exportování mapy ve formátu ShapeFile z GRASSu 6.0 GRASS:~ > v.out.ogr in=grass novy vektor dsn=. olayer=vektor plochy type=area
# data ve formátu ShapeFile importujeme do GRASSu verze 5.0/5.4 GRASS:~ > v.in.shape -d in=vektor plochy.shp
Attribute layers available in vector_areas.shp: 1: ShapeID [int4:4] 2: TypID [int4:2] 3: Name [text:50] 4: TypName [text:50]
GRASS:~ > v.in.shape in=vektor plochy.shp out=vektor attr=TypID label=TypName 71
72
11.1. SÍŤOVÉ ANALÝZY
11.1
Síťové analýzy
Síťové analýzy jsou založeny na topologii dat. Jelikož GRASS je topologický GIS, jehož vlastnosti jsou rozšířeny knihovnou DGLib (Direct Graph Library), máme k dispozici následující moduly určené pro analýzy sítí: • analýza nejkratší cesty (d.path a v.net.path) • podsítě v rámci vektorové sítě (v.net.alloc) • úloha minimálního Steinerova stromu (v.net.steiner) • úloha obchodního cestujícího (v.net.selesman) • analýza nákladů (v.net.iso) V kapitole 12 si na příkladu ukážeme proces optimalizace spádových území v okolí nemocnic.
11.1.1
Analýza nejkratší cesty
Nejkratší cestu mezi dvěmi zadanými body lze zprostředkovat dvěmi způsoby. Standardně se jako váha bere pouze potřebná vzdálenost. Využít lze ovšem také atributy z databázové tabulky, např. informaci o nejvyšší povolené rychlosti nebo o stavu vozovky. Tuto váhu lze definovat pro oba směry zvlášť. Zohlednit lze také atributy uzlů (např. časový cyklus semaforů na křižovatkách komunikací). Modul d.path Modul d.path pracuje přímo s monitorem GRASSu. Modul je řízen pomocí myši a výsledek zobrazuje ihned v monitoru na zobrazené podkladové mapě. Modul umožňuje určení pouze dvou bodů, počátečního a koncového. Pokud chceme analyzovat složitější cestu (složenou z více uzlových bodů) nebo výsledek uložit do nové mapy, použijeme raději modul v.net.path. Modul v.net.path Modul v.neth.path se chová podobně jako d.path, nabízí však širší spektrum parametrů. Dalším rozdílem je, že tímto modulem lze vytvořit novou vektorovou mapu. Vygenerované mapy lze tedy uložit do zláštních vrstev. Možné použití tohoto modulu by mohlo být např. určení nejkratší cesty v síti silnic. Použijeme např. modelová data z datasetu FRIDA [9] (město Osnabrück). V rámci následujícího příkladu
11.2. FUNKCE PRŮNIKU, PŘEKRYVU A SPOJENÍ
73
tedy nalezneme nejkratší cestu z bodu 40 do bodu 71 (viz kapitola 12). GRASS:~ > echo "1 40 71" | v.net.path in=nemocnice net out=ma posledni cesta Pro zohlednění směru cesty, lze při výpočtu nasadit sloupce „forwardÿ a „backwardÿ. Nová mapa ma posledni cesta tak obsahuje nejkratší (nejvýhodnější) cestu mezi zadanými body.
11.1.2
Podsítě sítí
V rámci zadané vektorové sítě lze pomocí modulu v.net.alloc vytvořit zvolené podsítě. Toho lze využít např. při určování okrsků pro několik policejních stanic v rámci města. Detailnější popis si ukážeme v kapitole 12.
11.1.3
Úloha minimálního Steinerova stromu
Minimální Steinerův strom popisuje optimální spojení uzlů v rámci sítě. Pro snazší pochopení uvedeme jeden příklad: Představme si, že několik nemocnic ve městě potřebuje nové síťové propojení (telemedicína). Cílem úlohy je vést kabely ideálně po stávající síti komunikací tak, že bude spotřebováno co možná nejmenší nutné množství materiálu. Požadavkem je zapojení všech nemocnice do této sítě. Právě modul v.net.steiner umožňuje řešení této detailně formulované úlohy.
11.1.4
Úloha obchodního cestujícího
Tento typ úlohy spočívá v určení ideální cesty mezi různými body. Jako příklad opět použijeme nemocnice rozmístěné různě po městě, které má navštívit zaměstnancem jakési farmaceutické firmy. Modul GRASSu v.net.selesman určí pro tohoto „cestujícíhoÿ ideální cestu, ať už v závislosti na čase nebo na délce trasy. A to opět na základě atributů silnic. GRASS:~ > v.net.salesman in=nemocnice sit out=lekarnik ccats=40-215
11.1.5
Analýza nákladů
Modul v.net.iso počítá analýzu nákladů ve vektorové síti. Tím se rozumí výpočet iso-vzdáleností, tedy určení koncentrických vzdáleností okolo bodu. V závislosti na délce vektorového elementu nebo daných atributů lze získat potřebné údaje (např. odtok z kanalizační sítě).
11.2
Funkce průniku, překryvu a spojení
Všechny tyto analytické funkce pokrývá jediný modul – v.overlay.
74
11.2. FUNKCE PRŮNIKU, PŘEKRYVU A SPOJENÍ
Obrázek 11.1: Data VMAP0 Německa Jednotlivé kroky si vysvětlíme na příladech. Jako ukázková data použijeme dataset VMAP0 Německa. K dispozici máme administrativní hranice, hlavní vodní toky, silnice, železnice, výšková data. Dataset byl připraven pro tato skripta na GDF Hannover bR (lze ho stáhnout z adresy www.gdf-hannover.de/gis.php?id=2). Nejdříve tedy importujeme potřebné mapy ve formátu ShapeFile. Novou location založíme automaticky na základě metadat těchto dat. GRASS:~ > v.in.ogr polgrenzen.shp out=pol hranice location=nemecko GRASS:~ > exit
# opět spustit GRASS s location nemecko: $ grass60 /home/user/grassdata/nemecko/PERMANENT GRASS:~ > v.in.ogr -e dsn=./binnseen.shp out=jezera GRASS:~ > v.in.ogr -e dsn=./strassen.shp out=cesty GRASS:~ > v.in.ogr -e dsn=./schienen.shp out=zeleznice GRASS:~ > v.in.ogr -e dsn=./hoehenpunkte.shp out=vyskove body
11.2.1
Funkce spojení (union)
Tento funkční nástroj lze v GRASSu použít pouze za předpokladu, že vstupní mapa (parametr ainput) obsahuje polygony. Jako příklad spojíme mapu politické hranice a jezer: GRASS:~ > v.overlay ainput=pol hranice binput=jezera output=jezera v nemecku \ operator=or Při kontrole výsledné mapy je vidět, že atributy vstupních map jsou uloženy do nově vytvořené atributové tabulky. Jména sloupců obdržely předponu a resp. b , v závislosti na tom, k jaké
11.2. FUNKCE PRŮNIKU, PŘEKRYVU A SPOJENÍ
75
mapě původně patřily.
11.2.2
Funkce průniku (intersection)
Při intersekci (průnik, intersection) obsahuje výsledná mapa pouze plochy obsažené v obou vstupních mapách. Všechny další oblasti jsou odstraněny: GRASS:~ > v.overlay ainput=pol hranice binput=jezera \ output=hranice kde jezera operator=and Atributy vstupních map jsou opět spojeny do nově vytvořené atributové tabulky výstupní mapy. Jména sloupců jsou opatřeny příslušnou předponou (a resp. b ), v závislosti na tom, k jaké mapě původně patřily.
11.2.3
Funkce vyříznutí (cutout)
V tomto případě je princip přesně obrácený, než při spojování vektorových dat (union). Ze vstupních vektorových map se do výsledné mapy uloží pouze ty plochy, které v mapě binput nejsou přítomny: GRASS:~ > v.overlay ainput=pol hranice binput=jezera \ output=hranice kde nejsou jezera operator=not Ve výsledné mapě jsou tedy uloženy pouze ty spolkové země, ve kterých nejsou žádná jezera. Obzvláště dobře je to vidět na oblasti Bodamského jezera1 . Atributy vstupních map jsou opět spojeny a uloženy do nově vznikající atributové tabulky výstupní mapy. Jména sloupců jsou opatřeny příslušnou předponou – a , resp. b , v závislosti na příslušnosti ke vstupní mapě.
11.2.4
Funkce překrytí (overlay)
V rámci funkce překrytí (overlay) jsou převzaty prvky z ainput a binput, pouze pokud ainput není překryta binput. V následujícím příkladu bude mapa hranice pres jezera obsahovat hranice, které jsou překryty jezery: GRASS:~ > v.overlay ainput=jezera binput=pol hranice \ output=hranice pres jezera operator=xor Atributy vstupních map jsou spojeny a uloženy do nové atributové tabulky. Jména sloupců jsou opatřeny předponou a , resp. b , v závislosti na tom, k jaké mapě původně patřily. 1
Pozn. překl.: Jiho-východní cíp, na hranicích s Rakouskem a Švýcarskem.
76
11.3
11.3. EXTRAKCE DAT
Extrakce dat
Modul v.extract umožňuje extrahovat (vybrat) vektorové elementy a příslušné atributy ze vstupní mapy a uložit výsledek do mapy nové. Z mapy pol hranice vytvoříme novou mapu s hranicemi Dolního Saska: GRASS:~ > v.extract in=pol hranice out=dolni sasko type=area new=-1 \ where="nam=’NIEDERSACHSEN’"
11.4
Správa topologie
Pro tvorbu topologie, její analýzu a opravu, máme k dispozici moduly v.build a v.clean.
Modul v.build Modul v.build je následovníkem modulu v.support z GRASSu 5.4. Slouží pro sestavení topologie, která je ovšem většinou vybudována automaticky. Kromě toho obsahuje tzv. „dump funkceÿ, které na standardní výstup vypisují informace o topologii nebo o „prostorovém indexuÿ.
Modul v.clean Modul v.clean umožňuje modifikovat topologii vektorových dat a případně data modifikovat tak aby byla topologicky strávná. Momentálně máme k dispozici celkem dvanáct topologických operací, které si nyní představíme: break : Na průsečíku linií vytvoří uzel (node). rmdupl : Odstraní duplicitní linie, pozor na atributy. rmdangle : Odstraňuje tzv. dangels („přestřeleníÿ). Důležité je nastavit správnou hodnotu okolí (threshold). chdangle : Změní datový typ tzv. dangels z hranice (boundary) na linii. Důležité je opět nastavit správnou hodnotu okolí (threshold). rmbridge : Odstraňuje topologicky ilegální spojení mezi plochou a ostrovem nebo mezi dvěma ostrovy. chbridge : Mění datový typ spojení mezi plochou a ostrovem nebo mezi dvěma ostrovy z hranice (boundary) na linii. snap : V závislosti na hodnotě „thresholdÿ jsou linie připojeny k nejbližším uzlům.
11.5. VEKTORIZACE V GRASSU
77
rmdac : Odstraňuje duplicitní centroidy ploch. bpol : „Čištěníÿ topologie dat, která nejsou topologická (např. ShapeFile). prune : Odstraňuje uzly v závislosti na zadané hodnotě threshold z linií a hranic, a to tak, aby byla topologie změněna nebo poškozena. rmarea : Odstraňuje malé plochy v závislosti na zadané hodnotě threshold a přiřazuje je nejbližší velké ploše. rmsa : Odstraňuje malé úhly mezi liniemi a uzly.
11.5
Vektorizace v GRASSu
Spolu s nově vyvinutými vektorovými funkčními nástroji, byl také kompletně přepsán modul v.digit sloužicí k manuální vektorizaci dat. Tento modul je ovládán z grafického panelu, do kterého byly integrovány nejdůležitější funkce.
Obrázek 11.2: Grafický panel modulu v.digit
Před tím, než si ukážeme práci s tímto modulem, si krátce popíšeme jednotlivá tlačítka panelu. Digitize new point: Slouží pro vytvoření vektorových bodů. Formulář pro zadání atributů se vztahuje pouze na vybranou vrstvu (layer) a hodnotu kategorie (cat) bodu. Modul používá tři režimy přidělování nové hodnoty kategorie: no category, manual entry a next not used. Pokud existuje odpovídající atributová tabulka bude automaticky aktualizována po dokončení vektorizace prvku (obr. 11.5). Digitize new line: Slouží pro vytvoření vektorových linií. Formulář pro zadání atributů se vztahuje pouze na vybranou vrstvu (layer) a hodnotu kategorie (cat). Existují celkem tři režimy přidělování nové hodnoty kategorie: no category, manual entry a next not used. Pokud existuje odpovídající atributová tabulka bude automaticky aktualizována po dokončení vektorizace prvku (obr. 11.5). Digitize new boundary: Slouží pro vektorizaci nových uzavřených hranic (boundary). Formulář pro zadání atributů se opět vztahuje pouze na vybranout vrstvu (layer) a hodnotu kategorie (cat) linie. Modul používá tři režimy přidělování nové hodnoty kategorie:
78
11.5. VEKTORIZACE V GRASSU no category, manual entry a next not used. Pokud existuje odpovídající atributová tabulka bude automaticky aktualizována po dokončení vektorizace prvku (obr. 11.5). Po dokončení vektorizace plochy jsou uloženy atributy a připojeny k odpovídajícímu centroidu, nikoliv tedy k samotné hranici. Centroid (definiční bod plochy) je potřeba dodatečně vektorizovat (funkce „Digitize new centroidÿ). Při vektorizaci hranic proto zvolte raději režim no category.
Digitize new centroid: Slouží pro vektorizaci centroidů v rámci nových ploch. Formulář pro zadání atributů se vztahuje pouze na vybranou vrstvu (layer) a hodnotu kategorie (cat). Modul používá tři režimy přidělování nové hodnoty kategorie : no category, manual entry a next not used. Pokud existuje odpovídající atributová tabulka bude automaticky aktualizována po dokončení vektorizace prvku (obr. 11.5). Centroid nese atributy plochy. Move vertex: Umožňuje přesunout opěrné body linií („vertexÿ). Nejedná se tedy o uzly („nodesÿ). Vektorové body a centroidy nejsou považovány za opěrné body proto nelze tuto funkci použít pro změnu jejich polohy. Add vertex: Umožňuje vložení nového opěrného bodu linie. Opěrný bod není považován za uzel a nemůže mu být přiřazen žádný atribut. Opět platí, že tato funkce nemůže být použita na vektorové body a centroidy, jelikož ty nejsou považovány za opěrné body. Remove vertex: Slouží pro odstranění opěrných bodů – nevztahuje se na linie nebo hranice. Split line: Umožňuje rozdělit linii na dvě nové, spojené uzlem („nodeÿ). Modifikace zasáhne také příslušné atributy. Move point, line, boundary or centroid: Slouží pro změnu polohy vektorových bodů, linií, hranic a centoridů. Pokud je hranice některé z ploch přeruššena uzly, je přesunuta pouze její část. Delete point, line, boundary or centroid: umožňuje odstranit vektorové body, linie, hranice a centroidy. Pokud je hranice některé z ploch přeručena uzly, je odstraněna pouze její část. Zoom in by window: Slouží pro zvětšování výřezu okna výběrem pomocí myši. Funkce jednotlivých tlačítek se mění a je vypisována v grafickém panelu. Přičemž jejich funkce je obdobná jako u modulu d.zoom. Zoom out: Uživatel může pomocí této funkce zmenšit aktuální výřez. Zoom to default region: Nastaví hranice zobrazení na výchozí hodnotu, tedy na hodnotu, kterou bychom získali příkazem g.region -d a provede překreslení mapy. Zoom to region: Nastavení zobrazení podle předem uloženého regionu. Ten si lze připravit příkazem g.region s parametrem save=.
11.5. VEKTORIZACE V GRASSU
79
Redraw: Překreslí obsah monitoru. Tuto funkci můžete použít pokud např. změníte pokladovou mapu. Display categories: Zobrazení hodnot kategorií (cat) a čísel vrstev (layer) objektu vybraného pomocí myši. Dané hodnoty lze modifikovat. Display attributes: Zobrazení atributů objektu vybraného pomocí myši. Formulář umožňuje jednotlivé atributy také editovat. Zobrazeno bývá také číslo vrstvy (layer), hodnota kategorie (cat), údaje o databázi, sloupec s primárním klíčem (key column). Atributy lze uložit v jednom z podporovaných kódování (utf-8, ascii, iso8859-1 a koi8-r). Open settings: Otevře nový formulář, ve kterém lze nastavit různé základní parametry. Funkce jsou rozděleny do skupin (záložek). Ve skupině Symbology lze měnit barevné znázornění jednotlivých prvků. Nastavení funkce „snappingÿ (hodnotu okolí) lze provést v záložce Settings. Atributová tabulka se vytváří (pokud ještě nebyla vytvořena) v záložce Table. Podkladové mapy se nastavují v záložce Background. Zobrazit lze několik rastrových i vektorových map. Exit: Ukončení práce s modulem v.digit. Veškeré změny jsou uloženy a je znovu sestavena topologie dat.
Příklad vektorizace Proces vektorizace si ukážeme na území Spearfish na pokladové mapě 1 : 24 000 (obrázek 11.3). Topografická mapa je dostupná v testovacím datasetu „Spearfishÿ, uvolněném South Dacota Geological Survey (SDGS) speciálně jako výukový dataset ke GRASSu. Dataset lze stáhnout z adresy http://grass.itc.it/dowload/data.php. Import topologické mapy do datasetu Spearfish Nejdříve stáhneme location Spearfish $ wget http://grass.itc.it/sampledata/spearfish grass60data.tar.gz $ wget http://grass.itc.it/sampledata/spearfish toposheet.tar.gz Rozbalíme location do adresáře grassdata a spustíme GRASS $ tar xvzf spearfish grass60data.tar.gz /home/user/grassdata/ $ grass60 /home/user/grassdata/spearfish/PERMANENT Nyní můžeme naimportovat topografickou mapu (formát GeoTiff), nejdříve ovšem daný soubor rozbalíme GRASS:~ > tar xzf spearfish toposheet.tar.gz GRASS:~ > r.in.gdal -e in=spearfish topo24.tif out=tk24 Pro kontrolu můžeme mapu vizualizovat
80
11.5. VEKTORIZACE V GRASSU
GRASS:~ > g.region rast=tk24 -ap GRASS:~ > d.mon x0 GRASS:~ > d.rast tk24
Obrázek 11.3: Topografická mapa regionu Spearfish s informacemi o využití půdy
Vektorizovat budeme oblast v okolí „Lookhout Peakÿ. Konkrétně bod (místo výhledu na Lookout Peak), vrstevnice a oblast lesa. Jednotlivé vektorové prvky budou uloženy do tří různých tématických map (obr. 11.3). Protože chceme, aby se mapy uložily do nového mapsetu, ukončíme nyní GRASS a opět jej spusťte s novým mapsetem: GRASS:~ > exit # Při spuštění zadat jméno nového mapsetu $ grass60
Místo výhledu „Lookout Peakÿ Pro vektorizaci bodu „Lookout Peakÿ spustíme modul v.digit s volbou -n. Tím bude automaticky vytvořena nová mapa. Jako podkladovou mapu zvolíme tk24: GRASS:~ > d.mon x0 GRASS:~ > g.region rast=tk24 GRASS:~ > v.digit -n map=lookout bgcmd="d.rast tk24" Spustí se grafický panel modulu v.digit (viz obr. 11.2) a na pozadí monitoru se zobrazí mapa tk24. Stiskněte tlačítko Settings a vyberte záložku Table, kde zadejte jméno nového sloupce (Name) v atributové tabulce. Typ sloupce nastavte na varchar (textový řetězec) –
11.5. VEKTORIZACE V GRASSU
81
viz obrázek 11.4.
Obrázek 11.4: Vytvoření atributové tabulky při manuální vektorizaci
Následně zvětšíme oblast východně od města Spearfish a vytvoříme jeden bod na místě výhledu „Lookout Peakÿ (viz obr. 11.3): Zvolte tlačítko Digitize new point a následně klikněte v monitoru na požadované místo. Bezprostředně po vytvoření bodu se objeví nové okno, ve kterém můžeme doplnit potřebné atributy. V našem případě jsou dva – kategorie (cat) a jméno (Name). Do políčka Name tedy napíšeme „Layout Peakÿ. Úložení atributů do databázové tabulky provedete pomocí tlačítka Submit. Úspěšná aktualizace atributů je potvrzena nápisem „Record sufcessfully updatedÿ. Modul v.digit nyní můžeme opustit tlačítkem Exit. Mapa lookout je uložena a je vybudována její topologie. Building topology ... 1 primitives registered 0 areas built 0% 0 isles built Topology was built. Number of nodes : Number of primitives: Number of points : Number of lines : Number of boundaries: Number of centroids : Number of areas : Number of isles :
1 1 1 0 0 0 0 0
Vektorizace vrstevnic Jako další budou manuálně vektorizovány vrstevnice v intervalu 100 m. Modul v.digit opět spustíme s parametrem -n, čímž vytvoříme novou mapu vrstevnice. Podkladová mapa bude opět topografická mapa tk24: GRASS:~ > d.mon x0
82
11.5. VEKTORIZACE V GRASSU
GRASS:~ > g.region rast=tk24 GRASS:~ > v.digit -n map=vrstevnice bgcmd="d.rast tk24" Spustí se grafický panel modulu v.digit (viz obr. 11.2) a na pozadí monitoru se zobrazí mapa tk24. Stiskněte tlačítko Settings a vyberte záložku Table a zadejte jméno nového sloupce (Vyska) v atributové tabulce. Datový typ ponechte nastavený na int (celé číslo). Vhodně zvětšte území východně od města Spearfish (obr. 11.3) a stisknutím tlačítka Digitize new line spusťe vektorizaci linií. Celý proces vektorizace započne stisknutím levého tlačítka myši. Funkce jednotlivých tlačítek je popsána v panelu modulu. I zde můžete nastavit vrstvu (layer) a způsob zvolení hodnoty kategorie (cat).
Obrázek 11.5: Udání atributů při vektorizaci Při ukončení vektorizace každé linie2 se objeví grafický formulář pro zadání atributů (obr. 11.5). V našem případě zadáme jako atribut linie její nadmořskou výšku. Klikněte tedy myší do pole formuláře se sloupcem Vyska a zadejte správnou hodnotu (např. 4200). Stisknutím tlačítka Submit je atribut uložen do tabulky. Uložení je potvrzeno nápisem „Record sufcessfully updatedÿ. Po dokončení procesu vektorizace opusťte modul pomocí tlačítka Exit, mapa je uložena a je vytvořena topologie dat: Building topology ... 825 primitives registered 2
Pozn. překl.: Modul v.digit disponuje jednou nepříjemnou vlastností – během vektorizace prvku nelze měnit pohled (zoomovat, centrovat pohled).
11.5. VEKTORIZACE V GRASSU 0 areas built 0 isles built Topology was built. Number of nodes : Number of primitives: Number of points : Number of lines : Number of boundaries: Number of centroids : Number of areas : Number of isles :
83
203 249 0 249 0 0 0 0
Lesní oblasti východně od Spearfish Nakonec budeme vektorizovat lesní oblasti v okolí výhledového bodu. Modul v.digit opět spustíme s parametrem -n, čímž vytvoříme novou mapu les. Podkladová mapa bude opět tk24: GRASS:~ > d.mon x0 GRASS:~ > g.region rast=tk24 GRASS:~ > v.digit -n map=les bgcmd="d.rast tk24" V grafickém panelu pod Settings vytvoříme atributovou tabulku, která bude mít kromě sloupce kategorie (cat) také sloupec Name typu varchar (obr. 11.4). Zvětšte oblast východně od města Spearfish a stisknutí tlačítka Digitize new boundary začněte vektorizovat hranice lesních ploch. Funkce tlačítek myši je opět popsána v grafickém okně. Při vektorizaci ploch nastavte režim přidávání nové kategorie na hodnotu No category. Atributy plochy totiž nejsou vztaženy k její hranici, nýbrž k centroidu plochy. Pro vytváření uzavřených ploch je důležité nastavit Snapping threshold na vhodnou hodnotu, tak aby linie byly automaticky navázány. Výchozí hodnota je 10 pixelů na monitoru (obr. 11.6)3 .
Obrázek 11.6: Nastavení hodnoty okolí („snapping thresholdÿ) pro navázání linií 3
Pozn. překl.: GRASS 6.0 obsahuje chybu, která neumožňuje automatické navázání linií. Linie musí být přerušena alespoň jedním uzlem, navázaní linií musíte později opravit funkcí Move vertex.
84
11.5. VEKTORIZACE V GRASSU
Do uzavřené plochy musíte vložit centroid (definiční bod plochy), ke kterému jsou poté přiřazeny atributy plochy. Stiskněte tlačítko Digitize new centroid a nastavte režim přidávání dalších kategorií na Next not used. Klikněte do středu plochy a vložte nový centorid. Do formuláře pro zadávání atributů vložte do sloupce Name „lesÿ a potvrďte tlačítkem Submit. Nakonec opusťte modul tlačítkem Exit: Building topology ... 478 primitives registered 46 areas built isles built Topology was built. Number of nodes : 357 Number of primitives: 478 Number of points : 0 Number of lines : 0 Number of boundaries: 367 Number of centroids : 46 Number of areas : 46 Number of isles : 0
12 Příklad použití: Vektorová optimalizace spádových oblastí Nyní si blíže představíme práci s modulem v.net.alloc. Máme vytvořit mapu spádových oblastí vztažených k výchozím bodům (kliniky), ze kterých dorazí nejrychleji první pomoc. V potaz lze vzít různé faktory (nejvyšší povolená rychlost, stav silnic, jednosměrné silnice, . . . ) přiřazených v závislosti na směru vektorových linií a poloze uzlů (silnic a křižovatek). V této kapitole se budeme zabývat aplikací analýzy silniční sítě.
12.1
Import ukázkových dat
Stejně jako u předchozích příkladů, použijeme volně dostupný dataset, tentokrát se bude jednat o data z projektu FRIDA [9]. Jde o vektorová data města Osnabrück (Německo). Vedle aktuální sítě silnic obsahuje dataset také informace o říční síti a o významných objektech (kliniky, školy, atd.). Data jsou uložena ve formátu ShapeFile. Vytvořit location v souřadnicovém systému Gauß-Krüger lze zcela automaticky. A to z aktuálního sezení GRASSu na základě importovaných dat (viz kapitola 5.2). Import dat ve formátu ShapeFile provedeme modulem v.in.org (např. z location Spearfish). $ grass60 ~/grassdata/spearfish60/user1/ Import sítě silnic a vytvoření nové location GRASS:~ > v.in.ogr dsn=frida-1.0.-1-shp-joined/strassen-joined.shp \ out=silnice loc=frida GRASS:~ > exit Start s novou location $ grass60 ~/grassdata/frida/PERMANENT Import bodových dat GRASS:~ > v.in.ogr dsn=frida-1.0.-1-shp-joined/poi-joined.shp output=body Případné problémy s topologií dat by měly být vyřešeny při importu modulem v.in.ogr. Pokud se přesto při importu objeví chybové výpisy, např. u polygonových dat (FRIDA v1.0.1), můžete tyto chyby v topologii napravit pomocí modulu v.clean (viz kapitola 11.4). 85
86
12.2. VÝBĚR KLINIK Z BODOVÉ MAPY
Nejdříve je potřeba obohatit vektorovou mapu o další interní vrstvu (layer). To nám posléze dovolí přiřadit k mapě další atributovou tabulku: # Přidání nové vrstvy číslo 2 GRASS:~ > v.category body out=body 2f layer=2 op=add
Pro kontrolu vypíšeme kategorie obou vrstev GRASS:~ > v.category body 2f layer=1,2 op=print # -> layer 1 == layer 2
Obrázek 12.1: Síť silnic a klinik města Osnabrück
12.2
Výběr klinik z bodové mapy
Po importu extrahujeme z mapy body 2f pouze body odpovídající klinikám v prostoru města Osnabrück: # Extrakce klinik
12.3. PŘIŘAZENÍ KLINIK SÍTI SILNIC
87
GRASS:~ > v.extract in=body 2f out=kliniky pre type=point \ where="poiTypName=’Klinik/Hospital’" GRASS:~ > v.select ainput=body 2f binput=kliniky pre out=kliniky
Pro kontrolu: GRASS:~ > v.info kliniky # -> one dblink
GRASS:~ > v.category kliniky layer=1,2 op=print # -> 2 layers (dblinks) Vizualizace dat: GRASS:~ > d.erase GRASS:~ > d.vect silnice GRASS:~ > d.vect kliniky disp=attr attr=poiNameID bgcolor=white bcolor=black GRASS:~ > d.vect kliniky col=red icon=basic/diamond
12.3
Přiřazení klinik síti silnic
Na obrázku 12.1 je znázorněna výchozí situace při určování optimálních hranic oblastí. Aby mohly být kliniky přiřazeny síti silnic, je důležité je před vlastní operací integrovat do této sítě. Navíc je nutné přidělit jednotlivé kategorie právě ve vrstvě číslo 2, ke které se budou později vztahovat výpočetní operace. Toto přiřazení bude provedeno ve dvou krocích. Nejdříve spojíme mapu kliniky s mapou silnice do nové mapy silnice kliniky. Atributové tabulky spojíme na základě čísla vrstvy (layer): Spojení map GRASS:~ > v.patch in=silnice,kliniky out=silnice kliniky Kontrola GRASS:~ > v.info silnice kliniky # -> dblinks = 0
GRASS:~ > d.erase GRASS:~ > d.vect silnice kliniky GRASS:~ > d.vect silnice kliniky type=point col=red
88
12.3. PŘIŘAZENÍ KLINIK SÍTI SILNIC
V případě, že není nastaveno připojení k databázi, musíme tak učinit nyní GRASS:~ > db.connect dr=dbf database=’$GISDBASE/$LOCATION NAME/$MAPSET/dbf’
Zobrazíme sloupce z atributové tabulky silnice GRASS:~ > db.describe -c silnice ncols:7 Column 1: Column 2: Column 3: Column 4: Column 5: Column 6: Column 7:
cat strShapeID strID strTypID strSpuren strEbene strName
Nyní přiřadíme atributy linií k vektorové mapě pod číslem vrstvy 1 GRASS:~ > v.db.connect silnice kliniky dr=dbf data=’$GISDBASE/$LOCATION NAME/$MAPSET/dbf/’ table=silnice layer=1 key=cat Podobně i pro druhou vrstvu (bodové informace) GRASS:~ > v.db.connect silnice kliniky dr=dbf data=’$GISDBASE/$LOCATION NAME/$MAPSET/dbf/’ table=kliniky layer=2 key=cat Kontrolní výpis GRASS:~ > v.db.connect -p silnice kliniky Poznámka: Pokud bychom nyní mapu silnice kliniky odstranili, byly by zároveň odstraněny i atributové tabulky (kliniky a silnice) (viz kapitola 10.3). Toto riziko lze obejít vytvořením jejich kopií. Nyní přistoupíme k druhému kroku, ve kterém se pokusíme zakomponovat ve vytvořené mapě silnice kliniky referenční body klinik do silniční sítě: Vytvoření spojení mezi silnicemi a klinikami: GRASS:~ > v.distance -p from=kliniky to=silnice out=silnice kliniky connect uploade=dist column=dist Spojení vektorových map silnice kliniky a silnice kliniky connect: GRASS:~ > v.patch in=silnice kliniky,silnice kliniky connect out=kliniky net pre
12.4. VYTVOŘENÍ OPTIMÁLNÍCH SPÁDOVÝCH OBLASTÍ
89
Na tomto místě opravíme chyby v topologii dat: GRASS:~ > v.clean in=kliniky net pre out=kliniky net tool=break,snap A odstraníme již nepotřebné mapy: GRASS:~ > g.remove vect=kliniky net pre,kliniky pre Mapa kliniky net obsahuje síť silnic, kliniky a spojovací linie mezi klinikami a silnicemi. Atributy klinik jsou přístupné ve vrstvě číslo 2, lze je tak využít jako výchozí body při určování spádových oblastí.
12.4
Vytvoření optimálních spádových oblastí
Po úspěšné přípravě dat přistoupíme k samotnému určení spádových oblastí příslušných klinik na základě nejkratšího potřebného času v závislosti na délce trasy.
Obrázek 12.2: Přiřazení ulic k nejbližší klinice
Jedná se, jak již bylo zmíněno, o nejjednodušší případ bez zohlednění dalších faktorů, jako
90
12.4. VYTVOŘENÍ OPTIMÁLNÍCH SPÁDOVÝCH OBLASTÍ
je nejvyšší povolená rychlost nebo směr jízdy. Jednotlivé atributy (názvy sloupců atributové tabulky) lze však bezproblémově přiřadit modulu v.net.alloc. GRASS:~ > v.net.alloc in=kliniky net out=kliniky alloc ccats=40-215
Výsledkem je mapa obsahující podsítě, vytvořené na základě dostupnosti přiřazené jednotlivým klinikám. Každá ulice je tedy přiřazena přesně jedné klinice, ze které je, na základě vzdálenosti, nejpřístupnější. V případě potřeby lze přidat do linií další uzly tak aby bylo možné definovat přesnější hranici oblastí. Na obrázku 12.2 můžeme vidět výsledek naší činnosti. Vizualizaci můžete provést buď pomocí modulu d.m, nebo příkazem d.vect: GRASS:~ > d.vect map=kliniky alloc col=red cats=40 GRASS:~ > d.vect map=kliniky alloc col=green cats=41 GRASS:~ > d.vect map=kliniky alloc col=blue cats=69 ... GRASS:~ > d.vect map=kliniky alloc col=black cats=215
Celkem obsahuje GRASS sedm různých modulů určených pro síťové analýzy, blíže popsaných v kapitole 11.1. Jejich použití je velmi podobné. Tento příklad tak může posloužit jako předloha pro další vaše experimenty.
13 Konverze dat Často je potřeba převést rastrová data (linie a plochy) na data vektorová. Či v opačném případě např. vektorové linie do rastrového formátu, tak abychom mohli vytvořit digitální model terénu. Jelikož je GRASS hybridní GIS, nabízí moduly pro konverzi dat z jednoho formátu do druhého.
13.1
Vektorizace rastrových dat
GRASS umožňuje automatickou vektorizaci rastrových dat. Tento převod lze aplikovat na liniová (isolinie), plošná i bodová data. Rastrova data
Vektorova data r.to.vect feature=area
Plochy r.conto
ur
Linie
Polygony Isolinie Linie
r.thin + r.to.vect feature=line
v.digit (manualne)
Obrázek 13.1: Moduly pro automatickou vektorizaci rastrových map
13.1.1
Vektorizace linií a isolinií
GRASS poskytuje dva zajímavé moduly, které umožňuje převést rastrová data na liniová vektorová data. Jsou to r.to.vect a r.contour. Modul r.to.vect použijeme pro vytvoření vektorových linií. Tento modul podporuje zároveň vektorové linie, polygony a body, jako výchozí typ jsou nastaveny linie. Pokud jsou linie v rastrovém formátu příliš široké (více pixelů vedle sebe), musí být nejdříve ztečeny modulem r.thin na šířku jednoho pixelu: GRASS:~ > r.thin in=rastr out=rastr thin GRASS:~ > r.to.vect in=rastr thin out=rastr vect feature=line 91
92
13.1. VEKTORIZACE RASTROVÝCH DAT
Pokud potřebujete vytvořit vektorové linie (vrstevnice) na základě digitálního modelu terénu, použijte modul r.countour. Vektorové linie jsou vytvořeny po zadání potřebné velikosti kroku (step). Velikost intervalu isolinií (vrstevnic) je závislá na sklonu svahu a měřítku mapy.
Vektorizace ploch Pro konverzi rastrových ploch na vektorové použijeme opět modul r.to.vect s parametrem feature=area: GRASS:~ > r.to.vect in=rastr thin out=rastr vect feature=area
Vyhlazování linií a ploch Jelikož při konverzi rastrové reprezentace na vektorovou dochází, v závislosti na rozlišení vstupních dat, ke „schodovémuÿ efektu, nabízí GRASS možnost tento efekt minimalizovat pomocí modulu v.clean s parametrem prune v kombinaci s vhodně zvolenou hodnotou okolí (threshold). Podoba schodového efektu ve výsledné mapě je závislá na rozlišení vstupní rastrové mapy, protože algoritmus tohoto modulu nepracuje se středem buněk, ale snaží se průběh linie co nejlépe kopírovat. Na obrázku 13.2 je prezentován příklad vyhlazení vektorizované linie. Z demostračních důvodů byla zvolena velmi vysoká hodnota okolí (threshold). Původní je znázorněna červeně, vyhlazená linie modulem v.clean naopak modře. Byl tak zmenšen počet lomových bodů, a to bez narušení topologie dat. Kromě vizuálního efektu tato operace zmenšuje také objem dat.
Obrázek 13.2: Vyhlazování vektorizovaných linií
Opět zdůrazňujeme, že změna geometrie může ve svém důsledku pozměnit vypovídací hodnotu mapy. Používejte tedy tento modul pouze s nejvyšší opatrností. Nebojte se optimální hodnotu okolí (threshold) vyhledat postupně po malých krocích.
Konverze bodových dat Jak již bylo zmíněno, nová vektorová architektura již nepodporuje speciální formát „sitesÿ GRASSu 5.4. Bodová data jsou nyní spravována vektorovými moduly. Modul r.to.vect tak
13.2. RASTERIZACE VEKTOROVÝCH DAT
93
disponuje možností automaticky vektorizovat i rastrové body (feature=point).
13.2
Rasterizace vektorových dat
Konverzi vektorových dat (plošných, liniových a bodových) na data rastrová umožňuje modul v.to.rast. Při převodu musíme zadat atribut, který se má uložit jako hodnota rastrové buňky. Vektorova data
Rastrova data v.to.rast
Polygony Isolinie
v.to.rast
ontour
− r.surf.c
v.to.rast
Linie Body
w
rf.id
v.su
Plochy Linie
t
f.rs .sur
v
v.to.rast
Body
Obrázek 13.3: Moduly pro rasterizaci vektorových dat podle [Net00]
Na výběr máme následující parametry: attr cat val z
→ → → →
atributy z databázové tabulky hodnoty kategorií předdefinované hodnoty souřadnice z (pouze u bodů a linií)
Pokud mají být použity atributy (attr) z databázové tabulky, je důležité zadat odpovídající sloupec této tabulky. Rozlišení výsledné rastrové mapy závisí na nastavení aktuálního regionu. Vlastnosti regionu lze změnit modulem g.region. GRASS také umožňuje vytvářet spojité rastrové mapy interpolací bodových dat. Dostupné interpolační metody jsou blíže popsány v kapitole 14.1.
94
13.2. RASTERIZACE VEKTOROVÝCH DAT
14 Interpolace Jedním z nejčastějších použití (pravidelně nebo nepravidelně rozložených) bodových dat je interpolace souvislého povrchu na ohraničeném území. V GISu jsou pak tyto povrchy často využívány v různých modelech a simulacích. Asi nejznámějším případem interpolace je generování digitálního výškového modelu (DEM) z bodových výškových dat.
14.1
Interpolace rastrových dat
Při interpolaci rozlišujeme dvě různá použití: • změna rozlišení rastrových dat („resamplingÿ), • vyplnění „děravýchÿ míst (interpolace). Pro první případ nabízí GRASS dva interpolační moduly: 1. metoda nejbližšího souseda „nearest neighborÿ (NN), 2. spline-funkce (Regularized Splines with Tension, RST)1 . Pro druhý případ nabízí GRASS následující metody: 1. metoda vážené vzdálenosti (Inverse Distance Weighted, IDW)2 , 2. spline-funkce (Regularized Splines with Tension, RST). 1
Pozn. překl.: Algoritmus patří do skupiny funkcí označovaných jako splines, které plochu neprokládají skrze vstupní body, ale mezi vstupními body. Vlastnosti prokládané křivky jsou dány jejími parametry. 2 Pozn. překl.: Metoda IDW je interpolační metoda, u které jsou hodnoty buňek odhadovány na základě průměru známých hodnot okolí každé buňky, přičemž hodnoty buněk bližších centrální buňce mají větší vliv resp. váhu v průměrovém procesu.
95
96
14.1.1
14.1. INTERPOLACE RASTROVÝCH DAT
Metoda IDW
Algoritmus IDW bere v potaz následující předpoklad: určovaná (interpolovaná) hodnota bodu je určena jako vážený průměr známých hodnot, kdy se váha přiřazená jednotlivým bodům zmenšuje podle vzdálenosti bodů. Nejdříve je tedy vypočítána vzdálenost mezi určovaným bodem a sousedními body o známé hodnotě. Následuje výpočet jeho hodnoty, jako váženého průměru vzdálenosti (1/d). Často je vzdálenost v závislosti na vlastnostech povrchu umocněna (1/d2 nebo 1/d3 ). Výhodou je dobrá znalost interpolovaného povrchu, tak abyste mohli interaktivně nastavit parametry interpolace a dosáhnout tak co nejlepšího výsledku. Výsledkem této činnost je rastrová mapa.
Moduly GRASSu pro interpolaci IDW v.surf.idw r.surf.idw
vstup: vektorová mapa vstup: rastrová mapa
Jelikož jsou bodová data uložena v GRASSu 6.0 ve vektorové formě, byl modul s.surf.idw z GRASSu 5.4 nahrazen modulem v.surf.idw.
14.1.2
Metota RST (spline)
Metodu RST je výhodné aplikovat na data, která obsahují větší oblasti bez hodnot. Výsledkem této metody je plocha, která prochází mezi výchozími body. Cílem je, aby tato plocha reprezentovala co možná nejvěrněji vstupní bodové pole a zároveň aby vyplnila mezery v tomto poli. Vlastnosti této plochy jsou přímo ovlivněny zadanými parametry, proto je nanejvýš vhodné se s nimi blíže seznámit. Detaily optimalizace parametrů interpolace lze nalézt v [NM04]. Následující moduly využívají metodu RST a na základě vektorových dat vytvoří interpolovanou rastrovou mapu.
Moduly GRASSu pro interpolaci RST v.surf.rst v.vol.rst
G3D grid volume (3D rastrová data)
Jak jsme se již zmínili v podkapitole 14.1.1, jsou bodová data v GRASSu 6.0 spravována jako vektorové body. Pro interpolaci RST tak vznikl odpovídající modul v.surf.rst.
14.2. INTERPOLACE DAT VE VEKTOROVÉM FORMÁTU
97
Další interpolační moduly r.surf.area r.surf.contour r.surf.fractal r.surf.gauss r.surf.random
14.2
Interpolace dat ve vektorovém formátu
Bodové informace (např. hodnoty měření) lze plošně prezentovat také pomocí tzv. „Thiessenových polygonůÿ. Po manuální vektorizaci bodových dat např. s atributem nadmořské výšky z, nastavíme region pomocí g.region na požadované rozlišení a nakonec pomocí metody IDW určíme plochy těchto polygonů. GRASS:~ > v.surf.idw in=bodova mapa out=thiessen npoints=1
Použít lze různé metody triangulace. Pro podrobnější informace si prostudujte manuálovou stránku modulu (g.manual v.surf.idw).
98
14.2. INTERPOLACE DAT VE VEKTOROVÉM FORMÁTU
15 Mapová algebra s modulem r.mapcalc Modul r.mapcalc je používán pro analýzu, manipulaci a produkci rastrových map na základě aritmetických a logických operací. Pracuje buď v interaktivním režimu, nebo mu lze příkaz předat přímo jako parametr. Jako proměnné lze použít rastrové mapy, konstanty (celočíselné i reálné) a matematické funkce. GRASS rozlišuje hodnotu „no dataÿ a „0ÿ v tomto smyslu: NULL 0
žádná data hodnota „0ÿ (např. bod mrazu ve stupních Celsia)
Mapu vytvořenou pomocí modulu r.mapcalc přímo ovlivňují vstupní rastrové mapy, jejich formát a nastavení aktuálního regionu. Protože se jedná o skutečně mocný nástroj, určitě si prostudujte manuálové stránky modulu.
15.1
Modul r.mapcalc: definované operátory Tabulka 15.1: Definované operátory modulu r.mapcalc operátor
význam
typ
priorita vyhodnocení
ˆ
exponent
aritmetický
5
%
modulo (zbytek po celočíselném dělení)
aritmetický
4
/
dělení
aritmetický
4
∗
násobení
aritmetický
4
+
sčítání
aritmetický
3
−
odečítání
aritmetický
3
==
rovnost
logický
2
!=
nerovnost
logický
2
>
větší než
logický
2
<
menší než
logický
2
>=
větší rovno než
logický
2
<=
menší rovno než
logický
2
&&
AND (a)
logický
1
||
OR (nebo)
logický
1
#
rozděluje tabulku barev
aritmetický
-
99
100
15.2
15.2. MODUL R.MAPCALC: DEFINOVANÉ FUNKCE
Modul r.mapcalc: definované funkce Tabulka 15.2: Definované funkce modulu r.mapcalc
funkce
význam
význam
typ
abs(x) atan(x) atan(x,) cos(x) double(x) eval([x,y,...,]z) exp(x) exp(x,y) float(x) if if(x) if(x,a) if(x,a,b) if(x,a,b,c) int(x) isnull() log(x) log(x,b) max(x,y[,z...]) median(x,y[,z...]) min(x,y[,z...]) mode(x,y[,z...]) not(x) rand(low,high) round(x) sin(x) sqrt(x) tan(x)
absolutní hodnota z x arkustangens z x (výsledek ve stupních) arkustangens z x/y (výsledek ve stupních) kosinus z x (x ve stupních) převede x na číslo s plovoucí desetinnou čárkou vyhodnotí výrazy x a y a výsledek uloží do z exponenciální funkce z x mocnina y z x převede x na číslo s plovoucí desetinnou čárkou operátor rozhodování 1, když x není 0, jinak 0 a, když x není 0, jinak 0 a, když x není 0, jinak b a, když x > 0, b když x rovno 0, c když x < 0 převede x na celé číslo, zbytek odřízne 1, když x rovno N U LL (no data) přirozený log z x log z x při základu b vrátí největší ze zadaných hodnot vrátí prostřední hodnotu (medián) ze zadaných hodnot vrátí nejmenší ze zadaných hodnot vrátí nejčetnější hodnotu (modus) ze zadaných hodnot 1 pokud x je nula, jinak 0 vrátí náhodnou číselnou hodnotu z intervalu low,high zaokrouhlí x na nejbližší celočíselnou hodnotu sinus z x (x ve stupních) odmocnina z x tangens z x (x ve stupních)
|x| arctan(x) arctan(x) cos(x)
*1 F2 F F F
ex xy
F F F
1
Vrací reálné číslo, pokud je x reálné číslo. Výsledek je vždy reálné číslo. 3 Výsledek je celé číslo. 2
ln(x) logb (x)
sin(x) √ x tan(x)
I3 F F F * * * *
I F F F
15.3. VNITŘNÍ PROMĚNNÉ MODULU R.MAPCALC
15.3
101
Vnitřní proměnné modulu r.mapcalc Tabulka 15.3: Proměnné modulu r.mapcalc proměnná
význam
x() y() col() row() nsres() ewres()
proměnná proměnná proměnná proměnná proměnná proměnná
pro pro pro pro pro pro
aktuální aktuální aktuální aktuální aktuální aktuální
souřadnici x souřadnici y číslo sloupce číslo řádku rozlišení sever-jih rozlišení východ-západ
Použití modulu r.mapcalc si ukážeme na dvou jednoduchých příkladech:
výsledek = rastrová mapa soils − rastrová mapa reclass × 2 GRASS:~ > r.mapcalc "vysledek = soils - reclass * 2"
výsledek = (rastrová mapa soils − rastrová mapa reclass) × 2 GRASS:~ > r.mapcalc "vysledek = (soils-reclass) * 2"
15.4
Maskování
Maskování zájmové oblasti může být před vlastní analýzou dat velmi užitečné. Již existující rastrovou mapu nastavíme jako masku, tak že ji přejmenujeme na MASK (s velkými písmeny). Nebo vytvoříme kopii s tímto názvem pomocí modulu g.copy. Oblasti s hodnotou různou od NULL nebo „0ÿ jsou maskovány, tj. nevstupují do dalších analýz. Naopak oblasti pokryté jinou hodnotou (např. „1ÿ) maskovány nejsou. Modul r.mapcalc umožňuje velmi snadno vytvořit masku na základě existují mapy GRASS:~ > r.mapcalc "MASK = mapa" Maska může být vytvořena i na základě komplikovanějšího vztahu, např. maskovat oblasti, které jsou pokryty hodnotou „1ÿ nebo „3ÿ: GRASS:~ > r.mapcalc "MASK=if(mapa==1 || mapa == 3, null(), mapa)"
Nastavená maska bude aplikována na všechny další rastrové analýzy, vektorové operace nejsou maskou nijak dotčeny. Pokud masku již nepotřebujete, můžete ji buď smazat, nebo přejmenovat (viz kapitola 9.6.2).
102
15.4. MASKOVÁNÍ
Aby bylo na první pohled viditelné, že pracujete s aktivní maskou, je při každém příkazu vypsáno upozornění [Raster MASK present].
16 3D vizualizace a animace GRASS umožňuje vytvářet nejen 2D mapové výstupy, ale i 3D vizualizace a animace. A to s využitím interního modulu NVIZ. Alternativně lze nasadit i externí rozhraní k programům Vis5D a Vis5D+, které podobně jako GRASS patří k zástupcům svobodného softwaru.
16.1
Zobrazení 3D rastrových dat v modulu NVIZ
NVIZ je nástroj, který má své kořeny v modulu SG3d. Umožňuje vizualizaci třídimenzionálních rastrových, vektorových a bodových dat. Uživatel má možnost klást mimo jiné prostorově orientované dotazy a generovat animace.
Obrázek 16.1: Ovládací panel NVIZu
103
104
16.1. ZOBRAZENÍ 3D RASTROVÝCH DAT V MODULU NVIZ
Před vlastním startem programu je potřeba zkontrolovat nastavení rozlišení aktuálního regionu. Příliš velká území, jako např. výřez o velikosti 1 000 × 1 000 mapových jednotek, chod NVIZu značně zpomalují. Vstupní data lze načíst přímo při startu modulu GRASS:~ > nviz elev=model terenu nebo je zadat až při práci s NVIZem (parametr -q). Parametry modulu NVIZ -q elevation vector color
rychlý start bez načtení vstupních dat jméno rastrové mapy s hodnotou z jméno vektorové mapy jméno rastrové mapy, která bude zobrazena na povrchu elevation
Po startu NVIZu se otevře řídící grafický panel obsahující základní prvky pro ovládaní modulu. Patří sem funkce jako např. výběr barvy povrchu, nastavení barvy pozadí a nebo tvorba animací. Funkční nástroje řídícího panelu Auto Clear: Pokud je aktivní, bude obsah grafického okna před vykreslením povrchu vždy smazán. Clear: Vymaže obsah okna, ponechá pouze barvu pozadí. Surface: Vykreslí načtená rastrová data podle aktuálních voleb. Vectors: Vykreslí načtená vektorová data podle aktuálních voleb. Sites: Vykreslí načtená bodová data podle aktuálních voleb. Volumes: Vykreslí načtenou 3D rastrovou mapu („volumeÿ). Cancel: Zastaví vykreslovaní mapy. XY Position: Obsahuje bod, reprezentující pozici pozorovatele. Tuto pozici lze měnit pomocí myši. Height: Nastavuje výšku pozice pozorovatele. Look here: Dovoluje uživateli určit pozici, která se má stát středem zobrazení. Look cancel: Obnoví nastavení funkce Look here.
16.2. ZOBRAZENÍ 3D RASTROVÝCH DAT
105
Zexag: Nastavuje koeficient vertikální dimenze povrchu. Hodnota „1.0ÿ určuje stejný poměr x, y, a z. Pokud by ale např. hodnoty x a y byly v metrech a výška z ve stopách, pak by hodnota zexag měla být nastavena na „.305ÿ. Při nastavení zexag > 1.0 sice dochází ke zkreslení situace, výstup bývá ale mnohdy názornější. Prespective: Nastavuje úhel pohledu. Twist: Nastavuje sklon roviny. Reset: Nastavení výchozích hodnot. V dalších panelech lze nastavit osvětlení, barvu pozadí, atd. Vybrané funkční nástroje umožňují vytvořit filmové sekvence („průlet nad krajinouÿ) a nebo skripty pro další práci. Na okraj poznamenejme, že nápověda je dostupná přes tlačítko Help.
16.2
Zobrazení 3D rastrových dat
NVIZ zobrazuje vedle rastrových povrchů také 3D rastrová data (tzv. „volumeÿ). Tato funkcionalita se skrývá pod volbou Volumes, kterou naleznete v menu Panel (obr. 16.2).
Obrázek 16.2: Panel „Volumeÿ a zobrazení 3D rastrových dat
106
16.3. VYTVÁŘENÍ ANIMACÍ
Poznámka: Předpokládáme samozřejmě, že tato 3D data jsou uložena v aktuálním mapsetu. Na okraj: modul v.in.ascii nabízí parametr -z pro import bodových dat v interním 3D formátu. Další trojrozměrné vrstvy, které se mají zobrazit přes načtený povrch, se přidávají pomocí tlačítka Add. Pro každou úroveň lze nastavit barvu, průhlednost a světlost. Hodnota „Polygon Resolutionÿ by měla být nastavena přibližně na „3ÿ. Čím menší tato hodnota je, tím náročnější je vykreslování. Doba vykreslení přirozeně závisí na hardwarové konfiguraci počítače.
Obrázek 16.3: Rozdílné úrovně srážek na území Slovenska
Ukázkový dataset ([MH04]) lze stáhnout již v podobě plnohodnotné location. Je k nalezení mimo jiné GDF Hannover bR (viz [1]).
16.3
Vytváření animací
NVIZ vedle 3D vizualizace dat umožňuje vytvoření jednoduché animace. To se může hodit zejména při tvorbě a zobrazení časových řad. NVIZ tak nabízí možnost generování jednoduchých animací. Celý proces může být řízen z grafického rozhraní a nebo pomocí připraveného skriptu. Na tomto místě si představíme jednodušší variantu.
16.3. VYTVÁŘENÍ ANIMACÍ
107
Obrázek 16.4: Tvorba animací v NVIZu
Řídící panel animace naleznete v menu Panel→Animation (obr. 16.4). Nejprve je nutno zvolit celkový počet snímku filmu. Pro vytvoření plynulé animace zvolte alespoň hodnotu „100ÿ. Poté definujte výchozí bod animace a přidejte tuto pozici do časové osy tlačítkem Add. Zvolte další pozici na časové ose Key Frames v ovládacím panelu a nastavte nový bod (obr. 16.1) a uložte jej (tlačítko Add). Tento postup opakujte, dokud nebude časová osa „plnáÿ. Před uložením animace (Run and Save) je vhodné ji otestovat nejdříve v NVIZu (tlačítko „Playÿ v řídícím panelu). Do zadaného adresáře se uloží sekvence obrázků reprezentující jednotlivé snímky animace. Pomocí externích programů lze poté vytvořit např. animovaný GIF nebo film ve formátu MPEG [NM02]1 .
1
Pozn. překl.: Grafické okno nesmí být při vytváření sekvence překryto jiným oknem. Vypněte také spořič obrazovky. Obrázky se ukládají totiž přesně tak, jak je vidíte na monitoru počítače. Vytvoření filmu ve formátu MPEG umožňuje např. program ppmtompeg, který by měl být standardní součástí každé distribuce GNU/Linuxu. Doporučit lze taktéž mencoder, který je součástí dobře známého přehrávače MPlayer. Podrobnosti jsou uvedeny v českém překladu „GRASS Handbuchÿ v kapitole 10.4.
108
16.3. VYTVÁŘENÍ ANIMACÍ
17 Vizualizace dat a mapový výstup Důležitou částí práce s prostorovými daty je jejich vizualizace a prezentace, ať už ve formě analogové („papírovéÿ) mapy, 3D digitálního modelu nebo filmové animace. Na uživatele jsou tak kladeny další nároky – často znalost profesionálních grafických balíků a smysl pro grafické cítění. GRASS nabízí na tomto poli několik možností. Za prvé existuje modul ps.map umožňující produkci jednoduchých mapových děl ve formátu PostScript. Další možností je export do různých obrazových formátů a jejich další zpracování v externích grafických editorech.
17.1
Mapový výstup ve formátu PostScript
Modul ps.map nabízí produkci jednoduchých mapových výstupů. Výsledek se dá použít např. jako přehledová mapa. Parametry pro řízení výstupu jsou uloženy v textovém souboru. Toto řešení poskytuje výhodu rychlých změn vzhledu bez nutnosti opakovat komplexní interaktivní postup stále dokola. Ukázkový řídící soubor byl převzat z manuálové stránky ps.map a výsledkem je prezentován na obrázku 17.1: raster soils outline color black width 1 end comments soil.cmt where 1 6 font Helvetica end colortable y where 1 6.5 cols 4 width 4 font Helvetica end setcolor 6,8,9 white setcolor 10 green 109
110
17.1. MAPOVÝ VÝSTUP VE FORMÁTU POSTSCRIPT
vlines roads width 2 style 0111 color grey masked n end vlegend where 4.5 0 font Courier fontsize 8 end text 30% 100% SPEARFISH SOILS MAP color red width 1 hcolor black hwidth 1 background white border red size 500 ref lower left end line 606969.73 3423092.91 616969.73 3423092.91 color yellow width 2 end point 40% 60% color purple symbol basic/diamond size 25 masked n end scale 1:125000 scalebar f where 4.5 6.5 length 5000 height 0.05 segment 5 numbers 5 end geogrid 60 s color blue numbers 2 yellow end paper a4 end end
17.1. MAPOVÝ VÝSTUP VE FORMÁTU POSTSCRIPT
111
Obrázek 17.1: Jednoduchý výstup modulu ps.map (mapa půd s legendou z oblasti Spearfish)
112
17.2
17.2. EXPORT MAP POMOCÍ OVLADAČE PNG
Export map pomocí ovladače PNG
Ovladač PNG umožňuje během vizualizace map v monitoru GRASSu vytvářet obrázky v true color kvalitě (24 bit). Nasazení ovladače PNG je v podstatě identické s používáním GRASS monitorů. Postup při vytvoření obrázku mapy půd s přiloženou mapou cest s datasetu Spearfish je následující: GRASS:~ > d.mon start=PNG GRASS:~ > d.mon sel=PNG Následně zobrazíme mapy GRASS:~ > d.rast soils GRASS:~ > d.vect roads col=black A nakonec ukončíme práci s ovladačem PNG a zvolíme opět standardní výstup: GRASS:~ > d.mon stop=PNG GRASS:~ > d.mon sel=x0 V aktuálním adresáři tak vznikne soubor map.png, který můžeme zobrazit např. v prohlížeči obrázků xv. Abychom dosáhli požadované velikosti mapy ve formátu PNG, musíme nastavit několik proměnných prostředí (před startem ovladače): GRASS:~ > export GRASS WIDTH=<šířka> GRASS:~ > export GRASS HEIGHT= GRASS:~ > export GRASS PNGFILE=<jméno výstupního souboru> GRASS:~ > export GRASS TRUECOLOR=[TRUE|FALSE]
Výsledek můžete nakonec upravit v grafických editorech jako je Xfig nebo Skencil. Použití programu Xfig je ukázáno na obrázku 17.5. Jednodušší variantu exportu map přímo z GRASS monitoru představuje modul d.out.png, který uloží obsah monitoru do souboru ve formátu PNG volitelné velikosti.
17.3
Stínovaný reliéf
Zajímavý způsob jak vylepšit celkový vzhled mapy je použití stínovaného reliéfu, určeného na základě mapy expozice (vypočítané z digitálního modelu terénu). Tento postup je také použitelný v souvislosti s ovladačem PNG. Stínovaný reliéf zobrazíme pomocí modulu d.his: GRASS:~ > d.his h map=tk24 i map=aspect Díky kombinaci tónu barvy (hue) a její intenzity (intesity) je jednoduchým způsobem možné dosáhnout plastického dojmu (viz obrázek 17.2).
17.4. TVORBA MAP POMOCÍ PROGRAMU XFIG
Spearfish TK24
+
mapa expozice
113
=
stinovany relief
Obrázek 17.2: Zobrazení stínovaného reliéfu pomocí modulu d.his
17.4
Tvorba map pomocí programu Xfig
Pro doplnění potřebných grafických prvků analogických map mohou být použity grafické programy Xfig [14] nebo Skencil [13]1 , které umožňují vytvořit mapová díla téměř profesionálního vzhledu. Tyto programy přirozeně dispozují možností vložit do kreslící plochy zvolený obrázek ve formátech jako TIFF, PPM nebo PNG. Výstup lze naopak uložit ve formátech jako PostScript, LATEX, PDF nebo v různých bitmapových formátech. Podobně jako GRASS i Xfig či Skencil jsou zástupci svobodného softwaru a lze je volně stáhnout z Internetu a nebo získat jako součást jedné z distribucí GNU/Linuxu. Nyní si ukážeme postup při tvorbě rozvržení (layout) mapy pomocí programu Xfig (viz obrázek 17.5). Navíc můžeme využít integrovanou nápovědu ke všem funkcím programu. Práce s Xfigem je v celku snadná. Kromě mnoha grafických funkcí má program několik zajímavých vlastností souvisejících přímo s tvorbou mapových výstupů. Na začátku práce nastavíme měřítko, následně vyplníme legendu a název mapy (obr. 17.3).
17.4.1
Zvolení vhodného měřítka
Prvním krokem při tvorbě map je většinou zvolení měřítka výsledné mapy. Tato volba je často ovlivněna formátem použitého papíru (A4, A3, atd.). Území Spearfish je ve směru východozápadním široké 19,02 km a severo-jižním 14,32 km. Tyto hodnoty lze zjistit např. pomocí modulu g.region GRASS:~ > g.region -d res=1 -p Tento příkaz vypíše (-p) počet sloupců a řádek výchozího regionu (-d) při rozlišení rastrových map 1 m (res=1). Pokud tedy chceme tuto mapu vytisknout na list papíru formátu DIN A4, 1
Pozn. překl.: V distribuci Debian GNU/Linux jde o balíček „sketchÿ. Na tomto místě lze také doporučit aplikaci s půvabným názvem Sodipodi.
114
17.5. TVORBA MAP POMOCÍ PROGRAMU SKENCIL
meritko
legenda
mapa
mapovy ram
Obrázek 17.3: Jednoduché rozvržení mapy v programu Xfig
pak je dobrá volba měřítka 1 : 100 000. Velikost mapy tohoto měřítka tak bude 19.02×14.31 cm: 19.02 km =
1 902 000 m = 19.02 cm 100 000
1 431 000 m = 14.31 cm 100 000 Nyní tedy můžeme zadat měřítko mapy, načíst mapu do rámu a pomocí grafických funkcí ji patřičně upravit (obr. 17.4). 14.31 km =
Export rastrových map do Xfigu lze provést s využitím ovladače PNG (podkapitola 17.2). Abychom dosáhli požadovaného rozměru výstupního obrázku, je potřeba vhodně nastavit velikost pomocí proměnných GRASS WIDTH a GRASS HEIGHT.
17.5
Tvorba map pomocí programu Skencil
Další možností je kreslicí program Skencil [13]. Tento program napsaný v jazyce Python obsahuje zásuvný modul „Geo-Objectÿ, umožňující načítat soubory ve formátu ShapeFile. Navíc je možné jednotlivé vrstvy přes sebe překládat. Abychom mohli tento modul používat, musíme mít nainstalovanou knihovnu ShapeLib [12] a potřebné rozhraní Pythonu [10]. Skencil umožňuje také načítat soubory ve formátu FIG.
17.5. TVORBA MAP POMOCÍ PROGRAMU SKENCIL
115
Funkce pro kresleni
Editacni funkce
Nacteni obrazku
Obrázek 17.4: Výběr důležitých funkcí pro kreslení a editaci v programu Xfig
Obrázek 17.5: Výřez se zásuvným modulem „Geo-Objectÿ s příkladem dat z datasetu FRIDA města Osnabrück.
116
17.5. TVORBA MAP POMOCÍ PROGRAMU SKENCIL
Obrázek 17.6: Příklad jednoduchého rozvržení mapy pomocí programu Xfig s datasetem Spearfish
18 QGIS Volně dostupný prohlížeč geoprostorových dat QGIS [11] umožňuje přímý přístup k datům v nativním formátu GRASSu. Pro vektorová data existuje speciální plugin. Rastrová data jsou v QGISu zobrazena pomocí již zmiňované knihovny GDAL [3]. Kromě toho QGIS podporuje rovněž všechny vektorové formáty podporované knihovnou OGR (viz [7]). Lze tak v QGISu vizualizovat vlastně všechna data z aktuální location. Aby byly QGISu automaticky přístupné všechny proměnné prostředí GRASSu je nejvhodnější spouštět ho přímo z GRASSu.
Obrázek 18.1: QGIS s datasetem FRIDA (město Osnabrück)
117
118
18.1
18.1. PRÁCE S VEKTOROVÝMI DATY
Práce s vektorovými daty
Síla QGISu spočívá ve schopnosti zobrazit vektorová data v mnoha běžně užívaných formátech. Neomezuje se svými možnostmi pouze na jejich vizualizaci; v aktuální verzi jsou již dostupné funkce pro editaci vektorových dat.
18.2
Vizualizace a klasifikace
Vektorová data mohou být v QGISu zobrazena na základě atributových dat. K tomu slouží volba Properties v kontextovém menu legendy vrstev1 , kde se nastavují charakteristiky polygonů, atributové pole, podle kterého se provádí klasifikace nebo formát popisků. Jedna ze záložek zobrazuje metainformace jednotlivých sloupců atributové tabulky.
Obrázek 18.2: Vlastnosti vektorové vrstvy
Na tomto místě lze nastavit např. tloušťku a styl linie, vzorek výplně či legendu. 1
Pozn. překl.: Ve verzi 0.6.0 – „Simonÿ: pravé tlačítko myši nad legendou příslušné vrstvy a volba Properties nebo jednoduše dvojklik tamtéž.
18.2. VIZUALIZACE A KLASIFIKACE
18.2.1
119
Editace
Kromě zobrazení geografických dat nabízí QGIS od nedávné doby i funkce pro modifikaci vektorových dat. Pomocí již zmiňovaného zásuvného modulu pro GRASS lze modifikovat i data v nativní formátu GRASSu uložené v aktuální location. Dále je možnost upravovat data ve formátu ShapeFile, navíc lze přidávat i nové elementy.
Obrázek 18.3: Editační režim zásuvného modulu QGISu pro GRASS
Vektorová data ve formátu GRASSu Jak již bylo zmíněno, zásuvný modul pro GRASS umožňuje data také editovat. Jak je vidět na obrázku 18.3, poskytuje modul příjemné prostředí pro vektorizaci. K dispozici jsou obdobné funkce jako v modulu GRASSu v.digit. V dialogovém okně lze při vektorizaci prvku zadávat rovnou hodnoty atributů. Stejné dialogové okno umožňuje měnit stávající atributová data. QGIS je poměrně mladý projekt a nachází se ve fázi raného vývoje, proto není zásuvný modul pro GRASS plně funkční. To ale není v podstatě na překážku, QGIS nabízí některé velmi zajímavé funkční nástroje, jako je třeba snadný import dat z GPS. Protože QGIS začíná hrát rozhodující roli ve vývoji GUI pro GRASS, měl by být minimálně veden v patrnosti. Zatím se spokojíme s přehledem funkcí pro vektorizaci uvedeném v následující tabulce (18.1):
120
18.2. VIZUALIZACE A KLASIFIKACE
Tabulka 18.1: Nástroje GRASSu pro vektorizaci dat (popsáno v [SSBL04]) nástroj
kl.zkratka
účel
Nový bod (New point)
F1
vektorizuje nový bod
Nová linie (New line)
F2
vektorizuje novou linii
Nová hranice (New boundary)
F3
nová hranice, ukončí se výběrem nového nástroje nebo levým tlačítkem myši
Nový centroid
F4
nový centroid (definiční bod plochy)
Přesun lomového bodu (Move vertex)
F5
uchopí existující lomový bod liniového prvku (linie, boundary) a přesune jej na nové místo
Nový lomový bod (Add vertex)
F6
přidá nový lomový bod do existujícího liniovém prvku
Smaž lomový bod (Delete vertex)
F7
zruší existující lomový bod, akce je potvrzena levým tlačítkem myši
Přesun linie (Move line)
F9
přesune existující linii na nové místo
Rozdělení linie (Split line)
F10
rozdělí liniový prvek na dva nové, tzn. vytvoří uzel pro navázání např. další linie
Smaž linii (Delete line)
F11
smaže jakýkoliv prvek, potvrzení levým tlačítkem myši
Editace atributů (Edit attributes)
umožní modifikaci atributů vybraného prvku (pozor: k jednomu vektorovému elementu může být připojeno více datových záznamů)
Pivo (Close)
ukončí práci
ShapeFile Úprava vrstev ve formátu ShapeFile probíhá odlišně od výše popsaného způsobu. Tento formát umožňuje vytvořit vrstvu obsahující pouze body, linie nebo polygony. Nejdříve je nutno založit novou vrstvu, při jejíž inicializaci je třeba vybrat typ objektů: bod, linie nebo polygon. Novou vrstvu vytvoříme příkazem v menu: Layer→New Vectorlayer. V následujícím dialogovém okně je třeba nastavit onen typ objektu. Po vytvoření nové vrstvy je možno v nabídce kontextového menu zahájit modifikaci této vrstvy. Tento proces je řízen volbami: „Startÿ a „Stop editingÿ. Jeli vrstva v režimu editace poznáme podle drobné značky tužky v legendě.
Obrázek 18.4: Zahájení a ukončení editace vrstvy ShapeFile
18.3. PRÁCE S RASTROVÝMI DATY
121
Funkce pro úpravu dat ve formátu ShapeFile jsou zatím omezené a zdaleka nedosahují možností (viz obrázek 18.4) jaké skýtá zásuvný modul pro GRASS.
18.3
Práce s rastrovými daty
Pracovat můžeme se všemi rastrovými formáty, které jsou podporované knihovnou GDAL, jak již konec konců bylo zmíněno dříve, včetně rastrových dat v nativním formátu GRASSu. Dokonce i objemné satelitní snímky jsou plynule a rychle načítány. Velmi efektní funkce je plynulé nastavení míry průhlednosti pro každou rastrovou mapu. Takto lze komponovat více rastrových vrstev současně. Kontextové menu legendy rastrových dat obsahuje posuvník pro nastavení požadované průhlednosti (viz obrázek 18.5).
Obrázek 18.5: Průhlednost („alpha-blendingÿ) vrstev v QGISu
Další výhodou je implementace „pyramidizaceÿ rastrových map. Tato technologie urychluje zobrazení map v rozdílných měřítkách. Použitím této funkce (kontextové menu rastrové vrstvy Properties→Pyramids) se vytvoří vrstvy v různém rozlišení a QGIS automaticky podle aktuálního rozlišení zvolí variantu rastrové vrstvy.
18.4
Zpracování dat z GPS
Zásuvný modul QGISu pro GPS umožňuje importovat a exportovat data z přístroje GPS ve výměnném (GPS eXchange) formátu. QGIS tak umožňuje načíst sekvence bodů („tracksÿ) z přijímače GPS jako vrstvy a příp. je uložit ve formátu pro GRASS.
122
18.5. TVORBA ANALOGOVÝCH MAP V QGISU
Obrázek 18.6: QGIS-GPS plugin
18.5
Tvorba analogových map v QGISu
V předchozí kapitole 17 byly popsány svobodné programy, které mohou být použity pro tvorbu analogových map. V této souvislosti je v rámci QGISu vyvíjen velice slibný modul určený pro tvorbu mapových výstupů. V době vzniku tohoto textu byl dostupný pouze v CVS verzi. Takzvaný Map Composer se spustí z menu File→Print nebo poklikáním na symbol tiskárny v nástrojové liště. Nejprve je nutno vybrat (viditelné) vrstvy pro tisk. Zároveň lze sestavit z aktivních vrstev legendu a samozřejmě lze přidat i název mapy. Nyní už zbývá pouze nastavit velikost písma legendy a nadpisu, případně velikost stránky. Můžeme se tedy těšit na další verze QGISu, jehož vývoj je zaštítěný profesionálním týmem a čas od času tak „zkontrolovatÿ oficiální stránku QGISu [11].
18.5. TVORBA ANALOGOVÝCH MAP V QGISU
Obrázek 18.7: Map Composer pro tvorbu analogových map v QGISu
123
124
18.5. TVORBA ANALOGOVÝCH MAP V QGISU
19 Definice Svobodného Softwaru Poznámka: Text této kapitoly vychází z obsahu webové stránky http://www.gnu.org/philosophy/free-sw.cs.html. Další informace lze nalézt na výše zmíněné webové stránce1 . Definice svobodného softwaru je uvedena hlavně proto aby bylo jasné, jaké podmínky musí splňovat konkrétní program, aby mohl být považován za svobodný software. „Free softwareÿ se vztahuje ke svobodě, ne k ceně. Abyste správně porozuměli podstatě věci, měli byste chápat slovo „freeÿ ve spojení „free speechÿ (svobodný projev), nikoliv jako „free beerÿ (pivo zadarmo). Svobodný software dává uživatelům svobodu spouštět, kopírovat, distribuovat, studovat, měnit a zlepšovat jej. Přesněji řečeno, vztahuje se ke čtyřem svobodám pro všechny uživatele software: • Svoboda spustit program za jakýmkoliv účelem (svoboda 0). • Svoboda studovat, jak program pracuje a přizpůsobit ho svým potřebám (svoboda 1). Předpokladem k výše uvedenému je přístup ke zdrojovému kódu. • Svoboda redistribuovat kopie (svoboda 2). • Svoboda vylepšovat program a zveřejňovat zlepšení, aby z nich mohla mít prospěch celá komunita. (svoboda 3). Předpokladem k výše uvedenému je přístup ke zdrojovému kódu. Program je svobodným softwarem, pokud uživatelé mají všechny tyto svobody. Měli byste moci redistribuovat kopie, buď modifikované či nikoliv, zadarmo nebo s poplatkem za distribuci komukoliv kdekoliv. Mít svobodu dělat tyto věci znamená (mimo jiné), že nemusíte nikoho žádat o povolení, nebo za něj platit. Mělo by vám být rovněž umožněno modifikovat jej a používat tuto modifikovanou verzi soukromě ve vašem zaměstnání nebo volném čase, bez toho aniž byste se museli zmiňovat o jejich existenci. Pokud zveřejníte vaše změny, neměli byste být nuceni je někomu zvláště oznamovat. Svoboda používat program znamená pro jakéhokoliv jednotlivce či organizaci svobodu používat jej na jakémkoliv počítačovém systému, pro jakoukoliv práci a bez toho, aniž byste následně museli kontaktovat vývojáře či jinou skupinu. 1
Pozn. překl.: Či na české odnoži hnutí GNU – http://gnu.cz.
125
126 Svoboda redistribuovat kopie musí zahrnovat binární i spustitelné podoby programu, stejně jako zdrojový kód pro jak modifikované, tak nemodifikované verze. Je v pořádku, není-li možné vytvořit binární nebo spustitelnou formu, lidé ale musí mít svobodu redistribuovat takové podoby programu, aby měli způsob, jak je vytvořit. Abyste měli svobodu program měnit a zveřejňovat vylepšené verze, musíte mít přístup ke zdrojovému kódu programu. Dostupnost zdrojového kódu je proto nezbytnou podmínkou pro svobodný software. Aby tyto svobody byly skutečné, musí platit tak dlouho, dokud se něčím neproviníte; jestliže má vývojář software moc změnit licenci, bez toho, aniž byste mu svým jednáním k tomu zavdali příčinu, nejedná se o svobodný software. Přesto jsou však jistá pravidla o způsobu distribuce svobodného software přijatelná, pokud nejsou v rozporu se základními svobodami. Například copyleft (velmi jednoduše řečeno) je pravidlo, které říká, že pokud redistribuujete program, nesmíte k němu přidat žádná omezení, abyste tak odepřeli základní svobody ostatním. Toto pravidlo nijak neomezuje základní svobody; spíše je chrání. Za získání kopií GNU software můžete platit, nebo je obdržet zdarma, ovšem bez ohledu na způsob, jak jste je získali, máte vždy svobodu kopírovat a měnit software, dokonce prodávat jeho kopie. „Svobodný softwareÿ neznamená „nekomerčníÿ. Svobodný program musí být dostupný pro komerční využití. Komerční vývoj svobodného software není ničím neobvyklým; takové programy jsou komerčním svobodným software. Pravidla, jak vytvořit balík modifikované verze jsou akceptovatelná, jestliže nepotlačují vaši svobodu modifikované verze vydávat. Pravidla, že „pokud vytvoříte takto přístupný program, musíte ho zpřístupnit i v této podoběÿ mohou být rovněž přijatelná, za stejné podmínky. (Všimněte si, že takové pravidlo vám stále poskytuje možnost výběru, jestli program zveřejnit či nikoliv.) V GNU projektu používáme „copyleftÿ, abychom právně zajistili tyto svobody pro každého. Existuje však také necopyleftovaný svobodný software. Věříme, že existují důležité důvody proč je lepší používat copyleft, ale pokud je váš program necopyleftovaný svobodný software, můžeme ho používat také. Podívejte se na kategorie svobodného software, abyste se dozvěděli, jak se k sobě „svobodný softwareÿ, „copyleftovaný softwareÿ a jiné kategorie software vztahují. Někdy může vláda exportovat kontrolní nařízení a tržní sankce omezující vaši svobodu mezinárodně šířit kopie programu. Vývojáři software nemohou eliminovat nebo přejít tato omezení, avšak to, co mohou a musí udělat, je odmítnout jejich využití jako podmínky pro používání programu. Díky tomu tato omezení nebudou zasahovat činnosti a osoby vně jurisdikce těchto vlád.
127 Pokud mluvíme o svobodném software, uděláme nejlépe, vyhneme-li se termínům jako „darovatÿ nebo „zdarmaÿ, protože tyto výrazy se vztahují k ceně, nikoli ke svobodě. Některé běžné termíny jako „pirátstvíÿ vyjadřují mínění, s nímž, jak doufáme, nebudete souhlasit. Podívejte se na matoucí slova a fráze, jichž je lepší se vyvarovat na debatu o těchto výrazech. Máme rovněž seznam překladů termínu „svobodný softwareÿ [free software] do různých jazyků. Na závěr si povšimněte, že kritéria výše zmiňovaná v definici svobodného software vyžadují pro svou interpretaci opatrnost. Rozhodujeme-li se, zda je určitá software licence svobodným software, posuzujeme ji na základě těchto kritérií, abychom určili, zda je splňuje. Pokud v sobě licence zahrnuje nepřiměřená omezení, odmítáme ji, a to i přesto, že jsme tento problém nezahrnuli do našich kritérií. Někdy se stává, že licence vznáší požadavek, jež vyžaduje pečlivé rozvážení, včetně konzultací s právníkem, dříve než se rozhodneme, zda jej můžeme přijmout. Když pak dojdeme k závěru, občas tato kritéria obnovíme, aby bylo jednodušší porozumět tomu, proč některé licence byly/nebyly schváleny. Jestliže máte zájem zjistit, zda je určitá licence brána jako licence svobodného software, podívejte se na náš seznam licencí. Pokud se zde licence, o niž máte zájem, nevyskytuje, můžete se přes email zeptat přímo nás [email protected].
128
20 GNU Free Documentation License Version 1.1, March 2000 c 2000 Free Software Foundation, Inc. Copyright ° 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
Preamble The purpose of this License is to make a manual, textbook, or other written document “free” in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of “copyleft”, which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
Applicability and Definitions This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. The “Document”, below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as 129
130 “you”. A “Modified Version” of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A “Secondary Section” is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document’s overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (For example, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The “Invariant Sections” are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. The “Cover Texts” are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A “Transparent” copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, whose contents can be viewed and edited directly and straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup has been designed to thwart or discourage subsequent modification by readers is not Transparent. A copy that is not “Transparent” is called “Opaque”. Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LATEX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML designed for human modification. Opaque formats include PostScript, PDF, proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML produced by some word processors for output purposes only. The “Title Page” means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, “Title Page” means the text near the most prominent appearance of the work’s title, preceding the beginning of the body of the text.
131
Verbatim Copying You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies.
Copying in Quantity If you publish printed copies of the Document numbering more than 100, and the Document’s license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general networkusing public has access to download anonymously at no charge using public-standard network protocols. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
132
Modifications You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: • Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. • List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has less than five). • State on the Title page the name of the publisher of the Modified Version, as the publisher. • Preserve all the copyright notices of the Document. • Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. • Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. • Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document’s license notice. • Include an unaltered copy of this License. • Preserve the section entitled “History”, and its title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section entitled “History” in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. • Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the “History” section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
133 • In any section entitled “Acknowledgements” or “Dedications”, preserve the section’s title, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. • Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. • Delete any section entitled “Endorsements”. Such a section may not be included in the Modified Version. • Do not retitle any existing section as “Endorsements” or to conflict in title with any Invariant Section. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version’s license notice. These titles must be distinct from any other section titles. You may add a section entitled “Endorsements”, provided it contains nothing but endorsements of your Modified Version by various parties – for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
Combining Documents You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the
134 end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections entitled “History” in the various original documents, forming one section entitled “History”; likewise combine any sections entitled “Acknowledgements”, and any sections entitled “Dedications”. You must delete all sections entitled “Endorsements.”
Collections of Documents You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
Aggregation With Independent Works A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, does not as a whole count as a Modified Version of the Document, provided no compilation copyright is claimed for the compilation. Such a compilation is called an “aggregate”, and this License does not apply to the other self-contained works thus compiled with the Document, on account of their being thus compiled, if they are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one quarter of the entire aggregate, the Document’s Cover Texts may be placed on covers that surround only the Document within the aggregate. Otherwise they must appear on covers around the whole aggregate.
Translation Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may
135 include a translation of this License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English version will prevail.
Termination You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
Future Revisions of This License The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License ”or any later version” applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.
ADDENDUM: How to use this License for your documents To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: c YEAR YOUR NAME. Permission is granted to copy, distribute Copyright ° and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being LIST THEIR TITLES, with the FrontCover Texts being LIST, and with the Back-Cover Texts being LIST. A copy of the license is included in the section entitled “GNU Free Documentation License”. If you have no Invariant Sections, write “with no Invariant Sections” instead of saying which ones are invariant. If you have no Front-Cover Texts, write “no Front-Cover Texts” instead of
136 “Front-Cover Texts being LIST”; likewise for Back-Cover Texts. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
21 Seznam příkazů Následuje vyčerpávající seznam příkazů GRASSu. Tento seznam se ovšem rychle mění, aktuální verzi naleznete na [4] v části „Manualsÿ. d.* commands: Příkaz
Krátký popis
d.ask
Prompts the user to select a GRASS data base file from among files displayed in a menu on the graphics monitor. Displays a barscale on GRASS monitor. Output a list of all available display colors with a configurable separator (default is comma). Allows the user to interactively change the color table To display the color table associated with a raster map layer. Erase the contents of the active display frame with user defined color Set window region so that all currently displayed raster, vector and sites maps can be shown in a monitor. Selects the font in which text will be displayed on the user’s graphics monitor. Selects the font in which text will be displayed on the user’s graphics monitor. Manages display frames on the user’s graphics monitor. Displays a geodesic line, tracing the shortest distance between two geographic points along a great circle, in a longitude/latitude data set. Program for generating and displaying simple graphics to the graphics display monitor. Overlays a user-specified grid in the active display frame on the graphics monitor. Displays the result obtained by combining hue, intensity, and saturation (his) values from user-specified input raster map layers.
d.barscale d.colorlist d.colors d.colortable d.erase d.extend d.font.freetype d.font d.frame d.geodesic d.graph d.grid d.his
Pokračování na další stránce
137
138 Pokračování
Příkaz
Krátký popis
d.histogram
Displays a histogram in the form of a pie or bar chart for a user-specified raster file. Display information about the active display monitor Displays a legend for a raster map layer in the active frame on the graphics monitor. Generates and displays simple line graphs in the active graphics monitor display frame.
d.info d.legend d.linegraph d.m d.mapgraph d.measure d.mon d.monsize d.nviz d.out.png d.paint.labels d.path d.profile d.rast.arrow d.rast.edit d.rast d.rast.leg d.rast.num d.redraw d.resize d.rgb d.rhumbline d.save d.slide.show d.split
Generates and displays simple graphics on map layers drawn in the active graphics monitor display frame. Measures the lengths and areas of features drawn by the user in the active display frame on the graphics monitor. To establish and control use of a graphics display monitor. Selects/starts specified monitor at specified size Create fly-through script to run in NVIZ Saves active display monitor to PNG file in home directory Displays text labels formatted for use with GRASS paint (p.labels, p.map) output to the active frame on the graphics monitor. Find shortest path for selected starting and ending node Interactive profile plotting utility with optional output. Draws arrows representing cell aspect direction for a raster map containing aspect data. d.rast.edit Displays and overlays raster map layers in the active display frame on the graphics monitor. Displays a raster map and its legend on a graphics window Overlays cell category values on a raster map layer displayed to the graphics monitor. d.redraw Resizes active display monitor Displays three user-specified raster map layers as red, green, and blue overlays in the active graphics frame. Displays the rhumbline joining two user-specified points, in the active frame on the user’s graphics monitor. Create a list of commands for recreating screen graphics. Slide show of GRASS raster/vector maps Divides active display into 2 frames & displays maps/executes commands in each frame. Pokračování na další stránce
139 Pokračování
Příkaz
Krátký popis
d.text.freetype
Draws text in the graphics monitor’s active display frame using TrueType fonts. Draws text in the active display frame on the graphics monitor using the current font. Outputs a TITLE for a raster map layer in a form suitable for display by d.text. Displays charts of GRASS vector data in the active frame on the graphics monitor. Displays GRASS vector data in the active frame on the graphics monitor. Allows the user to interactively query the category contents of multiple raster map layers at user specified locations within the current geographic region. Allows the user to interactively query a vector map layer at user-selected locations within the current geographic region. Identifies the geographic coordinates associated with point locations in the active frame on the graphics monitor. Allows the user to change the current geographic region settings interactively, with a mouse.
d.text d.title d.vect.chart d.vect d.what.rast
d.what.vect d.where d.zoom
db.* commands: Příkaz
Krátký popis
db.columns db.connect db.copy
list all columns for a given table. Connect to the database through DBMI. Copy a table. Either ’from table’ (optionaly with ’where’) can be used or ’select’ option, but not ’from table’ and ’select’ at the same time. Describe a table (in detail). List all database drivers.
db.describe db.drivers db.droptable db.execute db.login db.select db.tables db.test
Execute any SQL statement. Set user/password for driver/database. Select data from database. List all tables for a given database. Test database driver, database must exist and set by db.connect.
140 g.* commands: Příkaz g.access g.ask g.copy
g.filename g.findfile g.gisenv g.list g.manual g.mapset g.mapsets g.mlist g.mremove g.parser g.proj g.region g.remove g.rename g.setproj g.tempfile g.version
Krátký popis Prompts the user for the names of GRASS data base files. Copies available data files in the user’s current mapset search path and location to the appropriate element directories under the user’s current mapset. Prints GRASS data base file names. Searches for GRASS data base files and sets variables for the shell. Outputs the user’s current GRASS variable settings. Lists available GRASS data base files of the user-specified data type to standard output. display the HTML man pages of GRASS Change current mapset Modifies the user’s current mapset search path, affecting the user’s access to data existing under the other GRASS mapsets in the current location. Apply regular expressions and wildcards to g.list Apply regular expressions and wildcards to g.remove g.parser Prints and manipulates GRASS projection information files. Program to manage the boundary definitions for the geographic region. Removes data base element files from the user’s current mapset. To rename data base element files in the user’s current mapset. g.setproj Creates a temporary file and prints the file name. Displays version and copyright information.
i.* commands: Příkaz
Krátký popis
i.cca i.class i.cluster
Canonical components analysis (cca) program for image processing. i.class An imagery function that generates spectral signatures for land cover types in an image using a clustering algorithm. The resulting signature file is used as input for i.maxlik, to generate an unsupervised image classification. Fast Fourier Transform (FFT) for image processing. Brovey transform to merge multispectral and high-res panchromatic channels
i.fft i.fusion.brovey
Pokračování na další stránce
141 Pokračování
Příkaz
Krátký popis
i.gensig i.gensigset i.group i.his.rgb
Generates statistics for i.maxlik from raster map layer. Generate statistics for i.smap from raster map layer. Creates and edits groups and subgroups of imagery files. Hue-intensity-saturation (his) to red-green-blue (rgb) raster map color transformation function. Inverse Fast Fourier Transform (ifft) for image processing. Mosaics up to 4 images and extends colormap; creates map *.mosaic An imagery function that classifies the cell spectral reflectances in imagery data based on the spectral signature information generated by either i.cluster, i.class, or i.gensig. Calculates Optimum-Index-Factor table for LANDSAT TM bands 1-5, & 7 i.ortho.photo Principal components analysis (pca) program for image processing.
i.ifft i.image.mosaic i.maxlik
i.oif i.ortho.photo i.pca i.points i.rectify
Rectifies an image by computing a coordinate transformation for each pixel in the image based on the control points Red-green-blue (rgb) to hue-intensity-saturation (his) raster map color transformation function. Performs contextual image classification using sequential maximum a posteriori (SMAP) estimation. displays spectral response at user specified locations in images Targets an imagery group to a GRASS location and mapset. Tasseled Cap (Kauth Thomas) transformation for LANDSAT-TM data i.vpoints Zero-crossing “edge detection” raster function for image processing.
i.rgb.his i.smap i.spectral i.target i.tasscap i.vpoints i.zc p.* commands: Příkaz
Krátký popis
p.out.vrml
module to output GRASS data in the format of Virtual Reality Modeling Language (VRML)
142 pg.* commands: Příkaz
Krátký popis
pg.postgisdb
pg.postgisdb
photo.* commands: Příkaz
Krátký popis
photo.2image photo.2target photo.camera photo.init photo.rectify
photo.2image photo.2target photo.init photo.rectify
ps.* commands: Příkaz
Krátký popis
ps.map
Hardcopy PostScript map output utility.
r.* commands: Příkaz
Krátký popis
r.average
Finds the average of values in a cover map within areas assigned the same category value in a user-specified base map. Generates a raster map layer showing watershed subbasins. Bilinear interpolation utility for raster map layers. Blends color components of 2 raster maps by a given % first map’ Creates a raster map layer showing buffer zones surrounding cells that contain non-NULL category values. Prints category values and labels associated with user-specified raster map layers. Creates a raster map containing concentric rings around a given point. Recategorizes data in a raster map layer by grouping cells that form physically discrete areas into unique categories. Tabulates the mutual occurrence (coincidence) of categories for two raster map layers. Creates/Modifies the color table associated with a raster map layer. Combines red, green and blue map layers into a single composite map layer.
r.basins.fill r.bilinear r.blend r.buffer r.cats r.circle r.clump r.coin r.colors r.composite
Pokračování na další stránce
143 Pokračování
Příkaz
Krátký popis
r.compress r.contour
Compresses and decompresses raster files. Produces a GRASS binary vector map of specified contours from GRASS raster map layer. Outputs a raster map layer showing the cumulative cost of moving between different geographic locations on an input raster map layer whose cell category values represent cost. Outputs a covariance/correlation matrix for user-specified raster map layer(s). Creates a cross product of the category values from multiple raster map layers. Prints terse list of category values found in a raster map layer. r.digit Locates the closest points between objects in two raster maps. Traces a flow through an elevation model on a raster map layer. Filters and generates a depressionless elevation map and a flow direction map from a given elevation layer Fills no-data areas in raster maps using v.surf.rst splines interpolation Construction of slope curves (flowlines), flowpath lengths, and flowline densities (upslope areas) from a raster digital elevation model(DEM). Generates a raster map layerwith contiguous areas grown by one cell. Generates red, green and blue raster map layers combining hue, intensity, and saturation (his) values from user-specified input raster map layers. Convert an ESRI ARC/INFO ascii raster file (GRID) into a (binary) raster map layer. Convert an ASCII raster text file into a (binary) raster map layer. Import a binary raster file into a GRASS raster map layer. Import GDAL supported raster file into a binary raster map layer. Imports GRIDATB.FOR map file (TOPMODEL) into GRASS raster map Import a binary MAT-File(v4) to a GRASS raster. Create raster maps from ascii polygon/line data files in the current directory. Import SRTM90 HGT files into GRASS Outputs basic information about a user-specified raster map layer. Calculate error matrix and kappa parameter for accuracy assessment of classification result.
r.cost
r.covar r.cross r.describe r.digit r.distance r.drain r.fill.dir r.fillnulls r.flow r.grow r.his r.in.arc r.in.ascii r.in.bin r.in.gdal r.in.gridatb r.in.mat r.in.poly r.in.srtm r.info r.kappa r.le.patch
Pokračování na další stránce
144 Pokračování
Příkaz r.le.pixel r.le.setup r.le.trace r.los r.mapcalc r.mapcalculator r.median r.mfilter r.mode r.neighbors
r.null r.out.arc r.out.ascii r.out.bin r.out.gdal r.out.gridatb r.out.mat r.out.mpeg r.out.png r.out.pov r.out.ppm r.out.ppm3 r.out.tiff r.param.scale r.patch
Krátký popis r.le.setup Line-of-sight raster analysis program. r.mapcalc r.mapcalculator - Calculates new raster map from r.mapcalc expression Finds the median of values in a cover map within areas assigned the same category value in a user-specified base map. Raster file matrix filter. Finds the mode of values in a cover map within areas assigned the same category value in a user-specified base map. Makes each cell category value a function of the category values assigned to the cells around it, and stores new cell values in an output raster map layer. The function of r.null is to explicitly create the NULL-value bitmap file. Converts a raster map layer into an ESRI ARCGRID file. Converts a raster map layer into an ASCII text file. Exports a GRASS raster to a binary array. Exports GRASS raster data into various formats (requires GDAL) Exports GRASS raster map to GRIDATB.FOR map file (TOPMODEL) Exports a GRASS raster to a binary MAT-File. Raster File Series to MPEG Conversion Program. Export GRASS raster as non-georeferenced PNG image format. Converts a raster map layer into a height-field file for POVRAY. Converts a GRASS raster file to a PPM image file at the pixel resolution of the CURRENTLY DEFINED REGION. Converts 3 GRASS raster layers (R,G,B) to a PPM image file at the pixel resolution of the CURRENTLY DEFINED REGION. Exports a GRASS raster file to a 8/24bit TIFF image file at the pixel resolution of the currently defined region. Extracts terrain parameters from a DEM. Uses a multi-scalar approach by taking fitting quadratic parameters to any size window (via least squares) Creates a composite raster map layer by using known category values from one (or more) map layer(s) to fill in areas of “no data” in another map layer. Pokračování na další stránce
145 Pokračování
Příkaz
Krátký popis
r.plane
Creates raster plane map given dip (inclination), aspect (azimuth), and one point Outputs the raster map layer values lying on user-defined line(s). Re-project a raster map from one location to the current location. This routine produces the quantization file for a floating-point map. Generates random cell values with spatial dependence. Creates a raster map layer and vector point map containing randomly located sites. Generates random surface(s) with spatial dependence. Reclasses a raster map greater or less than user specified area size (in hectares) Creates a new map layer whose category values are based upon the user’s reclassification of categories in an existing raster map layer. Recode raster maps. Sets the boundary definitions for a raster map. Calculates linear regression from two raster maps: y = a + b*x Reports statistics for raster map layers. Reinterpolates and computes topographic analysis from input raster file to a new raster file (possibly with different resolution) using regularized spline with tension and smoothing. GRASS raster map layer data resampling capability. Rescales histogram equalized the range of categoryvalues in a raster map layer. Rescales the range of category values in a raster map layer. Generates three, or four raster map layers showing 1) the base (perpendicular) rate of spread (ROS), 2) the maximum (forward) ROS, 3) the direction of the maximum ROS, and optionally 4) the maximum potential spotting distance. Makes each output cell value a function of the values assigned to the corresponding cells in the input raster map layers. Creates shaded relief map from an elevation map (DEM). Generates raster map layers of slope, aspect, curvatures and partial derivatives from a raster map layer of true elevation values. Aspect is calculated counterclockwise from east.
r.profile r.proj r.quant r.random.cells r.random r.random.surface r.reclass.area r.reclass r.recode r.region r.regression.line r.report r.resamp.rst
r.resample r.rescale.eq r.rescale r.ros
r.series r.shaded.relief r.slope.aspect
Pokračování na další stránce
146 Pokračování
Příkaz
Krátký popis
r.spread
Simulates elliptically anisotropic spread on a graphics window and generates a raster map of the cumulative time of spread, given raster maps containing the rates of spread (ROS), the ROS directions and the spread origins. It optionally produces raster maps to contain backlink UTM coordinates for tracing spread paths. Recursively traces the least cost path backwards to cells from which the cumulative cost was determined. Category or object oriented statistics. Generates area statistics for raster map layers. Sums up the raster cell values. Computes direct (beam), diffuse and reflected solar irradiation raster maps for given day, latitude, surface and atmospheric conditions. Solar parameters (e.g. sunrise, sunset times, declination, extraterrestrial irradiance, daylight length) are saved in a local text file. Alternatively, a local time can be specified to compute solar incidence angle and/or irradiance raster maps. The shadowing effect of the topography is optionally incorporated. Calculates cast shadow areas from sun position and DEM. Either A: exact sun position is specified, or B: date/time to calculate the sun position by r.sunmask itself. Surface area estimation for rasters. Surface generation program from rasterized contours. GRASS module to create a fractal surface of a given fractal dimension. Uses spectral synthesis method. Can create intermediate layers showing the build up of different spectral coefficients (see Saupe, pp.106-107 for an example of this). Use this module to generate naturally looking synthetical elevation models (DEM). GRASS module to produce a raster map layer of gaussian deviates whose mean and standard deviation can be expressed by the user. It uses a gaussian random number generator. Surface interpolation utility for raster map layers. Produces a raster map layer of uniform random deviates whose range can be expressed by the user. Flow computation for massive grids (Float version). Generate images with textural features from a raster map Thins non-zero cells that denote linear features in a raster map layer. Print/add/remove a timestamp for a raster map.
r.spreadpath r.statistics r.stats r.sum r.sun
r.sunmask
r.surf.area r.surf.contour r.surf.fractal
r.surf.gauss
r.surf.idw r.surf.random r.terraflow r.texture r.thin r.timestamp
Pokračování na další stránce
147 Pokračování
Příkaz
Krátký popis
r.to.vect r.topidx r.topmodel r.transect r.univar r.univar.sh r.water.outlet r.watershed r.what
Converts a raster map into a vector map layer. Creates topographic index, ln(a/tan(beta)), map from elevation map. Simulates TOPMODEL which is physically based hydrologic model. Outputs raster map layer values lying along user defined transect line(s). Calculates univariate statistics from the non-null cells of a raster map. calculates univariate statistics from a GRASS raster map Watershed basin creation program. Watershed basin analysis program. Queries raster map layers on their category values and category labels.
r3.* commands: Příkaz
Krátký popis
r3.in.ascii r3.in.v5d
Convert a 3D ASCII raster text file into a (binary) 3D raster map layer import of 3-dimensional Vis5D files (i.e. the v5d file with 1 variable and 1 time step) Outputs basic information about a user-specified 3D raster map layer. r3.mapcalc Establishes or removes the current working 3D raster mask.
r3.info r3.mapcalc r3.mask r3.mkdspf r3.null r3.out.ascii r3.out.v5d r3.timestamp
Explicitly create the 3D NULL-value bitmap file. Converts a 3D raster map layer into an ASCII text file Export of GRASS 3D raster file to 3-dimensional Vis5D file. print/add/remove a timestamp for a 3D raster map
v.* commands: Příkaz
Krátký popis
v.buffer v.build.all v.build v.build.polylines v.category v.clean v.convert.all v.convert
Create a buffer around features of given type (areas must contain centroid). v.build.all Creates topology for GRASS vector data. Build polylines from lines. Attach, delete or report vector categories to map geometry. Toolset to clean vector topology. Imports older versions of GRASS vectors. Pokračování na další stránce
148 Pokračování
Příkaz
Krátký popis
v.db.connect v.db.select v.delaunay v.digit v.distance
prints/sets DB connection for a vector map Print vector attributes Create a Delaunay triangulation from an input vector of points or centroids.
v.external v.extract
v.hull v.in.ascii v.in.db v.in.e00 v.in.garmin v.in.ogr v.in.region v.in.sites.all v.in.sites v.info v.kcv v.kernel
v.label v.mkgrid v.neighbors
v.net.alloc v.net v.net.iso
Find the nearest element in vector ’to’ for elements in vector ’from’. Various information about this relation may be uploaded to the attribute table of input vector ’from’ or printed to stdout. Create a new vector as a read-only link to OGR layer. Available drivers: Selects vector objects from an existing vector map and creates a new map containing only the selected objects. If ’list’, ’file’ and ’where’ options are not specified, all features of given type and layer are extracted, categories are not changed in that case. Uses a GRASS vector points map to produce a convex hull vector map Convert GRASS ascii file or points file to binary vector. Create new vector (points) from database table containing coordinates. Import of E00 file into a vector map. Upload Waypoints, Routes, and Tracks from a Garmin GPS receiver into a vector map. Convert OGR vectors to GRASS. Available drivers: Create a new vector from current region. Converts a GRASS site lists file into a vector file. Outputs basic information about a user-specified vector map layer. Randomly partition points into test/train sets. Generates a raster density map from vector points data using a moving 2D isotropic Gaussian kernel or optionally generates a vector density map on vector network with a 1D kernel Create paint labels for GRASS vector file and attached attributes. Creates a (binary) GRASS vector map of a user-defined grid. Makes each cell value a function of the attribute values assigned to the vector points or centroids around it, and stores new cell values in an output raster map layer. Allocate subnets for nearest centres (direction from centre). Centre node must be opened (costs >= 0). Costs of centre node are used in calculation Network maintenance. Split net to bands between cost isolines (direction from centre). Centre node must be opened (costs >= 0). Costs of centre node are used in calculation Pokračování na další stránce
149 Pokračování
Příkaz
Krátký popis
v.net.path
Find shortest path on vector network. Reads start/end pointsfrom standard input in 2 possible formats: Create a cycle connecting given nodes (Traveling salesman problem). Note that TSP is NP-hard, heuristic algorithm is used by this module and created cycle may be sub optimal. Create Steiner tree for the network and given terminals. Note that ’Minimum Steiner Tree’ problem is NP-hard and heuristic algorithm is used in this module so the the result may be sub optimal. tests for normality for points. Convert a GRASS binary vector map to a GRASS ASCII vector map Exports GRASS vector files to DXF file format. Convert to OGR format. Convert to POV-Ray format, GRASS x,y,z -> POV-Ray x,z,y Overlay 2 vector maps. Creates a new binary vector map layer by combining other binary vector map layers. Random location perturbations of GRASS sites. Allows projection conversion of vector files. indices for quadrat counts of sites lists Randomly generate a GRASS vector points map. Changes vector category values for an existing vector map according to results of SQL queries or a value in attribute table column. Sample a raster file at site locations. Create points/segments from input lines, and positions read from stdin in format: Select features from ainput by features from binput. Surface interpolation from sites data by Inverse Distance Squared Weighting. Interpolation and topographic analysis from given point or contour data in vector format to GRASS floating point raster format using regularized spline with tension. Load values from vector to database. In uploaded/printed category values ’-1’ is used for ’no category’ and ’null’/’-’ if category cannot be found or multiple categories were found.
v.net.salesman
v.net.steiner
v.normal v.out.ascii v.out.dxf v.out.ogr v.out.pov v.overlay v.patch v.perturb v.proj v.qcount v.random v.reclass v.sample v.segment v.select v.surf.idw v.surf.rst
v.to.db
Pokračování na další stránce
Pokračování
Příkaz
Krátký popis
v.to.points v.to.rast v.transform
Create points along input lines. Converts a binary GRASS vector map layer into a GRASS raster map layer. Transforms an vector map layer from one coordinate system into another coordinate system. Change the type of geometry elements. Calculates univariate statistics for attribute. Variance and standard deviation is calculated only for points. Interpolates point data to a G3D grid volume using regularized spline with tension (RST) algorithm Create a Delaunay triangulation from an input vector of points or centroids. Upload raster values at positions of vector points to the table.
v.type v.univar v.vol.rst v.voronoi v.what.rast
Literatura [BF91] R. Bill and D. Fritsch. Grundlagen der Geo-Informationssysteme. Bd. 1 Hardware, Software und Daten. Wichmann, Karlsruhe, 1991. [HG94] G. Hake and D. Grünreich. Kartographie. Berlin, 1994. [Kam86] H. Kamen. Vermessungskunde. Berlin, 1986. [MH04] H. Mitasova and J. Hofierka. 3d precipitation example dataset slovakia, 2004. [Net00] M. Neteler. GRASS-Handbuch. Der praktische Leitfaden zum Geographischen Informationssystem GRASS. Geosynthesis 11, Geographisches Institut der Universität Hannover, 2000. [NM02] M. Neteler and H. Mitasova. Open Source GIS: A GRASS GIS Approach. Kluwer Academic Publishers, Boston, 2002. [NM04] M. Neteler and H. Mitasova. Open Source GIS: A GRASS GIS Approach. 2nd edition. Kluwer Academic Publishers, Boston, 2004. [SSBL04] G. Sherman, T. Sutton, R. Blazek, and L. Luthmann. Quantum gis user manual, version 0.6, 2004.
Webové odkazy [1] GDF Hannover bR. http://www.gdf-hannover.de, 2005. [2] Free Software Foundation Europe (FSFE). http://www.fsfeurope.org, 2005. [3] GDAL-Software-Suite. http://www.gdal.org, 2004. [4] GRASS GIS. http://grass.itc.it, 2005. [5] Intevation GmbH. http://www.intevation.de, 2005. [6] GRASS Anwender-Vereinigung Heimatseite. http://www.grass-verein.de, 2005. 151
152 [7] OGR-Software-Suite. http://www.gdal.org/ogr/, 2004. [8] FreeGIS Project. http://www.freegis.org, 2005. [9] FRIDA Projekt. http://frida.intevation.org, 2005. [10] PyShapeLib-bindings. ftp://intevation.de/users/bh/pyshapelib/, 2004. [11] QGIS-Development-Team. http://www.qgis.org, 2004. [12] Shapelib-Software-Suite. http://shapelib.maptools.org, 2004. [13] Skencil. http://www.skencil.org, 2004. [14] Xfig-Software-Suite. http://www.xfig.org, 2004.