FreeGeoDataCZ / GRASS GIS

Z FreeGIS portál
Přejít na: navigace, hledání

ZIP soubor s lokací stáhneme na lokalní disk a rozbalíme do adresáře s GIS daty (viz struktura dat). Příklad lokace v souřadnicovém systému S-JTSK:

cd /opt/grassdata
wget http://geo.fsv.cvut.cz/data/grasswikicz/freegeodatacz/aktualni/cr-jtsk-0.3.3.zip
unzip cr-jtsk-0.3.3.zip
Spustíme systém GRASS, vybereme lokaci cr-jtsk a v rámci ní vytvoříme nový mapset
Create mapset
.


Spuštění systém GRASS s datasetem FreeGeodataCZ

Z grafického rozhraní otevřeme workspace (z menu File → Workspace → Open nebo z nástrojové lišty správce vrstev) dodávaný v rámci datasetu FreeGeodataCZ.

Načtení workspace z nástrojové lišty správce vrstev
Načtení workspace dodávaného v rámci datasetu FreeGeodataCZ
Ukázka dat z datasetu FreeGeodataCZ

Změna skladiště atributových dat

Atributová data vektorových mapových vrstev jsou implictně uložena ve formátu xbase (dbf), kodování IS0-8859-2. Soubory ve formátu dbf jsou uloženy v rámci mapsetu v adresáři dbf. Zdroj atributových dat dané vektorové mapové vrstvy si lze ověřit příkazem

v.db.connect map=cr -g

1 cr cat /home/martin/grassdata/cr-jtsk/PERMANENT/dbf/ dbf

Databázový systém PostgreSQL

Předpokládejme, že máme databázový systém PostgreSQL již nainstalován a nakonfigurován.

V prvním kroku založíme databázi s výchozím kódováním UTF-8, např. "grass_cr"

createdb grass_cr -E UTF8

Přepneme se do adresáře obsahující atributové tabulky ve formátu pro PostgreSQL. Hromadně dekomprimuje vstupní SQL dávkové soubory a následně je přesměrujeme do PostgreSQL.

cd ~/grassdata/cr-jtsk/pg

for sql in *.sql.gz ; do gzip -d $sql; done
for sql in *.sql ; do psql grass_cr < $sql; done

Kontrola obsahu databáze po importu

 psql -d grass_cr -c "\d"

             List of relations
 Schema |      Name       | Type  | Owner  
--------+-----------------+-------+--------
 public | casti_obce      | table | martin
 public | cesty           | table | martin
 public | cfm             | table | martin
 public | cr              | table | martin
 public | czfree_nodes    | table | martin
 public | dsnimky         | table | martin
 public | klad_zm10       | table | martin
 public | kraje_pseudo    | table | martin
 public | mes_casti       | table | martin
 public | mesta_b         | table | martin
 public | mesta_p         | table | martin
 public | obce            | table | martin
 public | okresy_pseudo   | table | martin
 public | reky            | table | martin
 public | silnice         | table | martin
 public | silnice_pasport | table | martin
 public | silnice_useky   | table | martin
 public | silnice_uzly    | table | martin
 public | voda            | table | martin
 public | zeleznice       | table | martin
(20 rows)

Další příkazy již musí být volány z běžící GRASS seance (mapset PERMANENT). Dávkově nastavíme zdroj atributových tabulek

for vect in $(g.mlist vect) ; do
v.db.connect -o map=$vect database=grass_cr driver=pg table=$vect
done

Pro kontrolu

v.db.connect map=cr -g
1 cr cat grass_cr pg

v.db.select cr
cat|nazev|nazev_a
1|Česká republika|Ceska republika

V případě potřeby návratu k původním atributovým tabulkám ve formátu dbf použije jemně modifikované příkazy

for vect in $(g.mlist vect) ; do
v.db.connect -o map=$vect database='$GISDBASE/$LOCATION_NAME/$MAPSET/dbf/' driver=dbf table=$vect
done

Přidání dalšího mapsetu

Některá data jsou šířena v tématických mapsetech, jako příklad můžeme uvést mapset "KlimadataCR". Začlenění dalšího mapsetu do stavající lokace je vcelku jednoduché. Přepneme se do adresáře lokace, stáhneme daný mapset, dekomprimujeme a rozbalíme jej. Toť vše.

cd ~/grassdata/cr-jtsk
wget http://geo.fsv.cvut.cz/data/grasswikicz/freegeodatacz/mapsety/klimadataCR_0.1.tar.gz
tar xvzf klimadataCR_0.1.tar.gz

V rámci lokace "cr-jtsk" tak vznikne další mapset "klimadata". Do mapsetu se přepneme příkazem

g.mapset mapset=klimadata

Pro testovací účely je vhodné vytvořit pracovní mapset. Z běžící seance GRASSu vytvoříme nový mapset příkazem (dojde zároveň k nastavení aktuálního mapsetu na nově vytvořený)

g.mapset -c mapset=martin