martes, 21 de febrero de 2017

Processing taudem:d8flowdirections para determinar mapas de pendiente y dirección de flujo

TauDEM (Terrain Analysis Using Digital Elevation Models) es una suite de herramientas para Modelos de Elevación Digital (DEM por sus siglas en inglés) que permite la extracción y análisis de información hidrólogica de la topografía que viene representada por el DEM. A pesar de que viene supuestamente disponible para ser usada directamente en Processing de QGIS, lo cierto es que debe ser instalada previamente, habilitada en las opciones de Processing y establecidas las rutas correspondientes a las herramientas y sus dependencias.


Hasta ahora, he venido usando las herramientas de Processing en GNU/Linux Debian, sin embargo, como no está disponible en los repositorios (hay que compilar desde las fuentes) lo he instalado primero en Windows porque allí tenemos a la mano un instalador completo (programa más dependencias). No obstante, después de la instalación, he comprobado que borra y sobrescribe los directorios de Python y GDAL pre existentes e inutiliza los bindings GDAL/OGR instalados con anterioridad.

Ahora resta habilitar el provider en las opciones de Processing y escribir las rutas a las dependencias y los ejecutables de los métodos; tal como se encuentra en la imagen inferior:


Los métodos disponibles en TauDEM son 59 y en este caso se usará el número 28 (ver imagen siguiente).


A diferencia de los métodos de Processing evaluados con anterioridad, este contendría un sólo parámetro porque los mapas creados decidí visualizarlos como capas temporales (ver imagen siguiente).


El código completo utilizado se encuentra a continuación:

import processing

layer = iface.activeLayer()

path = processing.runalg('taudem:d8flowdirections',
                         layer,  
                         None,
                         None)

D8_Flow_Direction_Grid = QgsRasterLayer(path['-p'],
                                       'D8_Flow_Direction_Grid')

QgsMapLayerRegistry.instance().addMapLayer(D8_Flow_Direction_Grid)

D8_Slope_Grid = QgsRasterLayer(path['-sd8'], 
                               'D8_Slope_Grid')

QgsMapLayerRegistry.instance().addMapLayer(D8_Slope_Grid)

Al ejecutarlo en la Python Console de QGIS se obtiene para el mapa de pendientes:


y para el mapa de dirección de flujo lo siguiente:




No hay comentarios: