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.