30 votos

¿Cómo calcular la curvatura del terreno?

Tengo un raster de elevación y me gustaría obtener algunas variables básicas del terreno, como la pendiente, la rugosidad, el aspecto o la curvatura.

El problema es que parece que no tengo la posibilidad de calcular la curvatura con el analista del terreno:

enter image description here

¿Puede alguien decirme por qué este indicador no está en la lista? ¿Cómo puedo calcularlo de otra manera?

21voto

sker Puntos 2670

La curvatura es una derivada del terreno compleja de calcular, la ecuación que se utiliza depende de la resolución de los datos de entrada, ya que hay que asegurarse de que los resultados de la curvatura que se calculan pueden distinguirse del ruido en los datos.

Recientemente se ha investigado mucho sobre el cálculo de la curvatura en datos LiDAR de alta resolución, lo que ha demostrado que existe una ruptura de escala en torno a los 2 o 3 metros de resolución y que por encima de este punto es necesario utilizar más algoritmos diferentes (con los que no estoy tan familiarizado). La mejor información sobre el cálculo de la curvatura topográfica proviene probablemente de Hurst et al 2012 y sus referencias.

El principio básico del cálculo de la curvatura, al igual que con la pendiente y el aspecto, consiste en pasar una ventana móvil sobre la superficie de elevación y ajustar los valores de elevación a una función polinómica de 6 términos, cuyos coeficientes darán la pendiente, el aspecto y la curvatura de la celda central de la ventana móvil.

ArcGIS utiliza una ventana de búsqueda de 3x3 que sólo dará buenos resultados en áreas completamente desprovistas de vegetación, lo que hace que la herramienta sea bastante inútil a menos que la gente sea consciente de esta limitación, esto puede sugerir por qué no está presente en QGIS.

Las matemáticas se derivaron originalmente (creo) en Evans (1980) y se simplificaron en unas pocas páginas en Principios de los sistemas de información geográfica (enlace de Amazon) que puedo recomendar como una buena guía para este tipo de análisis del terreno a nivel básico.

Una forma de calcular la curvatura de un MDE es convertir el MDE en un raster ascii, leerlo en un array de numpy y luego realizar el ajuste polinómico en una ventana móvil que pase por los datos. Esto es bastante fácil de hacer, pero es muy lento de ejecutar y necesita una buena cantidad de optimización (este tipo de operaciones a menudo se portan a c++ para acelerarlas).

Para realizar la operación en QGIS se puede utilizar la función Plugin GRASS r.slope.aspect que también está limitada por la ventana fija de 3x3.

Me doy cuenta de que no es la respuesta sencilla que sin duda esperabas, pero espero que entiendas que la curvatura es compleja de derivar de forma significativa. Le deseo lo mejor.

Evans, I. S. (1980), An integrated system of terrain analysis and slope mapping, Z. Geomorphol., 36, 274–295.

0 votos

¡Gracias por todo el desarrollo! Sin embargo, me intriga el hecho de que la opción "Curvatura" no aparezca en la lista del analista de terrenos rasterizados de QGIS. ¿Es normal? He reinstalado mi versión de QGIS 1.8 para asegurarme, pero sigue sin aparecer :-/

1 votos

Tenga en cuenta que en GRASS puede utilizar 'r.param.scale' que calcula las derivadas del terreno, como la curvatura, con un tamaño definido por el usuario para el operador de ventana (no sólo el 3x3 por defecto).

13voto

Erik Öjebo Puntos 6937

La versión de ESRI de Raster Analysis para calcular la curvatura podría ser útil para desarrollar un plugin para QGIS.

Para cada celda, un polinomio de cuarto orden de la forma:

enter image description here

Z = Ax²y² + Bx²y + Cxy² + Dx² + Ey² + Fxy + Gx + Hy + I

se ajusta a una superficie compuesta por una ventana de 3x3. Los coeficientes a, b, c, etc., se calculan a partir de esta superficie.

Las relaciones entre los coeficientes y los nueve valores de elevación para cada celda numerada como se muestra en el diagrama son las siguientes: Diagrama de valores de curvatura Diagrama de valores de curvatura

A = [(Z1 + Z3 + Z7 + Z9) / 4 - (Z2 + Z4 + Z6 + Z8) / 2 + Z5] / L4

B = [(Z1 + Z3 - Z7 - Z9) /4 - (Z2 - Z8) /2] / L3

