jueves, 9 de marzo de 2017

Uso de processing 'grass:r.lake.coords' con PyQGIS

El algoritmo de processing 'grass:r.lake.coords' permite generar el espejo de agua de un lago a partir de un ráster dem utilizando principalmente como parámetros de entrada la cota de llenado y las coordenadas de un punto dentro del referido espejo de agua. Para que la ejecución del algoritmo tenga sentido es necesario que el ráster dem incluya un relieve encajante, es decir, que evite que el agua se "derrame" y abarque toda la superficie del ráster.



El ráster de la imagen siguiente cumple con esos requerimientos; donde el punto en rojo estará dentro del espejo de agua a generar.


Los parametros de grass:r.lake.coords se encuentran a continuación:


Con base en lo anterior se desarrolló el código siguiente:

1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
import processing

dem_raster = processing.getObjectFromName('clip_raster_tiznados2')

extent = dem_raster.extent()

xmin, ymin, xmax, ymax = extent.toRectF().getCoords()

path = processing.runalg('grass:r.lake.coords',
                         dem_raster,         #dem <ParameterRaster>
                         550,                #wl <ParameterNumber> lake cote
                         '646378, 1089328',  #xy <ParameterString> seed point coordinatess
                         False,              #no negative depth
                         "%f,%f,%f,%f" % (xmin, xmax, ymin, ymax), #GRASS_REGION_PARAMETER <ParameterExtent>                         
                         0,                  #-n <ParameterBoolean> default value
                         None)               #lake <OutputRaster>

lake = QgsRasterLayer(path['lake'],
                      'lake')

QgsMapLayerRegistry.instance().addMapLayer(lake)

donde la cota de llenado es 550 metros. Al ejecutarlo en la Python Console de QGIS se obtiene:


Se observa que el límite inferior del lago sería el propio límite del ráster. Esto señala que allí se debería construir un dique artificial (en caso de que el proyecto fuese factible). Además, también se observa que las profundidades del embalse, para la cota de llenado de 550 m, abarcan desde 1 hasta 188 m dentro de la superficie del espejo de agua.

No hay comentarios: