En esta sección, exploramos cómo usar
operadores lógicos para categorizar los valores
de bandas o índices de imágenes, creando así
imágenes categorizadas. Utilizamos la
implementación de umbrales, que implica
utilizar un valor umbral junto con operadores
lógicos para dividir la variabilidad de las
imágenes en categorías. Por ejemplo, podemos
utilizar esta técnica para identificar áreas de
vegetación en un mapa de NDVI, simplificando
la información para comprender mejor la
distribución de la vegetación en la superficie
terrestre. Esto puede ser útil para análisis como
la proporción de vegetación en una ciudad.
Las familias más ricas del sionismo en el siglo XXI.pdf
Capitulo 2 - Google Earth Engine - Imagenes
1. Sección 2. Umbralización, Máscaras
y Remapeo de Imágenes
Capitulo 2
cartografiadigital2023@gmail.com
Managua, Nicaragua
Fecha: 9/12/2023
Cartografía Digital: Tu Espacio de conocimientos de SIG
2. En esta sección, exploramos cómo usar
operadores lógicos para categorizar los valores
de bandas o índices de imágenes, creando así
imágenes categorizadas. Utilizamos la
implementación de umbrales, que implica
utilizar un valor umbral junto con operadores
lógicos para dividir la variabilidad de las
imágenes en categorías. Por ejemplo, podemos
utilizar esta técnica para identificar áreas de
vegetación en un mapa de NDVI, simplificando
la información para comprender mejor la
distribución de la vegetación en la superficie
terrestre. Esto puede ser útil para análisis como
la proporción de vegetación en una ciudad.
Sección 2. Umbralización, Máscaras
y Remapeo de Imágenes
DRAFT
(2023)
3. Inspecciona la imagen. Podemos observar que las áreas con vegetación son de un tono verde oscuro, mientras que las
ubicaciones sin vegetación son blancas y el agua aparece en rosa. Si utilizamos la herramienta Inspector para consultar
nuestra imagen, veremos que los parques y otras áreas forestales tienen un NDVI superior a aproximadamente 0.5. Por lo tanto,
tendría sentido definir las áreas con valores de NDVI superiores a 0.5 como forestales y aquellas por debajo de ese umbral como
no forestales.
Ahora definamos ese valor como un umbral y úsalo para categorizar nuestras áreas con vegetación.
El método "gt" pertenece a la familia de operadores booleanos, es decir, "gt" es una función que realiza una prueba en cada píxel
y devuelve el valor 1 si la prueba es verdadera y 0 en caso contrario. Aquí, para cada píxel en la imagen, se verifica si el valor de
NDVI es mayor que 0.5. Cuando se cumple esta condición, la capa "seaVeg" recibe el valor 1. Cuando la condición es falsa, recibe
el valor 0.
Utiliza la herramienta Inspector para explorar esta nueva capa. Si haces clic en una ubicación verde, el NDVI debería ser mayor
que 0.5. Si haces clic en un píxel blanco, el valor de NDVI debería ser igual o inferior a 0.5.
Otros operadores en esta familia booleana incluyen "menor que" (lt), "menor o igual que" (lte), "igual a" (eq), "no igual a" (neq),
"mayor o igual que" (gte) y otros.
// Crear una imagen de NDVI utilizando Sentinel 2.
var puntoSFO = ee.Geometry.Point(-122.2040, 47.6221);
var imagenColeccion = ee.ImageCollection('COPERNICUS/S2')
.filterBounds(puntoSFO)
.filterDate('2020-08-15', '2020-10-01');
var imagenSeattle = imagenColeccion.first();
var ndviSeattle = imagenSeattle.normalizedDifference(['B8', 'B4']);
// Mostrar el NDVI en el mapa.
Map.centerObject(puntoSFO, 10);
var paletaVegetacion = ['red', 'white', 'green'];
Map.addLayer(ndviSeattle, {
min: -1,
max: 1,
palette: paletaVegetacion
}, 'NDVI Ciudad');
// Mostrar el valor del NDVI en la consola.
print('NDVI Ciudad', ndviSeattle);
// Implement a threshold.
var seaVeg = ndviSeattle.gt(0.5);
// Map the threshold.
Map.addLayer(seaVeg,
{
min: 0,
max: 1,
palette: ['white', 'green']
},
'No bosque vs. Bosque');
Script traducido y ajustado
Sección 2. Umbralización, Máscaras
y Remapeo de Imágenes
DRAFT
(2023)
4. Creando Categorizaciones Complejas con .where
// Implementar .where.
// Crear una imagen inicial con todos los valores = 1.
var seaWhere = ee.Image(1)
// Utilizar clip para limitar el tamaño de la nueva
imagen.
.clip(ndviSeattle.geometry());
// Establecer todos los valores de NDVI menores
que -0.1 a 0.
seaWhere =
seaWhere.updateMask(ndviSeattle.lte(-0.1).not()).re
name("Water");
// Establecer todos los valores de NDVI mayores que
0.5 a 2.
seaWhere = seaWhere.where(ndviSeattle.gte(0.5),
2).rename("Forest");
// Agregar nuestra capa dividida en tres clases al
mapa.
Map.addLayer(seaWhere, {
min: 0,
max: 2,
palette: ['blue', 'white', 'green']
}, 'Agua, Sin bosque, Bosque');
Un mapa binario que clasifica el NDVI es muy útil. Sin embargo, existen
situaciones en las que puede ser necesario dividir su imagen en más de dos
categorías. Earth Engine proporciona una herramienta, el método "where", que
evalúa condicionalmente verdadero o falso en cada píxel según el resultado de
una prueba.
Esto es análogo a una declaración "if" comúnmente vista en otros lenguajes de
programación. Sin embargo, al programar para Earth Engine, evitamos el uso
de la declaración "if" en JavaScript, lo cual es importante destacar. Las
instrucciones "if" en JavaScript no se calculan en los servidores de Google y
pueden generar problemas graves al ejecutar su código. En efecto, los
servidores intentan enviar toda la información a ser ejecutada a su propio
navegador de computadora, que no está preparado para tareas tan enormes.
En su lugar, utilizamos la cláusula "where" para lógica condicional.
Supongamos que, en lugar de simplemente dividir las áreas forestales de las no
forestales en nuestro NDVI, deseamos dividir la imagen en áreas probables de
agua, no forestales y forestales. Podemos utilizar "where" y umbrales de -0.1 y 0.5
para lograrlo. Comenzaremos creando una imagen utilizando "ee.Image". Luego
recortamos la nueva imagen para que cubra la misma área que nuestra capa
"ndviSeattle".
Sección 2. Umbralización, Máscaras y Remapeo de Imágenes
Script traducido y ajustado
DRAFT
(2023)
5. Puedes utilizar la herramienta Inspector para
observar que el área negra está enmascarada y
que el área blanca tiene un valor constante de 1.
Esto significa que los valores de datos están
asignados y disponibles para el análisis solo
dentro del área blanca.
Ocultando Valores Específicos en una Imagen
El enmascaramiento de una imagen es una técnica
que permite eliminar áreas específicas de una
imagen, aquellas que están cubiertas por la
máscara, evitando que se muestren o analicen. En
Earth Engine, tienes la capacidad de visualizar la
máscara actual y modificarla según tus
necesidades.
Sección 2. Umbralización, Máscaras y Remapeo de Imágenes
Script traducido y ajustado
// Aplicar enmascaramiento.
// Ver la máscara actual de la capa seaVeg.
Map.centerObject(puntoSFO, 9);
Map.addLayer(seaVeg.mask(), {}, 'Máscara de seaVeg');
DRAFT
(2023)
6. Ahora, supongamos que solo queremos mostrar y realizar análisis en las áreas
forestales. Vamos a enmascarar las áreas no forestales de nuestra imagen.
Primero, creamos una máscara binaria utilizando el método "equals" (eq).
Al crear una máscara, estableces los valores que deseas ver y analizar como
un número mayor que 0. La idea es configurar los valores no deseados para
que tengan el valor 0. Los píxeles que tenían valores de 0 quedan
enmascarados (en la práctica, no aparecen en la pantalla en absoluto) una
vez que utilizamos el método "updateMask" para agregar estos valores a la
máscara existente.
Desactiva todas las demás capas. Puedes observar cómo la capa
"maskedVeg" ahora ha enmascarado todas las áreas no forestales.
Mapea la máscara actualizada para la capa y podrás comprender por qué se
ha realizado esta acción
Script traducido y ajustado
// Ver la máscara actual de la capa seaVeg.
Map.centerObject(puntoSFO, 9);
Map.addLayer(seaVeg.mask(), {}, 'Máscara de
seaVeg');
// Crear una máscara binaria de áreas no forestales.
var mascarNoBosque = seaVeg.eq(1);
// Actualizar la máscara de seaVeg con la máscara no
forestal.
var seaVegEnmascarado =
seaVeg.updateMask(mascarNoBosque);
// Mapear la capa de vegetación enmascarada.
Map.addLayer(seaVegEnmascarado,
{
min: 0,
max: 1,
palette: ['green']
},
'Capa de Bosque Enmascarado');
// Mostrar el valor del NDVI en la consola.
print('NDVI enmascarado', seaVegEnmascarado);
Sección 2. Umbralización, Máscaras y Remapeo de Imágenes
DRAFT
(2023)
7. Reasignación de Valores en una Imagen
La reasignación toma valores específicos en una imagen y les asigna un valor diferente. Esto
es especialmente útil para conjuntos de datos categóricos, incluidos aquellos de los que
leíste en el Capítulo F1.2 y aquellos que hemos creado anteriormente en este capítulo.
Utilicemos el método de reasignación para cambiar los valores de nuestra capa "seaWhere".
Ten en cuenta que, dado que estamos cambiando el valor intermedio para que sea el más
grande, también deberemos ajustar nuestra paleta de colores.
Usa el inspector para comparar los valores entre nuestro "seaWhere" original (mostrado
como Agua, No Bosque, Bosque) y el "seaRemap", marcado como "Valores Reasignados".
Haz clic en un área boscosa y deberías ver que los "Valores Reasignados" deberían ser 10 en
lugar de 2.
Script traducido y ajustado
// Implementar reasignación.
// Reasignar los valores de la capa
seaWhere.
var seaRemap = seaWhere.remap([0, 1, 2],
// Valores existentes.
[9, 11, 10]); // Valores reasignados.
Map.addLayer(seaRemap,
{
min: 9,
max: 11,
palette: ['azul', 'verde', 'blanco']
},
'Valores Reasignados');
Sección 2. Umbralización, Máscaras y Remapeo de Imágenes
DRAFT
(2023)