Go to content Go to navigation Go to search

geo-spatial.org: An elegant place for sharing geoKnowledge & geoData

Căutare



RSS / Atom / WMS / WFS


Contact


Lista de discuții / Forum


Publicat cu Textpattern


Comunitatea:

Conferința FOSS4G 2019
Conferința FOSS4G 2018

Delinierea unui bazin hidrografic - O soluție open-source completă

de Marius Jigmond

Publicat la 21 Dec 2007 | Secţiunea: Tutoriale | Categoria: GIS/
Nivel de dificultate:
25.10.2014 Tutorialul de fața folosește o versiunea mai veche a softului prezentat. Va rugăm consultați versiunea actualizată sau contactați autorul

Introducere

Acum cîteva luni am scris un tutorial pentru delinierea unui bazin hidrografic folosind o soluție complet comercială și foarte scumpă: sistemul de operare Windows, ArcGIS + Spatial Analyst. Cum nu toată lumea își permite o astfel de soluție m-am hotărît să învăț și să scriu un tutorial pe o platformă open-source complet gratuită: sistem de operare Linux (Ubuntu), Quantum GIS si GRASS. Voi folosi date gratuite prezente pe acest site. Veți avea nevoie de un DEM pe care îl puteți obtine de aici mulțumită lui Vasile.

Software necesar

Puteți folosi orice distribuție Linux doriți. Eu am ales Ubuntu deoarece există numeroase pachete GIS disponibile în format binar fără a necesita compilarea lor. Va trebui să instalați pachetele QGIS și GRASS, precum și pachetul GRASS plugin pentru QGIS. În Ubuntu puteți executa următoarele comenzi într-un shell:

sudo apt-get update
sudo apt-get install grass qgis qgis-plugin-grass

sau puteți folosi programul Synaptic. Eu folosesc versiuni mai curente decît cele distribuite de Ubuntu: QGIS 0.9.0. și GRASS 6.2.3. Ele sînt făcute disponibile de către Jachym Cepicky.

Structura de date și analiza

GRASS folosește o structură de organizare a datelor similară (zic eu) formatului file geodatabase din ArcGIS. Primul element este baza de date, care din punct de vedere fizic reprezintă un director pe calculator (file geodatabase este de asemenea un director). În această bază de date se pot afla mai multe locații care sînt definite cu un sistem de coordonate. Fiecare locație poate avea mai multe seturi de date (gîndiți-vă la Feature dataset cu singura diferență că în GRASS putem salva și date de tip raster în aceste seturi de date) care aparțin utilizatorilor care le-au creat. Aceste seturi de date pot fi editate doar de cei care le-au creat, însă alți utilizatori pot accesa datele ce nu le aparțin, pentru vizualizare sau copiere în propriul set de date. Fiecare set de date este împărțit în date de tip raster și date de tip vector. De asemenea fiecare locație conține un set de date numit PERMANENT care poate fi editat doar de administratorul care a creat locația. Administratorul poate popula acest set de date pentru ca toți utilizatorii să aibă acces la ele.

Pentru început porniți QGIS cu comanda ‘qgis’. În meniul aplicației veți găsi Plugins —> Plugin Manager. În fereastra de Plugin Manager verificați dacă plugin-ul GRASS apare în listă și este activ.

QGIS Plugin Manager

Fereastra de activare/dezactivare a plugin-urilor.

Dupa activarea plugin-ului veți vedea bara cu unelte GRASS.

GRASS Toolbar

Bara cu unelte GRASS.

În ordine de la stînga la dreapta butoanele sînt:

  1. Încarcă strat vector GRASS în hartă
  2. Încarcă strat raster GRASS în hartă
  3. GRASS Toolbox (echivalent ArcToolbox)
  4. Arată/Ascunde zona de studiu (un perimetru roșu)
  5. Modifică zona de interes
  6. Editeaza strat vector GRASS
  7. Deschide set de date
  8. Crează un nou set de date/locație/bază de date
  9. Crează un nou strat vector GRASS
  10. Închide setul de date
    De aici încolo mă voi referi doar la operații iar in paranteze voi pune numărul butonului folosit, așa că vă recomand să vă familiarizați cu butoanele și scopul lor. Vom începe prin a adăuga un strat raster la proiectul QGIS ca și în imaginile următoare.

