7 votos

¿Cómo puedo calcular la distancia vertical hasta el agua más cercana?

Resumen:

Me gustaría crear un raster donde cada celda contenga la distancia vertical al agua más cercana (una aproximación decente sería aceptable). El problema es que no estoy seguro de cómo hacerlo.

Enfoque actual:

He mirado la documentación de mi SIG (estoy usando Grass 6.4 si eso importa). Y no encuentro ninguna forma directa de realizar este cálculo. También he buscado en la web sin suerte.

Así que se me ocurrió lo siguiente:

  • convertir mi vector de agua en una trama de agua (1=agua, null=todo lo demás)
  • reemplazar los 1s en la trama de agua con la altitud sobre el nivel del mar
  • realizar un análisis de "vecindad" (ventana móvil). Calcular la altitud media del agua para un radio de 100 metros para cada celda de mi región (ignorando los nulos).
  • repita lo anterior con 100m, 200m, 300m, ..., 2000m. Una trama para cada distancia.
  • utilizando r.grow.distance calcular la distancia entre cada celda y su agua más cercana
  • entonces, utilizando el álgebra de mapas, miro la distancia al agua más cercana para cada celda y su propia altitud y restar la altitud media del agua para el raster apropiadamente distanciado.

Los problemas de mi método:

  • Es muy exigente desde el punto de vista computacional. Estoy trabajando con una resolución de 10 metros y necesito realizar este modelado en unos 60 millones de celdas. Llevo días y días creando rásters en un escritorio rápido y no estoy ni cerca de terminar.

  • Con radios pequeños, el cálculo parece razonable. Si la distancia al agua más cercana es de 75 metros y utilizo una altitud media de 100 metros hasta el agua, la aproximación es bastante buena. Pero si la distancia al agua más cercana es de 1875 metros y utilizo la trama de 1900 metros, estaré promediando la altitud al agua de muchas celdas muy alejadas del agua más cercana a mi celda. Los resultados no son satisfactorios. He considerado utilizar algún tipo de proceso de suavizado para la trama final, pero me pregunto si hay un enfoque completamente diferente que no estoy viendo.

He leído sobre proyectos de modelos predictivos en los que la distancia vertical al agua más cercana es una de las entradas del modelo, así que sé que se puede hacer, pero no estoy seguro de cómo.

Agradecería cualquier ayuda que pueda recibir con este problema. Gracias.

1 votos

En arcgis podrías usar la función de asignación euclidiana + algo de álgebra de mapas. Sé que no tienes ese software, pero tal vez hay una fuente para el cálculo?

0 votos

@BlindJesse tiene una buena solución si "más cerca" significa realmente eso, en lugar de estrictamente aguas abajo al agua más cercana. Es un flujo de trabajo sencillo: atribuya la cuadrícula de agua con las elevaciones. Redondearlas a números enteros para poder aplicar la atribución euclidiana. Resta el DEM de eso, luego toma el valor absoluto de esa diferencia. Ya está hecho.

9voto

Robert Höglund Puntos 5572

Realice un análisis hidrológico de sus datos. Tomando su primer paso de masas de agua como un raster, puede entonces utilizarlo como un raster de sumideros. Voy a especificar el resto de este análisis en términos de GRASS como usted mencionó que es el sistema GIS que está utilizando:

Preparar r.watershed ( documentación ) con la capa de datos de elevación que desea analizar y la trama de sumideros que generó en el primer paso:

r.watershed elev=input_dem depression=input_sinks basin=output_basins \ 
  stream=output_streams threshold=1000

Donde el umbral es algo apropiado para la escala de tus datos - esto debería darte un mapa de cada cuenca: si restas esa elevación de todas las celdas en esa cuenca, deberías obtener la distancia vertical al agua más cercana. Es posible que tengas que iterar sobre regiones más pequeñas que tu raster completo para obtener un buen rendimiento. Puedes encontrar estos tutoriales ( 1 , 2 ) también es útil para entender cómo utilizar el comando.

Mike mencionó un complemento llamado r.watershed.distance que puede utilizarse para calcular todo esto de una sola vez:

r.stream.distance -o dir=dirs stream=streams dem=elev \ 
  distance=distance_outlets  elevation=elevation_outlets

Lo que resultará en una salida cercana a lo que te interesa: http://grass.osgeo.org/grass-wiki/images/Distance_outlets.png

Este ejemplo fue tomado del Página de R.stream.* puede descargar la propia extensión desde la página del complemento .

4 votos

Hay algunas joyas en GRASS para ciencias hidrológicas como por ejemplo r.stream.distance (basado en r.watershed ) que calcula la distancia de bajada y la diferencia de cota de bajada hasta las celdas de la corriente o de la salida

0 votos

Gracias. Me he tirado de los pelos con esto. r.stream.distance parece perfecto. Lo instalaré mañana.

0 votos

He pensado en un problema con esta técnica: si tienes una masa de agua en una cuenca adyacente pero cercana, no te dará la distancia hasta ella yendo primero "cuesta arriba" por la cresta. Todavía sería posible, pero un poco más difícil de implementar.

1voto

joshoff Puntos 11

Si utiliza el SAGA GIS gratuito ( http://www.saga-gis.org/ ), tiene algunas opciones interesantes para calcular la distancia vertical al río. Recomiendo los algoritmos, ambos en la caja de herramientas fría "Terrain Analysis - channels": "distancia del flujo terrestre a la red de canales" y "distancia vertical a la red de canales". Cada uno tiene un enfoque diferente.

La "distancia del flujo sobre tierra a la red de canales", en SAGA GIS requiere un DEM hidrológico consistente, pero la "distancia vertical a la red de canales" no lo necesita. El r.stream.distance en GRASS necesita un raster de dirección de flujo que normalmente se extrae de un DEM hidrológicamente consistente, también.

Es interesante observar que algunos trabajos recomiendan que, para calcular la distancia vertical a los ríos, es mejor profundizar en el drenaje que sentir los sumideros del MDE, con el fin de que el MDE sea lo más coherente posible desde el punto de vista hidrológico (véalo aquí: http://www.lerf.eco.br/img/publicacoes/2011_0811%20Height%20Above%20the%20Nearest%20Drainage%20a%20hydrologically%20relevant%20new%20terrain%20model.pdf ). Esto se debe a que la opción de llenado del sumidero puede cambiar mucho el ráster original. Otra opción, posible en el r.stream.distance en Grass es introducir un raster de dirección de flujo desde un DEM consistente hidrológicamente, mientras se introduce el raster de elevación original como DEM.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X