Cálculo de la longitud del terreno (λ de la RUSLE) según enfoque CALSITE mediante r.drain en GRASS-QGIS

En un artículo precedente, se estimó la variabilidad espacial del subfactor longitud del terreno (L) asumiendo dos valores constantes para λ (50 y 100 m) mediante GRASS-QGIS. Barrios (2000) sugiere la determinación de λ mediante la aproximación del modelo CALSITE en el cual:

    λ = (área acumulada de drenaje/3.1416)^0.5

El modelo CALSITE emplea un algoritmo de flujo que, partiendo de un DEM, determina el área de drenaje acumulada hasta cada celda donde la dirección de cada flujo se establece mediante la opción determinista de los 8 puntos vecinos. En GRASS el módulo que emplea este enfoque es r.drain.

Para probar su ejecución se tomó arbitrariamente un punto (x=640096.00, y=1100717.00) en el ráster DEM empleado en los artículos anteriores y se observó el resultado de la aplicación de r.drain. El comando, ejecutado en cónsola de GRASS-QGIS, fue el siguiente:

r.drain input=N09W068_UTM19N_canoa output=flujo1 coordinate=640096.00,1100717.00

La visualización del resultado se incluye en la siguiente imagen:

Para este caso particular se elaboró un script de python para determinar la longitud del terreno (λ) a partir del área acumulada de drenaje; según la fórmula anterior. El código fue el siguiente:

#!/usr/bin/env python
# -*- coding: utf-8

import grass.script as grass
from os import system
from math import *

system("clear")

x=640096.00
y=1100717.00

row= int(raw_input ("número de fila = ? "))
column=int(raw_input ("número de columna = ? "))

x=x + column*30
y=y - row*30

p1=str(x)+","+str(y)

map="flujo"+str(row)+str(column)

print map

grass.run_command("r.drain", 
					input="N09W068_UTM19N_canoa", 
					output=map, 
					coordinate=p1,
					overwrite="true")

salida=grass.read_command("r.report",
							flags="hn",
							map=map,
							units="me",
							nsteps="1",
							quiet="true")

salida=salida.split("TOTAL")


salida=salida[1].split("|")

salida=salida[1].split(",")

sum_texto=""

for i in range(len(salida)):

	sum_texto=sum_texto + salida[i]

area_acum=float(sum_texto)

pi=4*atan(1)

print sqrt(area_acum/pi)

Como la resolución del ráster es de aproximadamente 30 m, manualmente se modificó el código para producir 9 resultados adicionales de r.drain. Estos involucran, para los 8 primeros, un desplazamiento lateral y sucesivo de 30 m hacia el este y el último un desplazamiento de 600 m con relación al octavo. Los resultados pueden visualizarse en la siguiente imagen:

Por otra parte, los 9 primeros valores de λ corresponden a 140.303366221 m y el décimo a 150.557681289 m. Se observa que estas 10 celdas pertenecen a la misma zona de drenaje.

La automatización del proceso, tema del próximo artículo, incluiría el barrido horizontal y vertical del ráster y cada valor de λ tendría que ser almacenado en una lista (matriz) antes de ser incluido en el ráster respectivo con la variabilidad espacial de λ.

Esta entrada fue publicada en Código Python, GRASS, QGIS, SIG, Software Libre, Teledetección. Guarda el enlace permanente.

Una respuesta a Cálculo de la longitud del terreno (λ de la RUSLE) según enfoque CALSITE mediante r.drain en GRASS-QGIS

  1. Pingback: Cálculo de la longitud del terreno (λ de la RUSLE) según enfoque CALSITE mediante un script de Python con GRASS |

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s