Încarcă un raster

Butonul pentru încărcarea unui raster.

Fereastra de dialog

Dialog pentru căutarea fișierului raster.

Selectează un sistem de coordonate

Dialog pentru selectarea unui sistem de coordonate a raster-ului.

Raster-ul încărcat în hartă

Harta din proiectul QGIS după încărcarea raster-ului.

Vom continua prin a crea o bază de date cu o nouă locație si un nou set de date. Creați un director de genul /home/nume_utilizator_linux/grassdata. Într-un mediu shell executați:

mkdir $HOME/grassdata

Pe urmă vom crea o nouă locație și set de date (8) ca în imaginile de mai jos.

Selectează/crează baza de date

Selectarea sau crearea unei baze de date.

Selectează/crează o nouă locație

Creați o nouă locație sau selectați una existentă.

Definește sistemul de coordonate

Definiți sistemul de coordonate prin căutare după cod EPSG sau prin căutare în listă.

Definiți regiunea de interes

Regiunea de interes se poate defini prin introducerea coordonatelor, folosind extinderea curentă din harta QGIS, sau prin selectarea unei țări.

Numele setului de date

Selectați un nume pentru noul set de date.

Verificare

Vericați că toate informațiile furnizate sînt așa cum le doriți. Dacă doriți să schimbați ceva puteți naviga înapoi.

Confirmare

Se confirmă crearea și deschiderea noului set de date.

Am ales numele Apuseni pentru locație deoarece DEM-ul meu e din Munții Apuseni. Acum putem importa stratul raster din hartă în setul nostru de date. Porniți GRASS Toolbox (3) și urmați pașii ca în imagini.

Importarea unui raster

Această comandă execută importarea unui raster în setul de date curent.

Dați click pe r.in.gdal și se va deschide un nou tab pentru rularea comenzii unde introduceți parametrii necesari.

Interfața comenzii r.in.gdal

Selectați parametrii de intrare si de ieșire.

Veți observa un tab numit Manual care conține informații detaliate despre comanda respectivă. După executare puteți naviga la tab-ul Browser unde veți găsi noul raster tocmai importat. S-ar putea să fie nevoie să dați click pe butonul de Refresh. Puteți adăuga (2) noul raster la hartă și să-l scoateți pe celălalt. De asemenea din tab-ul Browser puteți redefini regiunea de interes cu butonul cinci de la stînga la dreapta (vezi imaginea de mai jos).

Tab-ul Browser

În tab-ul Browser puteți executa operații similare celor din ArcCatalog.

Sper că încă mă mai urmăriți. Sîntem aproape gata. Mai trebuie doar să rulăm analiza, să ne jucăm puțin cu culorile și gata. Pentru analiză vom folosi comanda r.watershed care nu are o interfață grafică incă, așa că vom porni o sesiune GRASS shell.

Buton GRASS shell

Acest buton vă permite deschiderea unui shell unde puteți executa comenzi GRASS în linia de comandă.

Dați click pe GRASS shell și se va deschide un nou tab unde introduceți următoarea comandă:

r.watershed help

După cum vedeți din help, există numeroși parametrii care se pot deriva la momentul analizei. Noi vom deriva doar bazinele hidrografice, insă dumneavoastră puteți încerca și alte variante.
Vom executa următoarea comandă:

r.watershed elevation=L34_059 basin=bazine threshold=20000