C = [(-Z1 + Z3 - Z7 + Z9) /4 + (Z4 - Z6)] /2] / L3

D = [(Z4 + Z6) /2 - Z5] / L2

E = [(Z2 + Z8) /2 - Z5] / L2

F = (-Z1 + Z3 + Z7 - Z9) / 4L2

G = (-Z4 + Z6) / 2L

H = (Z2 - Z8) / 2L

I = Z5

La salida de la herramienta Curvatura es la segunda derivada de la superficie -por ejemplo, la inclinación de la pendiente- de manera que:

Curvatura = -2(D + E) * 100

Información completa y fuente:

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//00q90000000t000000

2 votos

Este es un gran resumen de las matemáticas, pero se puede simplificar para utilizar un polinomio de 6 términos sin pérdida de calidad discernible, si sus datos tienen una resolución inferior a 3 metros.

5 votos

Como la "curvatura" del ESRI sólo depende de D+E, todo lo demás es innecesario. Cálculo de -2(D+E)*100 como (100/L2)*(3*Z5 - [Z2+Z4+Z6+Z8+Z5]) muestra cómo obtener este valor como el triple del valor original, Z5 menos una suma de vecindad Z2+Z4+Z6+Z8+Z5 (utilizando un círculo de radio 1), todo ello reescalado por 100/L2 . Son sólo tres simples operaciones de rejilla.

0 votos

@whuber: ¿Alguien puede decirme qué es x e y? y ¿es Z el valor de la curvatura? entonces ¿qué es -2(D+E)*100? ¿Es posible que si tengo un archivo vectorial con tantos polígonos y quiero saber si el área dentro del polígono es cóncava o convexa (curvatura en planta y perfil)?

7voto

Saqlain Puntos 133

La curvatura podría calcularse con el módulo de SAGA 'Análisis del terreno - Morfometría ---> Pendiente, Aspecto, Curvatura'

El cálculo podría realizarse en base a uno de estos algoritmos:

  • Pendiente máxima (Travis et al. 1975)
  • Pendiente máxima del triángulo (Tarboton 1997)
  • Plano de ajuste de mínimos cuadrados (Horn 1981, Costa-Cabral & Burgess 1996)
  • Fit 2.Degree Polynom (Bauer, Rohdenburg, Bork 1985)
  • Fit 2.Degree Polynom (Heerdegen & Beran 1982)
  • Fit 2.Degree Polynom (Zevenbergen & Thorne 1987)
  • Fit 3.Degree Polynom (Haralick 1983)

4voto

Jon-Eric Puntos 7749

LandSerf puede hacer esto. Puede definir el tamaño de las ventanas (3*3, 5*5, 7*7, 11*11,...) pero debe ser un número impar. análisis multiescala. puede considerar la dependencia de la escala de la pendiente, Aspecto y curvatura. http://www.landserf.org/ LandSerf ajustará la ecuación polinómica co cuadrática a ventanas específicas predefinidas, pero si se definen ventanas de gran tamaño, como 50*50, tardará mucho tiempo. Depende del tamaño de la trama y del tamaño de la ventana que se defina. Jo Wood escribió Landserf para su tesis doctoral. Está escrito en Java.

  • Curvatura del perfil
  • Curvatura del plano
  • Curvatura de longitud
  • Curvatura transversal
  • Curvatura media
  • Curvatura mínima
  • Curvatura máxima

Se puede calcular en la diferente escala de LandSerf

3voto

Mike DeFehr Puntos 138

0 votos

¿Puede dar más detalles sobre el funcionamiento de estos paquetes para calcular la curvatura? Los enlaces que has puesto son enlaces generales a dos paquetes de SIG, y no tienen ninguna relación directa con la pregunta formulada.

1 votos

Perdón por la respuesta tan corta. En SAGA puede encontrar el módulo Análisis del terreno - Análisis de compuestos --> Análisis del terreno estándar. Allí puede calcular la curvatura, la curvatura del perfil, la curvatura del plano (no hay una descripción detallada dentro de la ayuda del software). Puede importar datos en SAGA fácilmente desde asc, flt, ...

0 votos

@sgrieve En el TAS se puede calcular el perfil, el plano y la curvatura tangencial (menú: Análisis del terreno-->Atributos primarios del terreno-->Derivadas de la superficie). De nuevo, hay poca descripción de cómo funciona.

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