protocolo para la construcción de mosaicos libres de nube
TRANSCRIPT
Título de la Publicación: Texto Normal | 1.
Protocolo para la construcción de mosaicos libres de nube a partir de
imágenes satelitales LANDSAT
Publicado por Deutsche Gesellschaft für Internationale Zusammenarbeit (GIZ) GmbH
Domicilios de la empresa
Bonn y Eschborn, Alemania Programa Regional Reducción de Emisiones por Deforestación y Degradación de Bosques en Centroamérica y República Dominicana (REDD/CCAD-GIZ) Agencia de la GIZ Bulevar Orden de Malta, Casa de la Cooperación Alemana Urbanización Santa Elena, Antiguo Cuscatlán, La Libertad El Salvador, C.A. Tel +503 2121-5100 Fax +503 2121-5101 E-Mail [email protected] www.giz.de www.reddccadgiz.org Versión Octubre 2018 Diseño Oscar Rodríguez, Asesor Técnico en Comunicación Estratégica Programa Regional REDD/CCAD-GIZ [email protected] Créditos fotográficos Todas las fotos: Programa Regional REDD/CCAD-GIZ Autores Omar Orellana Díaz Consultor, Especialista en Tecnologías de Información Geográfica Supervisión Abner Jiménez, Especialista Sectorial Programa Regional REDD/CCAD-GIZ [email protected] Componente Monitoreo Forestal La GIZ es responsable del contenido de la presente publicación. El Programa Regional Reducción de Emisiones de la Deforestación y Degradación de Bosques en Centroamérica y República Dominicana (REDD III) es un programa financiado por el Ministerio Federal de Desarrollo Económico y Cooperación de Alemania (BMZ) y ejecutado por la GIZ en coordinación con la Comisión Centroamericana de Ambiente y Desarrollo (CCAD).
Protocolo para la construcción de mosaicos libres de nube a partir de imágenes satelitales Landsat By Programa Regional Programa Regional Reducción de Emisiones por Deforestación y Degradación de Bosques en Centroamérica y República Dominicana (REDD/CCAD-GIZ) is licensed under a Creative Commons Reconocimiento-NoComercial 4.0 Internacional License Creado a partir de la obra en www.reddccadgiz.org
TABLA DE CONTENIDO
I. ACRÓNIMOS .......................................................................................................... 3
II. Introducción .............................................................................................................. 4
III. RESUMEN Y DESCRIPCIÓN DEL SCRIP ........................................................ 5
IV. DIAGRANA DE FLUJO DE PROCESO ............................................................. 6
V. METOLOGÍA PAR LA CONSTRUCIÓN DE MOSAICOS LIBRES DE NUBE . 7
5.1. Subir límite del área de estudio a la nube .......................................................... 7
5.1.1. Conversión de un shapefile a KML ............................................................ 7
5.1.2. Subir capas cartográficas como Fution table en Google Drive .................. 7
5.1.3. Hacer público un archivo Fution table (tabla dinámica) en Google Drive . 9
5.1.4. Subir archivos geoespaciales en formato shapefile a la nube de GEE ....... 9
5.1.5. Hacer público un archivo de la nube de GEE en el editor de código ....... 11
5.2. Llamar archivos subidos en la nube al script en editor de código ................... 11
5.2.1. Obtener enlace de archivos fution table (google drive) ............................ 11
5.2.2. Cargar el archivo Tabla dinámica (fution table) al script ......................... 12
5.2.3. Obtener enlace de archivos shapefile subidos en la nube de GEE ........... 13
5.2.4. Cargar el archivo shapefile (Como Tabla) de la nube de GEE al script ... 13
5.3. Visualizar los límites del área de estudio en el visor del editor de código ...... 13
5.4. Guardar el script ............................................................................................... 15
5.5. Llamar una colección de imágenes Landsat al script ...................................... 16
5.6. Filtrar una colección de imágenes ................................................................... 17
5.7. Imprimir o mostrar la información de una variable ......................................... 18
5.8. Aplicación de algoritmo para construcción de mosaicos con corrección
atmosférica (TOA) y enmascaramiento de nubes....................................................... 19
5.9. Corte de Mosaico con el límite de área de estudio .......................................... 20
5.10. Visualización del mosaico ............................................................................ 20
5.11. Centrar el área de estudio en el visualizador ................................................ 21
Manual Técnico
5.12. Descargar el mosaico a la nube de Google Drive ........................................ 23
5.13. Script completo ............................................................................................ 25
VI. BIBLIOGRAFÍA ................................................................................................. 28
VII. ANEXOS ............................................................................................................. 29
TABLA DE FIGURAS
Figura 1. Proceso de conversión de shapefile a kml ........................................................ 7 Figura 2. Pasos para conectar la aplicación Fution Table en Google Drive ..................... 8
Figura 3. Pasos para subir un archivo kml a fution table en google drive........................ 8 Figura 4. Pasos para hacer público un archivo de fution table en la nube de Google Drive
.......................................................................................................................................... 9 Figura 5. Pasos para subir un archivo shapefile a la nube de GEE ................................ 10 Figura 6. Pasos para hacer público un archivo en la nube de GEE ................................ 11 Figura 7. Pasos para la obtención de enlace de un archivo de fution table de Google Drive
........................................................................................................................................ 12 Figura 8. programar la carga de un archivo de un límite en formato de tabla dinámica al
script ............................................................................................................................... 12 Figura 9. Pasos para la obtención de enlace de un archivo shapefile de la nube de GEE
........................................................................................................................................ 13
Figura 10. programar la carga de un archivo de un límite en formato shapefile al script
........................................................................................................................................ 13
Figura 11. Pasos para copiar el código de un color ........................................................ 14 Figura 12. Programación para agregar límite de área de estudio a la vista del editor de
código ............................................................................................................................. 14 Figura 13. Ejemplo de visualización de los límites del área de estudio ......................... 15 Figura 14. Pasos para guardar un script .......................................................................... 15
Figura 15. Ejemplo de búsqueda de una colección de imágenes.................................... 16
Figura 16. Visualización de la información de una colección de imágenes ................... 16 Figura 17. Importación directa de una colección de imágenes....................................... 17 Figura 18. Llamar una colección de imágenes mediante el ID de la colección ............. 17 Figura 19. Filtro de una colección de imágenes ............................................................. 18
Figura 20. Imprimir la información de un filtro de imágenes ........................................ 18 Figura 21. Información de un filtro de imágenes ........................................................... 18 Figura 22. Construcción de mosaico libre de nube sin cortar ........................................ 19
Figura 23. Mosaico cortado con el límite del área de estudio ........................................ 20 Figura 24. Programación para visualizar el mosaico en combinación de bandas infrarojo
........................................................................................................................................ 20 Figura 25. Vista del mosaico libre de nubes ................................................................... 21 Figura 26. Programación para centrar el límite del área de estudio en la ventana de
visualización ................................................................................................................... 21 Figura 27. Ejemplo de centrado del área de estudio ....................................................... 22 Figura 28. Programación para la descarga del mosaico libre de nube ........................... 23 Figura 29. Mosaico listo para ser exportado a la nube de GD........................................ 24
Figura 30. ventana de características de exportación del mosaico ................................. 24
I. ACRÓNIMOS
FAO: Organización de las Naciones Unidas para la Alimentación y la Agricultura
GD: Google Drive
GEE: Google Earth Engine
IDE: Ambiente de Desarrollo Integrado
KML: Keyhole Markup Language
LANDSAT: LAND = tierra y SAT = satélite
ND: Niveles Digitales
REDD+ = Reducción de Emisiones por Deforestación y Degradación de los Bosques
SIG: Sistema de Información Geográfica
TIF: Tagged Image Format (formato de imagen)
TOA: Tope de la Atmosfera
ZIP: Formato de Compresión de Perdidas
II. INTRODUCCIÓN
El monitoreo de los bosques se ha convertido en un tema clave en los procesos de
elaboración de políticas de desarrollo y ambiente, tanto a niveles nacionales como
internacionales; esto, mediante la recopilación, análisis y divulgación de los datos
relacionados con los bosques y la producción de información y conocimiento a intervalos
regulares que permitan la detección de los cambios y dinámica de las tierras forestales en
el tiempo (FAO, 2012).
El éxito del monitoreo implica generar datos confiables a un bajo costos y con poco
recurso para lograr la sostenibilidad de estos procesos en los países en vías de desarrollo.
Lograr este desafío implica el uso de nuevas técnicas de procesamientos de información
espacial y el uso de nuevas herramientas que requieran menos tiempo y esfuerzo para el
logro de resultados de calidad en tiempo casi real. Uno de los desafíos en el monitoreo es
que se tiene que hacer uso de imágenes satelitales para cubrir grandes territorios y estás
a su vez presentan el reto de requerir grandes cantidades de tiempo para su procesamiento;
por otra parte, los países tropicales presentan el problema de contar con mucha nubosidad
durante casi todo el año y encontrar la manera de solucionar este problema en las
imágenes ha sido el reto más grande a las que se han enfrentado los especialistas en esta
metería.
En respuesta a estas necesidades surge la iniciativa de crear Google Earth Engine (GEE),
una plataforma informática que permite a los usuarios ejecutar análisis geoespaciales en
la infraestructura de Google. Esta plataforma de seguimiento online y libre ha puesto a
disposición del público colecciones numerosas de imágenes satelitales actuales e
históricas a nivel mundial, almacenando datos satelitales en petabytes (1015 bytes) y
permitiendo que las herramientas de alto rendimiento analicen e interpreten ésta en
tiempos reducidos. Por otra parte, la integración de múltiples algoritmos especializados
ha hecho posible, por primera vez en la historia, procesar vastas cantidades de imágenes
satelitales de manera rápida y precisa para obtener productos de calidad en tiempo récord
(«Google Earth Engine», 2018).
Este manual detalla el uso de esta herramienta para la construcción de mosaicos libres de
nube, mismas que posteriormente pueden ser utilizados para generar de manera más
eficiente múltiples tareas como mapas de cobertura forestal y cambios de uso de suelo.
III. RESUMEN Y DESCRIPCIÓN DEL SCRIP
El presente manual describe todo el proceso necesario para construir un mosaico libre de
nubes con imágenes satelitales del sensor Landsat, los requerimientos para este script son
contar con una cuenta de correo electrónico de Google (Gmail) y una cuenta de Google
Earth Engine, por otra parte, se asume que el usuario ya ha leído el manual de
Introducción a Google Earth Engine y el de Fundamentos básicos de Java Script, de la
misma manera la única capa de entrada requerida para este script es un límite del área de
estudio que como usuario le interese o también puede utilizar el límite que ya sea en
formato shapefile o kml que en este script se proporciona, misma capa que será utilizada
como límite de geográfico del mosaico final.
La construcción de este script se basa prácticamente en hacer uso de un límite del área de
estudio proporcionado por el usuario y una colección de imágenes del sensor landsat
integrado en las bases de datos de GEE, para poder construir de todas estas imágenes de
una determinada fecha, un solo mosaico libre de nubes, esto mediante la utilizando
diferentes constructores de java script y sobre todo el uso de un algoritmo especializado
para procesamiento de imágenes Landsat que permite construir mosaicos corrigiendo el
problema de nubosidad y la corrección de las imágenes con reflectancia al tope de la
atmósfera (TOA). por último, el script permite al usuario una forma para descargar el
mosaico a la nube de Google Drive (GD) para ser utilizado en cualquier otro Sistema de
Información Geográfica (SIG)
IV. DIAGRANA DE FLUJO DE PROCESO
Satélite
Recepción
de imágenes
crudas
Colecciones
de imágenes
Internet
Plataforma
de Google
Earth Engine
Servidores
de Google
Algoritmos
de GEE
Usuario
especialista Mosaico
libre de
nubes
Mosaico descargado
utilizado por otros
usuarios de SIG
Límite de área
de estudio
Nube de
Drive
V. METOLOGÍA PAR LA CONSTRUCIÓN DE MOSAICOS
LIBRES DE NUBE
5.1. Subir límite del área de estudio a la nube GEE permite administrar y utilizar datos subidos a la nube, esta puede ser la de Google
Drive o la propia nube de GEE. Para subir el límite a la nube de Google Drive es necesario
que el mismo este en formato KML.
5.1.1. Conversión de un shapefile a KML
Cuando se trata de entidades geográficas como shapefiles, el primer paso a realizar es
convertir este formato a kml utilizando cualquier programa de GIS para subirlo a Google
Drive mismo que lo convierte a Fuction Table. Utilizando QGIS es muy simple ya que
solamente es volver a guardar el archivo shapefile (clic derecho > guardar como) y elegir
la extensión kml en el archivo de salida.
Figura 1. Proceso de conversión de shapefile a kml
5.1.2. Subir capas cartográficas como Fution table en Google Drive
Debido a que los límites administrativos incorporados en Google Earth Engine están a
una escala mundial y suelen tener errores, es necesario agregar el límite exacto del área
de estudio sobre la cual se desea trabajar. Para ello GEE permite un formato llamado
Fution table (tablas dinámicas), mismo que debe estar guardado en la nube de Google
Drive. https://drive.google.com/drive/
Los pasos son los siguientes: primero se debe acceder al sitio de Google Drive (GD) y
acceder con la cuenta de correo de Gmail. Cuando se genera una tabla dinámica por
primera vez en GD es necesario agregar la misma a los formatos de archivos que aparecen
por defecto conectándola de las aplicaciones contenidas en GD.
Figura 2. Pasos para conectar la aplicación Fution Table en Google Drive
Una vez conectada la aplicación ir a Google Drive y después ir al ícono nuevo y
seleccione Más y posteriormente a Tablas dinámicas de google.
En la ventana que se despliega ir al icono Selecciona archivo y luego
buscar en la carpeta donde se tiene el archivo de KML, seleccionarlo por último 2 veces
siguiente y finalizar .
Figura 3. Pasos para subir un archivo kml a fution table en google drive
Escribir aquí
Luego dar Enter 1
2
3
4
5
1
2
3
4
5, 6 y 7
5.1.3. Hacer público un archivo Fution table (tabla dinámica) en Google
Drive
Cuando se sube un achivo como tabla dinámica, sólamanete puede ser utilizado por el
dueño de la cuenta de GD, sin embargo, en GEE se acostumbra a compartir el link de los
script ya sea para solicitar el apoyo por alguien o para compartir nuestros trabajos a otros
usuarios. En tal sentido, es necesario convertir el achivo privado a uno público para que
sea utilizable por otros, para ello debemos cambiar las condiciones de acceso; entrando
al archivo (doble clic) e ir al icono a share (compartir) y luego en Quién tiene
acceso se debe cambiar la configuración seleccionando Activado: público en la web.
Figura 4. Pasos para hacer público un archivo de fution table en la nube de Google Drive
5.1.4. Subir archivos geoespaciales en formato shapefile a la nube de GEE
Para cargar y administrar conjuntos de datos geoespaciales,
en GEE se debe utilizar el Administrador de Activos en el
Editor de Código. El Administrador de activos se encuentra
en la pestaña Activos en el lado izquierdo del Editor de
código donde se pueden subir archivos en formato ráster
1 2
3
4
5
con la extensión .TIF y formato vectorial con la extensión shapefile .shp ya sea en
achivos individuales o como un archivo comprimido como .ZIP.
Los archivos .shp se sube como tablas; para ello desde el Editor de Código1, hacer clic
en el botón new , luego seleccionar carga de tabla. Earth Engine presenta un
cuadro de diálogo de carga en que se debe hacer clic en el botón SELECCIONAR
y luego navegar hasta un archivo Shapefile o Zip que contenga un Shapefile en su sistema
de archivos local de su computadora.
Dado que un archivo shapefile está conformado por varios archivos con diferente
extensión, es necesario asegúrese de seleccionar al menos los archivos los “.dbf”, “.shx”
y, opcionalmente, también el archivo “.prj”. GEE establecerá por defecto las coordenadas
WGS84 si no se proporciona un archivo “.prj”. Si está cargando un archivo .ZIP,
asegúrese de que contenga solo un Shapefile (conjunto de .shp, .dbf, .shx, .prj, etc.). Los
formatos que soporta el administrador de datos y que también pueden subirse en un solo
conjunto de una tabla son: ".shp", ".shx", ".dbf", ".cpg", ".fix", ".prj", ".qix",
".sbn", ".shp.xml" (GEE, 2018b). De los archivos del shapefile entonces debe excluirse
el “.sbx” y otros generados por los SIG
Figura 5. Pasos para subir un archivo shapefile a la nube de GEE
1 El enlace para el editor de código es el siguiente: https://code.earthengine.google.com/
1
2
3
4
5
Aquí se mostrarán
todos los archivos
que seleccionó del
shapefile
Cuando el shapefile se
haya subido, en tareas
mostrará un check y el
tiempo en subirlo
5.1.5. Hacer público un archivo de la nube de GEE en el editor de código
Sus activos cargados en GEE son inicialmente privados, pero se pueden compartir para
que sean utilizables por otros usuarios. Para ello siempre vamos al administrador de
bienes (assets) y buscamos el archivo; en este caso como es Shepfile aparece con este
ícono damos doble clic y se nos despliega una ventana y asignamos un check en
cualquiera puede leer (Anyone can read) y por último clic en hecho (Done)
Figura 6. Pasos para hacer público un archivo en la nube de GEE
5.2. Llamar archivos subidos en la nube al script en editor de
código
Las capas subidas y utilizadas en este script son:
Límite del área de estudio con buffer (formato fution table o tabla dinámica)
5.2.1. Obtener enlace de archivos fution table (google drive)
Para llamar archivos subidos como fution table y utilizarlos en GEE, es necesario obtener
un enlace del archivo que está en la nube Google Drive. Para ello entramos al archivo del
cual se quiere obtener el enlace, luego entramos a “File” y después a “About this table”,
se despliega una ventana con la información de esa tabla dinámica en donde se puede
1 2
3
4
observar el identificador “Id”; se debe copiar el código del archivo para luego pegarlo en
el editor de código de GEE
Figura 7. Pasos para la obtención de enlace de un archivo de fution table de Google Drive
5.2.2. Cargar el archivo Tabla dinámica (fution table) al script
Se debe crear una colección de figuras (FeatureCollection) a partir de la tabla dinámica
de la nube de GD, dado a que son grupos de características relacionadas. Una vez teniendo
el ID de la table creamos el código empezando por crear en nombre de la variable, en este
caso le llamaremos limite 1, después para llamar toda colección tipo tabla se utiliza el
constructor ee.FeatureCollection esto permite habilitar operaciones adicionales en todo el
conjunto, como el filtrado, la clasificación y el procesamiento cuando de ser requerido.
Después de escribir el constructor entre paréntesis y comillas se debe pegar el ID
anteponiendo ft (tabla) y dos puntos (“ ft:ID”).
Figura 8. programar la carga de un archivo de un límite en formato de tabla dinámica al script
1
Doble clic
en el archivo
3
2
4
Nombre de
la variable
Constructor de
la colección
ID del límite
5.2.3. Obtener enlace de archivos shapefile subidos en la nube de GEE
En la sección de activos (assets), se encuentran todos los archivos que se hayan subido a
la nube de GEE, para copiar el ID de acceso se bebe dar doble clic en el archivo del cual
se quiere obtener el enlace y copiar el mismo de la sección Table ID
Figura 9. Pasos para la obtención de enlace de un archivo shapefile de la nube de GEE
5.2.4. Cargar el archivo shapefile (Como Tabla) de la nube de GEE al
script
Una vez que hemos copiado el ID de la tabla del paso anterior declaramos la variable o
nombre de cómo será recocido ese límite en este caso “Limite2”, luego “=” y luego el
constructor ee.FeatureCollection y por último entre paréntesis y comillas (“ ft:ID”)
pegamos el ID de tabla, por último punto y coma “;” para indicar que hasta ahí llega esa
parte del código.
Figura 10. programar la carga de un archivo de un límite en formato shapefile al script
5.3. Visualizar los límites del área de estudio en el visor del editor
de código Par cargar los límites al visualizador se utiliza el constructor Map.addLayer mismo que
considera los siguientes argumentos:
Map.addLayer (eeObject , visParams , nombre , mostrador , opacidad )
Argumentos:
eeObject: Es el objeto para añadir al mapa en este caso cualquiera de los límites que se
agregaron.
1
2
3
visParams: son los parámetros de visualización. Para Features y FeatureCollections, la
única clave admitida es "color", como una cadena de color CSS 3.0 o una cadena
hexadecimal en formato "RRGGBB". Este código de color se puede obtener presionando
el ícono de posición en la izquierda de la ventana de visualización.
Figura 11. Pasos para copiar el código de un color
Nombre: Es el nombre con el que se quiere que se muestre la capa. De no escribirse el
editor le asignará por defecto "Layer N".
Mostrado: Una opción para indicar si la capa debe estar o no activada de forma
predeterminada.
Opacidad: Es la asignación de un número de 0 a 1 para opcar o resaltar la capa en el
visor. De nos escribirse el editor asume 1 por defecto.
Figura 12. Programación para agregar límite de área de estudio a la vista del editor de código
Constructor
Objeto para
visualizar
Color con que
lo mostrará
1 2
3
Clic en el icono
de configuración
Copiar el código
sin el signo #
Nombre de
visualización
No
mostrar
Opacidad
Para que el editor de código nos muestre el resultado corremos el script dando clic en
Run, luego vamos al visor de Capas (Layers) y seleccionamos la capa a visualizar.
Figura 13. Ejemplo de visualización de los límites del área de estudio
5.4. Guardar el script Los scripts se pueden guardar para seguir siendo utilizados y no empezar de cero, para
ello damos clic en Save y se despliega una ventana donde se debe escribir el
nombre con que deseamos que se guarde. Y en la sección de descripción de mamera
opcional nos permite redactar algo que describa script. Por último, dar clic en ok y una
vez guardado aparecerá en la sección de Scripts. Cuando se ha cerrado el editor de código
y se vuelve acceder al mismo, el script se abre dando doble clic sobre él.
Figura 14. Pasos para guardar un script
1
2 3
4
5 6
1
2
3
4
5
5.5. Llamar una colección de imágenes Landsat al script
Una colección de imágenes es una pila o serie temporal de imágenes. GEE además de
cargar una colección usando un ID de sus colecciones, también tiene métodos para crear
colecciones de imágenes. El constructor ee.ImageCollection() o el método de
conveniencia ee.ImageCollection.fromImages() crean colecciones de imágenes a partir
de listas de imágenes. También puede crear nuevas colecciones de imágenes fusionando
las colecciones existentes (GEE, 2018a). A continuación, se muestra cómo llamar las
diferentes colecciones de imágenes de Landsat.
Para conocer el nombre de una colección, se escribe el nombre del sensor del cual se
quieren obtener colecciones en el buscador en la parte superior del editor de código. Y el
mismo nos mostrará la disponibilidad de colecciones.
Figura 15. Ejemplo de búsqueda de una colección de imágenes
Si damos clic en una de las colecciones, ejemplo “USGS Landsat 8 Collection 1 Tier 1
Raw Scenes” se nos despliega una ventana con toda la información de esa colección
Figura 16. Visualización de la información de una colección de imágenes
v
Para llamarla al script tenemos dos opciones, primera es dando clic en importar de la
ventana desplegada y automáticamente nos aparece en la parte superior de nuestro script.
Figura 17. Importación directa de una colección de imágenes
La segunda es llamándola mediante el código ID con el que está identificada y escribiendo
el constructor ee.ImageCollection para llamar colecciones. Como se muestra en los
siguientes ejemplos de colecciones.
Figura 18. Llamar una colección de imágenes mediante el ID de la colección
5.6. Filtrar una colección de imágenes Dado a que las colecciones están disponibles para un gran lapso de tiempo, para todo el
mundo y con todo tipo de nubosidad, es necesario filtrarlas para el rango de fecha de
interés, para un límite de área de estudio requerido y por un porcentaje de nubosidad para
que el mosaico final no se vea muy afectado por sombras y nubes. Pueden aplicarse otros
filtros sin embargo estos son los más básicos y necesarios para esta tarea.
Para aplicar este filtro se utilizan 3 constructores
.filterDate: Para filtrar las fechas ( se escribe la fecha inicial, coma “,” y después la final),
en este caso se usará un año hacia el pasado y casi un año hacia el futuro del mosaico que
se quiere construir para que tenga más disponibilidad de imágenes a elegir.
.filterBounds: Para filtrar por un área geográfica (se llama el nombre de la variable que
contiene el límite del área de estudio)
.filterMetadata: Para filtrar por información de los metadatos de las imágenes (nubosidad
en este caso). Este requiere de 3 elementos, primero el nombre de la variable que desea
filtrar, luego un operador matemático en letras y por último el valor de esa variable.
v
v
v
En conjunto el filtro consiste en, primero se declara la variable (ej. Filtro2017_l8), luego
el signo igual “=” y luego el nombre de la colección a filtrar (Landsat_8_2),
posteriormente se escribe cada constructor de filtros con sus variables entre paréntesis y
comillas ya sea simples o compuestas.
Figura 19. Filtro de una colección de imágenes
5.7. Imprimir o mostrar la información de una variable Para conocer la información de una variable es necesario pedirle al editor de código que
imprima esa información, ejemplo de ello queremos conocer la información del filtro
anterior entonces utilizamos el constructor print y luego entre paréntesis el nombre del
filtro (variable de la que necesitamos conocer información).
Figura 20. Imprimir la información de un filtro de imágenes
El resultado de la impresión lo mostrará a la derecha del editor de código, en este caso
muestra el número de imágenes encontradas con estas características (267), el tipo de
información que está mostrando (Colección de Imágenes) y toda la información
contenida, el identificador, como está la información (en bandas), las propiedades, ect.
Lo mismo se puede hacer para conocer la información de cualquier variable del script
Figura 21. Información de un filtro de imágenes
v
5.8. Aplicación de algoritmo para construcción de mosaicos con
corrección atmosférica (TOA) y enmascaramiento de nubes GEE contiene en su base de datos una serie de algoritmos que permiten construir
mosaicos libres de nubes, el principio básico de estos algoritmos consiste en escoger el
mejor pixel de una colección de imágenes para construir la nueva imagen o mosaico.
La información capturada por el sensor es radiación electromagnética proveniente de la
luz del sol reflejada sobre la superficie terrestre, más la radiancia de la energía dispersada
y reflejada por la atmósfera. Esta información de intensidad es transformada y
almacenada en una representación discreta de números digitales (ND) con escalas
diferenciadas de bits que pueden ser 8, 12 y 16 bits, etc.
Dado a que las condiciones atmosféricas distribuidas en el espacio son diferentes y
afectan la energía reflejada que captura el sensor guardada en ND, es necesario convertir
los mismos a datos con una escala espectral normalizada. Para ello se transforman los ND
a valores de radiancia y éstos a valores de reflectividad en el tope de la atmósfera (TOA).
Este proceso lo realiza de manera automática el algoritmo
“ee.Algorithms.Landsat.simpleComposite”. Este algoritmo utiliza dos algoritmos
intrínsecos como el “SimpleLandsatCloudScore” para la calibración TOA y el
“LandsatPathRowLimit” para seleccionar las escenas menos nubladas; posteriormente
utiliza como parámetros la colección de imágenes, un percentil de los valores de los
pixeles con los que formará el mosaico, un porcentaje de nubosidad de las imágenes
utilizadas y una cantidad máxima de imágenes superpuestas para construir el mosaico
(GEE, 2016).
Figura 22. Construcción de mosaico libre de nube sin cortar
Nombre de
la variable
Algoritmo de corrección
atmosférica y nubosidad
Colección
filtrada de la que
se creará el
mosaico
Percentil del valor
de los pixeles que
elegirá para
construir cada
nuevo pixel que
conformaran el
mosaico
Porcentaje máximo de
nubosidad por pixel
que construya. Si
existe disponibilidad
Cantidad máxima de
imágenes superpuestas
para construir cada
pixel para el mosaico
5.9. Corte de Mosaico con el límite de área de estudio Dado a que el mosaico es construido con todas las escenas que colindan con el límite del
área de estudio es necesario cortar el mismo por donde pasa él límite para eliminar las
áreas extras de los mosaicos.
Para ello se utiliza el constructor .clip y el límite del área de estudio.
Figura 23. Mosaico cortado con el límite del área de estudio
5.10. Visualización del mosaico Para ver el mosaico en la ventana de visualización es necesario configurar los parametros
de visualización deseados entre ellos la combinación de bandas, la gama de valores para
la visualización, el nombre con el se quiera que se vea en la seccion de capas (Layers) del
visualizador, y el mostrador (falso para que no lo cargue de un solo).
Figura 24. Programación para visualizar el mosaico en combinación de bandas infrarojo
Nombre de la
variable a declarar
Mosaico
por cortar Constructor
para cortar
Variable del
límite del área
de estudio
Constructor de
visualizador
de capas
Mosaico para
visualizar
Configuración de
combinación de
bandas a visualizar
Rango de valores
sobre los cuales
debe concentrarse
la gama para
visualizar
Nombre de
salida o que
mostrará en
las capas del
visualizador
Mostrador, en este
caso que no lo
marque en las capas
del visualizador de
forma automática.
Figura 25. Vista del mosaico libre de nubes
5.11. Centrar el área de estudio en el visualizador Existe la opción de que cada vez que se corra el script muestre toda el área de estudio,
esto ayuda a que si se trabaja en un área pequeña que nos cuesta ubicar no sea necesario
estar tratando de encontrarla, sino que el script nos la muestre de manera automática
cada vez que se corra; o también para no estar de manera manual buscando el sitio de
estudio.
Figura 26. Programación para centrar el límite del área de estudio en la ventana de visualización
Constructor
para centrado
de capas
Capa u
objeto a
centrar
Zoom o
acerca
miento
Entre más grande el número más
acerca las capas en el visualizador
Figura 27. Ejemplo de centrado del área de estudio
5.12. Descargar el mosaico a la nube de Google Drive Para descargar un mosaico de imágenes es necesario exportarlo a la nube de GD antes de
descargar a nuestra computadora, para ello se utiliza el constructor Export.image.toDrive
mismo que exporta el mosaico en base a los parámetros de salida que se le programen a
la nube de GD. Primero se llama el mosaico a descargar y de manera opcional se pueden
seleccionar las bandas que desea descargar para que no pese mucho al descargarlas todas
ya que a veces no se necesitan, sin embargo si se quieren descargar todas las bandas
entonces no debe escribirse el seleccionado de bandas, después se le escribe la descripción
que es el nombre que debe mostrar en las tareas de descarga y después el nombre del
archivo que será el mismo con el que se descargará a la nube de GD, por último se asigna
la escala de descarga (tamaño de pixel) y el máximo de pixeles a descargar, ya que si no
se le escribe este dato, el programa por defecto tiene un límite bajo de cantidad de pixeles
y no permite descargar mosaicos grandes.
NOTA: al momento de correr por última vez el script para descargar el mosaico es
necesario que este se va completo en el visualizador ya que el exportador asume que
solamente debe descargar lo que muestra la pantalla de visualización, para esto si es
necesario se debe desactivar el centrador de objetos anteponiendo dos plecas “//” para
que, de manera manual, ubiquemos el mosaico en la pantalla y correrlo de nuevo para
descargarlo tal como deseamos.
Figura 28. Programación para la descarga del mosaico libre de nube
Constructor
para exportar
mosaico
Mosaico para
descargar
Selección de
bandas a
descargar
Configuración de
máximo de pixeles
a descargar en el
mosaico
Escala o tamaño de
pixel del mosaico
Nombre con el que
se exportará el
mosaico a GD
Nombre que
mostrará en las
tareas (donde se
debe correr para
descargar)
Una vez que se haya programado la sección de descarga o exportación nos mostrará el
archivo en tareas (Tasks) el achivo listo para descargar donde debemos de dar clic en
RUN
Figura 29. Mosaico listo para ser exportado a la nube de GD
Una vez dando clic en RUN se nos mostrará una nueva ventana con la información
del mosaico a descargar, donde debemos dar clic en Run y el mosaico empezará a
descargarse. Una vez finalizada la descarga puede ir a la nube de GD y descargar el
archivo que se exportó
Figura 30. ventana de características de exportación del mosaico
v v
1
2
5.13. Script completo A continuación, se puede visualizar el script completo como imágen
A continuación, se muestra script completo como texto
//SECCION A
//Esta sección es la de generación de mosaicos libres de nube
//Ir a Sección 2 para empezar la parte específica de clasificación de cobertura
//CARGAR LOS LÍMITES DEL ÁREA DE ESTUDIO
//Límite de la tabla dinámica de la nube de GD
var limite1 = ee.FeatureCollection("ft:1rpd6kIewFWHrgX84jKwW30jeazmuiQJgXg-Pv759");
//Límite de shapefile como tabla de la nube de GEE
var limite2 = ee.FeatureCollection("users/omarorellanahn/buffer_simplicado_hn_geo");
//VISUALIZAR LOS LÍMITES DEL ÁREA DE ESTUDIO
/*NOTA: Estos dos límites son la misma área geografica, sin embargo se agrega los dos
para mostrar que cualquiera de las dos formas puede ser utilizada*/
//Límite de la nube de Google Drive
Map.addLayer(limite1, {color: 'd63000'},'LIMITE_GD' ,false, 0.5);
//Límite de la nube de Google Earth Engine
Map.addLayer(limite2, {color: '6dd646'},'LIMITE_GEE',false, 0.5);
//LLAMAR COLLECCIONES DE IMÁGENES
//Landsat 5
var Landsat_5_1= ee.ImageCollection ("LANDSAT/LT5_L1T");
var Landsat_5_2= ee.ImageCollection ("LANDSAT/LT05/C01/T1");
var Landsat_5_3= ee.ImageCollection ("LANDSAT/LT05/C01/T1_TOA");
var Landsat_5_4= ee.ImageCollection ("LANDSAT/LT05/C01/T1_SR");
//Landsat 7
var Landsat_7_1= ee.ImageCollection ("LANDSAT/LE7_L1T");
var Landsat_7_2= ee.ImageCollection ("LANDSAT/LE07/C01/T1");
var Landsat_7_3= ee.ImageCollection ("LANDSAT/LE07/C01/T1_TOA");
var Landsat_7_4= ee.ImageCollection ("LANDSAT/LE07/C01/T1_SR");
//Landsat 8
var Landsat_8_1= ee.ImageCollection ("LANDSAT/LC8_L1T");
var Landsat_8_2= ee.ImageCollection ("LANDSAT/LC08/C01/T1");
var Landsat_8_3= ee.ImageCollection ("LANDSAT/LC08/C01/T1_TOA");
var Landsat_8_4= ee.ImageCollection ("LANDSAT/LC08/C01/T1_SR");
//FILTRAR LA COLECCIÓN DE IMAGENES
/*Filtros, primero hace un filtro por la fecha, segundo se hace con el límite
y tercero que seleccione solo las imágenes con un porcentaje de nubosidad menor a 30%*/
var Filtro2017_l8 = Landsat_8_2.filterDate('2016-01-01', '2018-10-14')
.filterBounds(limite1)
.filterMetadata('CLOUD_COVER', 'less_than', 30);
//IMPRIMIR EL RESULTADO DEL FILTRO
print(Filtro2017_l8);
//APLICAR ALGORITMO PARA CONSTRUIR EL MOSAICO CORREGIDO AL TOPE DE
LA ATMOSFERA
/*Aplicación de algoritmo para construcción de mosaico
eligiendo los pixeles con valores concentrados al percentil 50,
con un porcentaje de nubosidad del pixel de 10 y que elija máximo 40 imágenes para construirlo
*/
var m2017_l8 = ee.Algorithms.Landsat.simpleComposite(Filtro2017_l8, 50, 5, 40);
//CORTAR EL MOSAICO CON EL LÍMITE DEL ÁREA DE ESTUDIO
var m2017_l8_cortado = m2017_l8.clip(limite1);
//VISUALIZAR EL MOSAICO
//con una combinación de bandas en inflrarojo
Map.addLayer(m2017_l8_cortado,{'bands': ['B5', 'B6', 'B4'], 'min': 0, 'max':
128},'Mosaico_2012',false);
//CENTRAR EL ÁREA DE ESTUDIO
/*Para que cada vez que corra el script aunque esten en otro lugar pueda mosatrar su área de
estudio*/
Map.centerObject(limite1, 7);
//DESCARGAR EL MOSAICO
/*Para descargar una image o un mosaico en formato tif priero se exporta a Google Drive
de la siguiente manera*/
Export.image.toDrive
({image: m2017_l8_cortado.select(['B5', 'B6', 'B4']),
description: 'Mosaico_2017',
fileNamePrefix: 'Mosaico_2017_L8',
scale:30,
maxPixels: 1e12,});
VI. BIBLIOGRAFÍA
FAO. (2012). Directrices voluntarias sobre monitoreo forestal nacional. Recuperado de
http://www.fao.org/forestry/38632-0b89fc0547b243713e7e5c6178c57a27.pdf
GEE. (2018a). ImageCollection Overview | Google Earth Engine API. Recuperado 14 de
octubre de 2018, de https://developers.google.com/earth-engine/ic_creating
GEE. (2018b). Importing Table Data | Google Earth Engine API [Guías de GEE API].
Recuperado 14 de octubre de 2018, de https://developers.google.com/earth-
engine/importing
Google Earth Engine. (2018). Recuperado 17 de octubre de 2018, de
https://earthengine.google.com
VII. ANEXOS
Función Descripción
Colecciones
ee.FeatureCollection
FeatureCollections se puede construir a partir de
los siguientes argumentos:
- Una cadena: se asume que es el nombre de una
colección.
- Una geometría única.
- Una sola característica.
- Una lista de características.
- Un objeto computado: reinterpretado como
una colección.
ee.Image
Un objeto para representar una imagen de GEE.
Este constructor acepta una variedad de
argumentos:
- Una cadena: un ID de activo de EarthEngine,
- Una cadena y un número - un ID y versión de
activo de EarthEngine,
- Un número o EEArray: crea una imagen
constante,
- Una lista: crea una imagen fuera de cada
elemento de la lista y las combina en una sola
imagen,
- Una ee.Image: devuelve el argumento,
- Nada: da como resultado una imagen
transparente vacía.
Geoproceso
.clip Recorta una imagen en una Geometría o
Característica.
.select Devuelve la colección de imágenes con las
bandas seleccionadas.
.merge
Fusiona dos colecciones en una sola. El
resultado tiene todos los elementos que estaban
en cualquier colección.
.randomColumn
Agrega una columna de números
pseudoaleatorios deterministas a una colección.
Los números son números de coma flotante de
precisión doble en el rango de 0.0 (inclusive) a
1.0 (exclusivo).
Filtros
.filter Aplicar un filtro a esta colección.
.filterDate Atajo para filtrar una colección por un rango de
fechas
.filterBounds
Atajo para filtrar una colección por
geometría. Los elementos de la colección con
una huella que no se interseca con los límites se
excluirán cuando se evalúe la colección.
ee.Filter.neq El filtro a metadatos no es igual al valor dado.
ee.Filter.and Combina dos o más filtros utilizando booleano
AND.
Función Descripción
.filterMetadata
Atajos para filtrar una colección por
metadatos. Esto es equivalente a this.filter
(ee.Filter.metadata (...)).
Operaciones
.sum
Reduce una colección de imágenes calculando
la suma de todos los valores en cada píxel en la
pila de todas las bandas coincidentes. Las
bandas se emparejan por nombre.
.divede Divide el primer valor por el segundo,
devolviendo 0 para la división por 0.
.mean
Reduce una colección de imágenes calculando
la media de todos los valores en cada píxel en la
pila de todas las bandas coincidentes.
.min Sobre una base de elementos, selecciona el
mínimo de los valores primero y segundo.
.multiply Sobre una base de elementos, multiplica el
primer valor por el segundo.
Algoritmos
ee.Algorithms.Terrain Calcula la pendiente, el aspecto y una
sombreada simple desde un DEM de terreno.
ee.Algorithms.Landsat.simpleComposite
Calcula un compuesto Landsat TOA a partir de
una colección de escenas en bruto Landsat.
Aplica la calibración estándar de TOA y luego
asigna una puntuación de nube a cada píxel
usando el algoritmo SimpleLandsatCloudScore.
Selecciona el rango más bajo posible de
puntajes de nube en cada punto y luego calcula
los valores de percentil por banda a partir de los
píxeles aceptados. Este algoritmo también
utiliza el algoritmo LandsatPathRowLimit para
seleccionar solo las escenas menos nubladas en
regiones donde hay más de max.
Clasficador
.Classifier.randomForest Crea un clasificador de Rifle Serial vacío, que
usa el algoritmo de bosque aleatorio.
.train
Entrena al Clusterer en una colección de
características, utilizando las propiedades
numéricas especificadas de cada característica
como datos de entrenamiento. La geometría de
las características se ignora.
.setOutputMode
Establece el modo de salida. El modo de salida
puede ser:
- CLASIFICACIÓN (predeterminado): la salida
es el número de clase.
- REGRESIÓN: La salida es el resultado de una
regresión estándar.
- PROBABILIDAD: La salida es la
probabilidad de que la clasificación sea
correcta.
No todos los tipos de clasificadores admiten los
modos REGRESSION y PROBABILITY.
Función Descripción
.classify Clasifica cada característica en una colección.
Diccionarios
.rename Renombrar elementos en un diccionario.
.map Mapea un algoritmo sobre una colección.
Operadores
.eq Sobre una base de elementos, devuelve 1 si el
primer valor es igual al segundo.
.gte Sobre una base de elementos, devuelve 1 si el
primer valor es mayor o igual que el segundo.
.lte En términos de elementos, devuelve 1 si el
primer valor es menor o igual que el segundo.
.and
Devuelve un 1 en cada posición de bit para el
cual los bits correspondientes de ambos
operandos son 1.
.not Invierte los valores de su operando.
.set Establecer un valor en un diccionario.
Análisis Espacial de Imágenes
.updateMask
Actualiza la máscara de una imagen en todas las
posiciones donde la máscara existente no es
cero. La imagen de salida conserva los
metadatos y la huella de la imagen de entrada.
.mask
Crea un subconjunto dividiendo cada posición
en una matriz de entrada que es paralela a un
elemento distinto de cero de la matriz de
máscara dada
.expression
Evalúa una expresión aritmética en una imagen,
posiblemente involucrando imágenes
adicionales.
.addBands
Devuelve una imagen que contiene todas las
bandas copiadas desde la primera entrada y
bandas seleccionadas desde la segunda entrada,
opcionalmente sobrescribiendo las bandas en la
primera imagen con el mismo nombre. La nueva
imagen tiene los metadatos y la huella de la
primera imagen de entrada.
.bandNames Devuelve una lista que contiene los nombres de
las bandas de una imagen.
.reducerRegions
Aplique un reductor sobre el área de cada
característica en la colección dada.
El reductor debe tener el mismo número de
entradas que la imagen de entrada tiene bandas.
.sampleRegions
Muestra los píxeles de una imagen en una o más
regiones, devolviéndolos como
FeatureCollection. Cada función de salida
tendrá 1 propiedad por banda en la imagen de
entrada, así como las propiedades especificadas
copiadas de la función de entrada. Tenga en
cuenta que las geometrías se ajustarán a los
centros de píxeles.
Función Descripción
.normalizedDifference
Calcula la diferencia normalizada entre dos
bandas. Si las bandas a usar no están
especificadas, usa las dos primeras bandas. La
diferencia normalizada se calcula como (primer
- segundo) / (primer + segundo).
Imprimir
Imprime en la ventana de la consola los
resultados de una operación o presental la
visualización de los metadatos de una colección
en específico.
Visualización de mapa
Map.addLayer Agrega un objeto al visor de EE dado al mapa
como una capa.
Map.centerObject Centra la vista del mapa en un objeto dado.
Descarga
Export.image.toDrive
Crea una tarea por lotes para exportar una
imagen como ráster a la unidad de Google
Drive.