Primul parametru este de intrare și reprezintă DEM-ul importat anterior. Al doilea parametru este de ieșire și reprezintă bazinele hidrografice care vor fi create. Al treilea parametru specifică algoritmului să “ignore” bazinele hidrografice mai mici de 20000 de celule (ele nu sînt ignorate ci doar combinate cu altele). În funcție de cerințele analizei dumneavoastră și de rezoluția DEM-ului va trebui să schimbați acest parametru. Din păcate shell-ul nu ne va informa cînd se va termina execuția comenzii. Eu mă uit la task manager pînă cînd văd că se schimbă utilizarea procesorului de la 100% la 0%. Cînd s-a terminat execuția mergeți inapoi la Browser și dați Refresh. Veți vedea un nou strat raster numit bazine pe care îl puteți adăuga la hartă (în Browser puteți folosi primul buton din stînga).

Rezultatul execuției comenzii r.watershed

În Browser veți găsi rezultatul execuției comenzii r.watershed pe care îl puteți încărca în hartă.

Ca un bonus, vom converti aceste bazine într-un strat de tip vector și vom crea un relief pentru DEM. Dați click pe tab-ul Modules și selectați comanda ‘r.to.vect’ pentru crearea suprafețelor (areas).

Comanda raster to vector

Această comandă vă permite conversia unui raster în vector.

Interfața grafică a comenzii r.to.vect

Trebuie să introduceți doar stratele sursă și destinație.

Mergeți din nou în Browser, dați un Refresh și veți găsi noul strat vector numit bazine pe care il puteți adăuga la hartă și pe urmă să-i schimbați simbologia (puteți ascunde sau scoate stratul raster bazine). Harta mea arată cam așa:

Harta bazinelor

Am adăugat transparență stratului vector pentru a putea observa cursurile de apă vizibile în DEM.

Iar acum vom crea un relief pentru a înfrumuseța harta. Vom folosi comanda r.shaded.relief în mediul shell. Există și o interfață grafică însă ea nu oferă acces la parametrul de exagerare verticală. Într-o nouă sesiune GRASS shell rulați următoarea comandă:

r.shaded.relief map=L34_059 shadedmap=Relief34_059 altitude=45 azimuth=315 zmult=4

Primii doi parametrii sînt clasici, de intrare-ieșire. Următorii doi parametrii reprezintă altitudinea (sub formă de unghi între 0-90) sursei de iluminație și direcția de iluminație (grade de compas între 0-360). Ultimul parametru e cel de exagerare verticală. Executați comanda, dați Refresh in Browser, și adăugați stratul la hartă, sub stratul vector bazine. Veți obține o hartă de genul:

Harta finală

O hartă finală cu bazinele hidrografice suprapuse pe un relief.

Am adăugat un strat al județelor și mi s-a părut interesant că granița dintre Cluj și Alba urmărește cu fidelitate destul de bună granița dintre două bazine hidrografice.

Notă: Nu am prelucrat DEM-ul pentru a umple depresiunile deoarece algoritmul din r.watershed a fost conceput sa minimizeze impactul unor astfel de erori. GRASS dispune de mai mulți algoritmi de deliniere a bazinelor hidrografice (unul dintre ele asemănător celui implementat în ArcGIS). În funcție de necesitățile dumneavoastră, puteți explora și celelalte variante. Manualul detaliat este in format html și îl puteți găsi online dar și pe calculatorul dumneavoastră în /usr/share/doc/grass-doc/html.

Concluzie

Deși pare greu de utilizat și de înțeles, GRASS este, din unele perspective, asemănător pachetului ArcGIS. Părerea mea e că ArcGIS e inspirat din GRASS, însă în ArcGIS au lăsat prea mulți algoritmi interesanți pe dinafară. Eu doar de curînd am început să folosesc GRASS, dar de fiecare dată cind îl folosesc, găsesc ceva care-mi aduce aminte de ArcGIS. Nu vă descurajați dacă nu vă iese din prima. Întrebările și sugestiile sînt binevenite. Vă doresc un Crăciun și un An Nou fericit.

Mai jos găsiți un video pe care l-am pus pe YouTube. Dacă dați click pe butonul YouTube din dreapta jos îl veți putea viziona într-o fereastră mai mare.



Discută articolul (6 comentarii)

Categorii