35
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

Protocolo para la construcción de mosaicos libres de nube

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Protocolo para la construcción de mosaicos libres de nube

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

Page 2: Protocolo para la construcción de mosaicos libres de nube

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

Page 3: Protocolo para la construcción de mosaicos libres de nube

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

Page 4: Protocolo para la construcción de mosaicos libres de nube

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

Page 5: Protocolo para la construcción de mosaicos libres de nube

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

Page 6: Protocolo para la construcción de mosaicos libres de nube

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.

Page 7: Protocolo para la construcción de mosaicos libres de nube

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)

Page 8: Protocolo para la construcción de mosaicos libres de nube

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

Google

Drive

Page 9: Protocolo para la construcción de mosaicos libres de nube

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.

Page 10: Protocolo para la construcción de mosaicos libres de nube

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

Page 11: Protocolo para la construcción de mosaicos libres de nube

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

Page 12: Protocolo para la construcción de mosaicos libres de nube

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

Page 13: Protocolo para la construcción de mosaicos libres de nube

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

Page 14: Protocolo para la construcción de mosaicos libres de nube

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

Page 15: Protocolo para la construcción de mosaicos libres de nube

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

Page 16: Protocolo para la construcción de mosaicos libres de nube

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

Page 17: Protocolo para la construcción de mosaicos libres de nube

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

Page 18: Protocolo para la construcción de mosaicos libres de nube

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

Page 19: Protocolo para la construcción de mosaicos libres de nube

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

Page 20: Protocolo para la construcción de mosaicos libres de nube

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

Page 21: Protocolo para la construcción de mosaicos libres de nube

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

Page 22: Protocolo para la construcción de mosaicos libres de nube

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.

Page 23: Protocolo para la construcción de mosaicos libres de nube

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

Page 24: Protocolo para la construcción de mosaicos libres de nube

Figura 27. Ejemplo de centrado del área de estudio

Page 25: Protocolo para la construcción de mosaicos libres de nube

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)

Page 26: Protocolo para la construcción de mosaicos libres de nube

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

Page 27: Protocolo para la construcción de mosaicos libres de nube

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

Page 28: Protocolo para la construcción de mosaicos libres de nube

//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);

Page 29: Protocolo para la construcción de mosaicos libres de nube

//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,});

Page 30: Protocolo para la construcción de mosaicos libres de nube

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

Page 31: Protocolo para la construcción de mosaicos libres de nube

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.

Page 32: Protocolo para la construcción de mosaicos libres de nube

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.

Page 33: Protocolo para la construcción de mosaicos libres de nube

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.

Page 34: Protocolo para la construcción de mosaicos libres de nube

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

print

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.

Page 35: Protocolo para la construcción de mosaicos libres de nube