17.10. Calculatorul raster. Valorile fără-date

Notă

În această lecție vom vedea cum se utilizează calculatorul raster pentru a efectua unele operații asupra straturilor raster. Vom explica, de asemenea, ce sunt valorile fără-date și modul în care lucrează cu ele calculatorul și alți algoritmi

Calculatorul raster reprezintă unul dintre cei mai puternici algoritmi. Este un algoritm foarte flexibil și versatil, care poate fi folosit în diverse calcule, și care va deveni în curând o parte importantă a setului dvs. cu instrumente.

În această lecție vom efectua unele calcule, majoritatea simple, cu ajutorul calculatorului raster. Acest lucru ne va permite să observăm modul de gestionare a unor situații particulare cu care ne-am putea confrunta. Înțelegerea acestor aspecte este importantă pentru obținerea ulterioară a rezultatelor așteptate și, de asemenea, pentru deprinderea tehnicilor comune care se pot aplica.

Deschideti proiectul QGIS corespunzător acestei lecții și veți vedea că ea conține mai multe straturi raster.

Acum deschideți caseta de instrumente și caseta de dialog corespunzătoare calculatorului raster.

../../../_images/calculator_dialog.png

Notă

Interfața diferă pentru versiunile recente.

Dialogul conține 2 parametri.

  • Straturile de utilizat pentru analiză. Aceasta este o intrare multiplă, ceea ce înseamnă că puteți selecta câte straturi doriți. Faceți clic pe butonul din partea dreaptă și apoi selectați straturile pe care doriți să le utilizați în dialogul care va apărea.

  • Formula de aplicat. Formula folosește ca variabile straturile selectate în parametrul de mai sus, folosind litere din alfabet (a, b, c...) sau g1, g2, g3.... Adică, formula a + 2 * b este aceeași cu g1 + 2 * g2 și va calcula suma valorii din primul strat plus de două ori valoarea din al doilea strat. Ordinea straturilor corespunde ordinii pe care o vedeți în dialogul de selecție.

Atenționare

Calculator ține cont de majuscule/minuscule.

Pentru a începe, vom schimba unitățile DEM-ului din metri în picioare. Formula de care avem nevoie este:

h' = h * 3.28084

Selectați DEM-ul din câmpul straturilor și introduceți a * 3.28084 în câmpul formulei.

Atenționare

Pentru utilizatorii care nu sunt englezi: folosiți întotdeauna „.”, nu „,”.

Faceți clic pe Run pentru a rula algoritmul. Veți obține un strat care are același aspect cu cel al stratului de intrare, dar cu valori diferite. Stratul de intrare pe care l-am folosit are valori valide în toate celulele sale, astfel încât ultimul parametru nu are niciun efect.

Să facem acum un alt calcul, de data aceasta pe stratul accflow. Acest strat conține valori ale debitului acumulat, un parametru hidrologic. Conține acele valori numai în zona unui bazin hidrografic dat, cu valori fără date în afara acestuia. După cum puteți vedea, randarea nu este foarte informativă, din cauza modului în care sunt distribuite valorile. Folosind logaritmul acestei acumulări de flux va rezulta o reprezentare mult mai informativă. O putem calcula folosind calculatorul raster.

Deschideți iarăși dialogul algoritmului, selectați stratul accflow ca singur strat de intrare, apoi introduceți următoarea formulă: log(a).

Acesta este stratul pe care îl veți obține.

../../../_images/log.png

Dacă selectați instrumentul Identificare pentru a cunoaște valoarea unui strat într-un anumit punct, selectați stratul pe care tocmai l-am creat și faceți clic pe un punct din afara bazinului, veți vedea că acesta conține o valoare no–data.

../../../_images/identify.png

Pentru exercițiul următor vom folosi două straturi în loc de unul și vom obține un DEM cu valori de cotă valide numai în bazinul definit în cel de-al doilea strat. Deschideți dialogul calculatorului și alegeți ambele straturi ale proiectului în câmpul straturilor de intrare. Introduceți următoarea formulă în câmpul corespunzător:

a/a * b

a refers to the accumulated flow layer (since it is the first one to appear in the list) and b refers to the DEM. What we are doing in the first part of the formula here is to divide the accumulated flow layer by itself, which will result in a value of 1 inside the basin, and a no–data value outside. Then we multiply by the DEM, to get the elevation value in those cells inside the basin (DEM * 1 = DEM) and the no–data value outside (DEM * no_data = no_data)

Acesta este stratul rezultat.

../../../_images/masked.png

This technique is used frequently to mask values in a raster layer, and is useful whenever you want to perform calculations for a region other that the arbitrary rectangular region that is used by raster layer. For instance, an elevation histogram of a raster layer doesn’t have much meaning. If it is instead computed using only values corresponding to a basin (as in he case above), the result that we obtain is a meaningful one that actually gives information about the configuration of the basin.

There are other interesting things about this algorithm that we have just run, apart from the no–data values and how they are handled. If you have a look at the extents of the layers that we have multiplied (you can do it double–clicking on their names of the layer in the table of contents and looking at their properties), you will see that they are not the same, since the extent covered by the flow accumulation layer is smaller that the extent of the full DEM.

That means that those layers do not match, and that they cannot be multiplied directly without homogenizing those sizes and extents by resampling one or both layers. However, we did not do anything. QGIS takes care of this situation and automatically resamples input layers when needed. The output extent is the minimum covering extent calculated from the input layers, and the minimum cell size of their cellsizes.

In this case (and in most cases), this produces the desired results, but you should always be aware of the additional operations that are taking place, since they might affect the result. In cases when this behaviour might not be the desired, manual resampling should be applied in advance. In later chapters, we will see more about the behaviour of algorithms when using multiple raster layers.

Să încheiem această lecție cu un alt exercițiu de mascare. Urmează să calculăm panta în toate zonele cu o altitudine între 1000 și 1500 de metri.

În acest caz, nu dispunem de un strat pentru a-l utiliza drept mască, dar îl putem crea cu ajutorul calculatorului.

Pornește calculatorul folosind DEM-ul doar ca pe un strat de intrare, și următoarea formulă

ifelse(abs(a-1250) < 250, 1, 0/0)

După cum puteți vedea, putem folosi calculatorul nu numai pentru a face operații algebrice simple, ci și pentru a efectua calcule mai complexe, care implică propoziții condiționate, precum cea de mai sus.

Rezultatul are o valoare de 1 în interiorul gamei în care dorim să lucrăm, și valori fără-date în celulele din exterior.

../../../_images/elevation_mask.png

The no-data value comes from the 0/0 expression. Since that is an undetermined value, SAGA will add a NaN (Not a Number) value, which is actually handled as a no-data value. With this little trick you can set a no-data value without needing to know what the no–data value of the cell is.

Now you just have to multiply it by the slope layer included in the project, and you will get the desired result.

All that can be done in a single operation with the calculator. We leave that as an exercise for the reader.