Logo Passei Direto

Cálculo de pendiente en GEE

User badge image
Henry Peña

en

Herramientas de estudio

Material
¡Estudia con miles de materiales!

Vista previa del material en texto

CARTOGRAFÍA DIGITAL 2023
CÁLCULO DE
P E N D I E N T E
cartografiadigital2023@gmail.com
Managua, Nicaragua
Fecha: 9/5/23
La pendiente se puede medir en grados desde una pendiente horizontal (90º) o pendiente
en porcentaje (que es la elevación dividida entre el avance, multiplicado por 100). Una
pendiente de 45 grados equivale a una pendiente del 100%. A medida que el ángulo de la
pendiente se acerca a la vertical (90 grados), la pendiente en porcentaje se acerca al
infinito. La pendiente de una cara de TIN es la pendiente cuesta abajo más empinada de
un plano definido por la cara. La pendiente para una celda en un ráster es la pendiente
más empinada de un plano definido por la celda y sus ocho vecinos circundantes.
¿Qué es la pendiente?
Cálculo de pendiente
Fuente: esri (2023)
La Misión de Topografía del Radar del Transbordador Espacial (SRTM, ver Farr et al. 2007) es un esfuerzo de
investigación internacional que obtuvo modelos digitales de elevación a escala casi global. Este producto
SRTM V3 (SRTM Plus) es proporcionado por el NASA JPL a una resolución de 1 segundo de arco
(aproximadamente 30 metros).
Este conjunto de datos ha pasado por un proceso de llenado de vacíos utilizando datos de código abierto
(ASTER GDEM2, GMTED2010 y NED), en contraste con otras versiones que contienen vacíos o han sido
llenadas con fuentes comerciales. Para obtener más información sobre las diferentes versiones, consulte la
Guía Rápida de SRTM.
La determinación de la pendiente se puede llevar a cabo
mediante el uso de un Modelo de Elevación Digital
(DEM). Para este propósito, se pueden descargar DEMs
con resoluciones de 12.5 metros o 30 metros, utilizando
ASF Data y procesandolo en QGIS o ArcGIS. Sin
embargo, también existe una alternativa que también
es viable, mediante Google Earth Engine, una
plataforma que ofrece una amplia gama de recursos
para esta tarea. En particular, podemos utilizar el "NASA
SRTM Digital Elevation 30m" como uno de los paquetes
disponibles en esta plataforma.
Cálculo de pendiente
Primero acceda a la plataforma de Google Earth Engine, luego a
los datos de ejemplo del código y añada las coordenadas de
Huancayo (-75.20510134293208,-12.056677563641315):
¿Como calcular?
Al dar “run” observara que se ha
generado la capa de pendiente
y que aún no está listo.
Carga de datos: Comienza cargando los datos
de elevación del terreno del conjunto de
datos SRTM en Google Earth Engine (GEE).
Cálculo de la pendiente: Luego, selecciona la
banda de elevación de esos datos y calcula la
pendiente del terreno utilizando la función
ee.Terrain.slope().
Recorte a una región de interés: La pendiente
calculada se recorta para limitar el análisis a
una región específica del mapa, definida
previamente como "geometry".
Visualización en el mapa: La capa de
pendiente resultante se agrega al mapa,
utilizando una paleta de colores que va de 0 a
60 grados para representar la pendiente del
terreno.
Reclasificación de la pendiente: A
continuación, se reasignan valores de
pendiente a diferentes clases numéricas. Esto
se hace mediante una serie de condiciones
where, donde se definen rangos de pendiente
y se les asigna un valor de clase específico.
Definición de paleta de colores: Por último, se
establece una paleta de colores personalizada
que se utilizará para visualizar las diferentes
clases de pendiente en el mapa.
Por ahora, modificaremos el código un poco,
creando una zona donde usted quiera, por ejemplo,
cree un recuadro y haga el clip de recorte de “slope”
y haga que se muestre en el mapa:
Ajustaremos ahora la clasificación hasta 6 clases
según Adhikari, tal como se muestra
acontinuación:
¿Que hace el código actual?¿Como calcular?
Ahora añadimos el Map.addlayer con la clasificación de pendiente y sus
paletas, recuerde el min y max dependera de los rangos que haya hecho:
Resultado
Cálculo de área, descarga y leyenda
Primero, calcula el área en kilómetros cuadrados (km²) de cada píxel en la imagen. Esto se logra mediante ee.Image.pixelArea(),
dividiendo por 1,000,000 para convertir de metros cuadrados a km².
Luego, agrega una banda a la imagen llamada 'sloperclass', que contiene las clases de pendiente.
Utiliza reduceRegion() para calcular la suma del área de cada clase de pendiente dentro de la región de interés definida por
"geometry".
Los resultados se agrupan por las clases de pendiente y se almacenan en la variable area_classified.
Exporta la imagen reclassificada de la pendiente del terreno (sloperclass) a Google Drive.
La imagen se recorta a la región de interés definida por "geometry" utilizando clip().
Se especifica una descripción para el archivo de salida.
La escala se establece en 30 metros por píxel.
maxPixels controla el número máximo de píxeles permitidos en la exportación.
Se definen dos listas: names que contiene las
etiquetas de las clases de pendiente y values que
contiene los valores asociados a cada clase. Esto
se utiliza para etiquetar las clases en la leyenda.
Se crea un panel de usuario (ui.Panel) que actuará
como la leyenda. Se establece su posición en la
esquina inferior izquierda del mapa y se ajusta el
tamaño y el espaciado.
Estos son elementos de texto que actúan como el
título y el subtítulo de la leyenda. Se establece el
estilo del texto, incluyendo el tamaño de fuente,
el margen y la negrita.
Se define una función llamada makeRow que
crea una fila de la leyenda. Cada fila consta de un
cuadro de color y una etiqueta de nombre.
En un bucle, se crea una fila para cada clase de
pendiente utilizando la función makeRow() y se
agrega al panel de la leyenda. Se utiliza la paleta
de colores slope_palette y las etiquetas de
nombres names definidas previamente.
Finalmente, la leyenda personalizada se agrega al
mapa.
¿Que hace el código?
Resultado
ee.Image(1): En primer lugar, se crea una nueva imagen en GEE con
todos sus píxeles inicializados en el valor 1. Esta será la imagen
resultante de la reclassificación de la pendiente.
.where(pendiente.gt(5).and(pendiente.lte(10)), 2): Aquí se utiliza el
método where() para reasignar valores en la imagen. Se toma la
imagen original de pendiente (pendiente) y se aplica una condición
utilizando .gt() (mayor que) y .lte() (menor o igual que). En este caso, se
está reasignando todos los píxeles cuyos valores de pendiente estén
entre 5 (grados) y 10 (grados) con el valor 2.
.where(pendiente.gt(10).and(pendiente.lte(15)), 3): Similar al paso
anterior, se reasignan los píxeles cuyos valores de pendiente estén
entre 10 (grados) y 15 (grados) con el valor 3.
.where(pendiente.gt(15).and(pendiente.lte(20)), 4): Continuando con el
patrón, se asignan valores de 4 a los píxeles cuya pendiente está entre
15 y 20 grados.
.where(pendiente.gt(20).and(pendiente.lte(25)), 5): Lo mismo ocurre
para los valores entre 20 y 25 grados, que se asignan como 5.
.where(pendiente.gt(25).and(pendiente.lte(45)), 6): Se siguen
asignando valores a intervalos de pendiente más altos, como 25 a 45
grados como 6.
.where(pendiente.gt(45).and(pendiente.lte(100)), 7): Finalmente, los
valores de pendiente mayores a 45 grados y menores o iguales a 100
grados se asignan como 7.
ee.Image.pixelArea(): Esto crea una imagen donde cada
píxel representa el área en metros cuadrados.
divide(1000 * 1000): Divide todos los valores de píxeles por
un millón para convertir el área de metros cuadrados a
kilómetros cuadrados.
.addBands(sloperclass): Agrega una banda a esta imagen
que contiene las clases de pendiente reasignadas
(sloperclass).
.reduceRegion(): Luego, se aplica una reducción en una
región de interés (geometry) para calcular la suma de
áreas cubiertas por cada clase de pendiente. Los
resultados se agrupan por el valor de la banda de clase de
pendiente y se almacenan en la variable area_classified.
Se imprime en la consola de GEE el área cubierta por cada
clase de pendiente en kilómetros cuadrados. Esto
proporciona información cuantitativa sobre la extensión
de cada categoría de pendiente en el área de interés.
Export.image.toDrive(): Esta funciónexporta la imagen de
pendiente reasignada (sloperclass) después de recortarla
a la región de interés (geometry) y especifica una
descripción para el archivo de salida.
scale: 30: Establece la resolución espacial en 30 metros por
píxel.
maxPixels: 1e12: Controla el número máximo de píxeles
permitidos en la exportación para evitar problemas de
memoria.
Pequeño apendice
https://code.earthengine.google.com/86aeb4f4877959682
6baf6db7448402f
Código del cálculo
https://code.earthengine.google.com/86aeb4f48779596826baf6db7448402f
https://code.earthengine.google.com/86aeb4f48779596826baf6db7448402f
Pequeño apendice
Créditos a Kapil Dev Adhikari, cuyo canal de YouTube profundiza en este cálculo de manera detallada:
https://www.youtube.com/watch?v=TrfPLd2ds7I&t=896s
Muchas gracias
por su atención