calcolatore raster e parametri scalari

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

calcolatore raster e parametri scalari

stefano.buggiarin
Buonasera ed un saluto a tutti,
sono stefano Buggiarin ed è la prima volta che scrivo qui.

Sono alla ricerca di un modo per realizzare in QGIS un modello (pensavo ad esempio di realizzarlo attraverso il modellatore grafico) che mi permetta di lavorare con mappe raster e parametri numerici contemporaneamente.

So che all'interno dei vari calcolatori raster (compreso quello nativo di QGIS) tale operazione è possibile inserendo direttamente nell'operazione il numero scalare di interesse ma a me sarebbe utile inserire dei parametri il quale valore lo definisco prima dell'esecuzione del modello.

Ad esempio dovrei implementare la seguente formula:
L = [(L1 - L2)/(Q1-Q2)] * (RM - Q2) + L2

dove L,RM sono mappe raster
L1,L2;Q1,Q2 sono numeri scalari il cui valore può variare di volta in volta.

Per caso qualcuno ha dei suggerimenti?

Vi ringrazio moltissimo,
Stefano Buggiarin

Reply | Threaded
Open this post in threaded view
|

Re: calcolatore raster e parametri scalari

AlsPer78
1) se usi molto con QGIS e hai dimestichezza con i linguaggi di programmazione ti consiglio di approfondire Python e il suo uso nella console di QGIS (http://docs.qgis.org/2.14/en/docs/pyqgis_developer_cookbook/index.html). Per il tuo problema specifico potrebbe interessarti questa discussione: http://gis.stackexchange.com/questions/141659/qgis-from-console-raster-algebra.

2) se lavori spesso con raster a banda singola ti cosiglio di provare anche SAGA (http://www.saga-gis.org/en/index.html). In questo caso potresti fare un tool chain che prima crea griglie raster con valori costanti pari alle tue variabili e poi esegue il calcolo finale.
In pratica bisogna creare un file di testo con estensione .xml contenente:

<?xml version="1.0" encoding="UTF-8"?>
<toolchain saga-version="3.0.0">
  <group>toolchains</group>
  <identifier>raster_calc</identifier>
  <name>Calcolo raster con costanti</name>
  <description>Esegue un calcolo su un raster usando costanti definite dall'utente
  </description>
  <parameters>
    <option varname="GRID_SYSTEM" type="grid_system">
      <name>Grid System</name>
    </option>
    <input varname="INPUT" type="grid" parent="GRID_SYSTEM">
      <name>Input Grid</name>
    </input>
    <output varname="OUTPUT" type="grid" parent="GRID_SYSTEM">
      <name>result</name>
      <description>Risultato.</description>
    </output>
    <option varname="L1" type="text">
      <name>L1</name>
          <value>40</value>
        </option>
    <option varname="L2" type="text">
      <name>L2</name>
          <value>30</value>
        </option>
    <option varname="Q1" type="text">
      <name>Q1</name>
          <value>20</value>
        </option>
    <option varname="Q2" type="text">
      <name>Q2</name>
          <value>10</value>
        </option>
  </parameters>
  <tools>
    <tool id="tool_L1" library="grid_calculus" tool="1" name="Grid Calculator">
      <input id="GRIDS">INPUT</input>
      <option id="FORMULA" varname="true">L1</option>
      <option id="NAME">constantL1</option>
      <option id="FNAME">FALSE</option>
      <option id="USE_NODATA">FALSE</option>
      <option id="TYPE">7</option>
      <output id="RESULT">grid_L1</output>
    </tool>
    <tool id="tool_L2" library="grid_calculus" tool="1" name="Grid Calculator">
      <input id="GRIDS">INPUT</input>
      <option id="FORMULA" varname="true">L2</option>
      <option id="NAME">constantL2</option>
      <option id="FNAME">FALSE</option>
      <option id="USE_NODATA">FALSE</option>
      <option id="TYPE">7</option>
      <output id="RESULT">grid_L2</output>
    </tool>
    <tool id="tool_Q1" library="grid_calculus" tool="1" name="Grid Calculator">
      <input id="GRIDS">INPUT</input>
      <option id="FORMULA" varname="true">Q1</option>
      <option id="NAME">constantQ1</option>
      <option id="FNAME">FALSE</option>
      <option id="USE_NODATA">FALSE</option>
      <option id="TYPE">7</option>
      <output id="RESULT">grid_Q1</output>
    </tool>
    <tool id="tool_Q2" library="grid_calculus" tool="1" name="Grid Calculator">
      <input id="GRIDS">INPUT</input>
      <option id="FORMULA" varname="true">Q2</option>
      <option id="NAME">constantQ2</option>
      <option id="FNAME">FALSE</option>
      <option id="USE_NODATA">FALSE</option>
      <option id="TYPE">7</option>
      <output id="RESULT">grid_Q2</output>
    </tool>
    <tool id="tool_10" library="grid_calculus" tool="1" name="Grid Calculator">
      <input id="GRIDS">grid_L1</input>
      <input id="GRIDS">grid_L2</input>
      <input id="GRIDS">grid_Q1</input>
      <input id="GRIDS">grid_Q2</input>
      <input id="GRIDS">INPUT</input>
      <option id="FORMULA">((g1-g2)/(g3-g4))*(g5-g3)+g2</option>
      <option id="NAME">result</option>
      <option id="FNAME">FALSE</option>
      <option id="USE_NODATA">FALSE</option>
      <option id="TYPE">7</option>
      <output id="RESULT">OUTPUT</output>
    </tool>
  </tools>
</toolchain>

Carichi il tuo raster e il file xml trascinandoli nella finestra di SAGA (questo è per la versione 3.0.0) e ti compare il tuo modulo in   Geoprocessing > Tool chains > Calcolo raster con costanti.

O almeno io farei così. Se però qualcuno ha una soluzione megliore ben venga, interessa anche a me.
Alessandro Perego www.alspergis.altervista.org