-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path01-intro.Rmd
158 lines (115 loc) · 18.5 KB
/
01-intro.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
\newpage
# Agradecimientos {- .unnumbered .unlisted}
La presente publicación recibió apoyo financiero del Fondo Sectorial de Investigación para la Educación SEP-CONACyT (PE117519 – Programa de Apoyo a Proyectos para la Innovación y Mejoramiento a la Enseñanza (PAPIME), DGAPA, UNAM).
Este libro se elaboró con el apoyo de la Universidad Nacional Autónoma de México, México, puntualmente:
* El Centro de Investigaciones en Geografía Ambiental (CIGA).
* La editorial del CIGA.
Y el Instituto de Investigación de Recursos Biológicos Alexander von Humboldt, Colombia, puntualmente:
* La oficina Jurídica.
* La oficina de Comunicaciones.
* La línea 13, Análisis y Modelamiento, de la Subdirección de Investigaciones.
Agradecemos a Jean-François Mas por concebir la idea inicial de este manual e invitar a los autores a participar en dicho proyecto.
De igual manera, damos las gracias a Andrea Pamela Flores, Victoria Nazarena Guzmán, Sandra Lucía Hernández Zetina, Xanat Antonio Némiga y a dos revisores anónimos por su minuciosa revisión del manuscrito y sus valiosos comentarios que ayudaron a mejorar la calidad de este documento.
Agradecemos también a los desarrolladores de la API de libre acceso y uso gratuito (para propósitos educativos y de investigación sin fines de lucro) que se presenta en este libro (Google Earth Engine) y a los creadores de los programas de código abierto que se usaron para la elaboración de esta obra (R y LaTeX), así como algunos de sus paquetes (Rmarkdown, knitr y bookdown).
La imagen de la portada y la contraportada fue adaptada por Laura Perilla, a partir de la imagen Sentinel-2 “20181227T151659_20181227T151707_T19PBN”.
\newpage
# Declaración de afiliación {- .unnumbered .unlisted}
Google, Google Earth Engine, Google Drive, Google Cloud o cualquier otra marca comercial de Google que sea mencionada o referenciada a lo largo del presente documento son marcas comerciales propiedad de Google LLC y no nuestra. Por lo tanto, el presente libro no es un producto oficial de Google ni se encuentra afiliado, o respaldado de ninguna manera por Google.
A lo largo del texto mencionaremos diferentes productos de Google LLC, pero es importante recalcar que dichos productos y nombres son propiedad de Google, de modo que a continuación declaramos los nombres correctos de cada una de dichas marcas comerciales:
- Google Cloud™ enterprise services.
- Google Drive™ online storage service.
- Google Earth Engine™ analytics platform.
- Google Earth™ mapping service.
- Google Maps™ mapping service.
- Google Groups™ discussion forums.
- TensorFlow™ open-source software library.
# Advertencia sobre los enlaces {- .unnumbered .unlisted}
Este libro contiene múltiples enlaces (hipervínculos) a páginas web de terceros, de modo que en un futuro, dichos enlaces podrían caducar, cambiar de dirección o simplemente no contar con una actualización. De la misma manera, en su labor de mejorar y actualizar sus herramientas, Google puede cambiar algunas funciones o los ID de sus productos en sus catálogos. Estas circunstancias podrían impedir que algunos de los ejemplos aquí mostrados puedan ser ejecutados al pie de la letra. Por lo tanto, se recomienda a cualquier lector estar al tanto de posibles futuros cambios en los enlaces incluidos, en las actualizaciones de Google Earth Engine o de su catálogo.
:::: {.bluebox2 data-latex=""}
::: {.awesomeblock data-latex="{5pt}{\faLightbulb}{darkblue}"}
Existe un grupo virtual, Google Groups, dedicado a las discusiones y las dudas de todos los usuarios de Google Earth Engine. Si tiene alguna duda de cómo usar la herramienta siempre puede acceder, preguntar, contestar y consultar en ese grupo en el siguiente enlace: https://groups.google.com/g/google-earth-engine-developers
:::
::::
\newpage
\mainmatter
```{=latex}
\renewcommand\headrulewidth{1pt}
\pagestyle{fancy}
\fancyfoot{}
\fancyfoot[LE,RO]{\thepage}
\fancyhead{}
\fancyhead[LE,RO]{\leftmark}
\fancyhead[LO,RE]{\rightmark}
\fancypagestyle{plain}{}
```
# Introducción
## Propósito del libro
Este manual pretende ser una guía introductoria a Google Earth Engine (GEE) que ayude a los nuevos usuarios a entender su estructura, funcionamiento, capacidades, y facilitar el uso de esta poderosa herramienta gratuita. Existen algunos artículos previos que han presentado las características básicas de GEE, sin embargo, la mayoría están escritos en inglés (Gorelick _et al_., 2017; Amani _et al_., 2020), aunque en español existen algunas publicaciones también (ver Perilla y Mas, [2020]). La documentación propia de GEE ya existe en inglés, pero con este manual escrito en español se busca ampliar el público objetivo y aumentar el alcance del programa hacia países hispanoparlantes.
Es importante aclarar que esta guía es solamente introductoria, por lo tanto, hay muchas funciones que se pueden realizar en GEE que quedan fuera de este documento (por ejemplo, los análisis de series de tiempo o la creación de aplicaciones). Además, debido a su carácter introductorio, este manual está dirigido a usuarios con y sin conocimientos previos de programación. GEE está en constante actualización, por lo que este manual se enfoca en el corazón del funcionamiento de la API de GEE, que es lo que menos cambia en el tiempo. Sin embargo, aconsejamos buscar información adicional sobre las actualizaciones de GEE, así como revisar su documentación oficial.
Para aprender a usar GEE, como sucede con cualquier programa informático, se debe llevar a cabo un proceso de prueba y error, mediante el desarrollo de códigos propios. Los autores esperamos que esta herramienta ayude a los nuevos usuarios a comenzar a utilizar GEE y a alcanzar sus objetivos particulares de investigación.
:::: {.bluebox2 data-latex=""}
::: {.awesomeblock data-latex="{5pt}{\faLightbulb}{darkblue}"}
Idealmente, para sacar el máximo provecho de este manual, los lectores deben contar con una formación mínima en programación básica, para comprender la aplicación de términos relacionados con el uso de variables y estructuras de datos como listas y diccionarios, entre otras, que se usan en los ejemplos. De no tenerla, sugerimos que paralelamente a la lectura del manual se revisen conceptos básicos de programación en JavaScript.
:::
::::
## Organización del libro
El manual está organizado en doce capítulos que cubren diferentes aspectos de esta API (*Application Programming Interface*, o interfaz de programación de aplicaciones). El primer capítulo describe algunos aspectos generales de GEE. El siguiente capítulo detalla los pasos a seguir para poder usar GEE, así como los elementos básicos de dicha herramienta. Posteriormente, se presentan tres capítulos que muestran algunas funciones básicas para ayudar al usuario a interactuar con la API, cómo importar información a GEE y las diferencias entre la programación del lado del servidor y del usuario. A continuación, en cinco capítulos se describen los tipos de objetos más frecuentemente utilizados en GEE: geometrías, vectores, colecciones de vectores, imágenes y colecciones de imágenes, así como sus métodos. Después, se describen algunos métodos más avanzados para utilizar en conjunto información vectorial y ráster. El último capítulo muestra el procedimiento para realizar una clasificación supervisada en la API.
El manual incluye ejemplos que ayudarán a entender la sintaxis y experimentar con distintos tipos de datos, provenientes de diversas fuentes. De manera particular, en los capítulos sobre imágenes y colecciones de imágenes se incluyen ejemplos más prácticos con aplicaciones reales que tratan de integrar varios de los métodos revisados. Por último, este manual cuenta con una serie de ejercicios complementarios y explicativos, los cuales pueden ser implementados directamente en línea. El enlace para acceder a este material se encontrará más adelante.
## Descripción general de Google Earth Engine
### ¿Qué es Google Earth Engine? {-}
Google Earth Engine (GEE) es una plataforma desarrollada por Google que permite realizar procesamientos geoespaciales a gran escala, utilizando bases de datos con millones de estos. Uno de los principales intereses de esta plataforma es reducir el tiempo invertido en el preprocesamiento y facilitar los análisis realizados con información geoespacial.
Desde hace varios años existen distintas misiones espaciales que registran datos de la Tierra a través de satélites, los cuales se almacenan en acervos de imágenes. Aunque esta información ha sido muy útil para el desarrollo científico, siempre ha existido el problema de la *big data* (bases de datos enormes). Es decir, que dichos acervos de imágenes cuentan con millones de imágenes disponibles que resultan imposibles de procesar y analizar en su totalidad utilizando una computadora personal. Esta situación evitaba la posibilidad de aprovechar el potencial total de esta información.
GEE nace de la necesidad de aprovechar esa *big data* al ofrecer una herramienta que pueda lidiar tecnológicamente con el manejo de enormes volúmenes de información, permitiendo entonces que los usuarios se concentren en la generación de resultados y nuevos desarrollos científicos. Para lograr este objetivo, se creó una infraestructura con tres elementos claves, que son los que permiten el funcionamiento de GEE: el catálogo de información, la capacidad computacional y las API.
GEE recopiló la información geoespacial de diferentes fuentes alrededor del mundo y creó copias de esos datos en su propio *data center*, logrando así almacenar más de 20 petabytes (20 000 000 de gigabytes) de información en un solo lugar. El programa ofrece un amplio repositorio de información geográfica global que ya se encuentra cargada en su catálogo, lo cual facilita el acceso a diferentes fuentes de datos (`r colorize("Fig.")` \@ref(fig:f11)). Entre la información que se puede consultar directamente en GEE se encuentran: acervos para todo el mundo de imágenes Landsat (1-9), MODIS, Sentinel (1-3, 5), SRTM, AVHRR, GOESS, ALOS, mosaicos anuales de PALSAR/PALSAR 2 y algunos productos derivados de estas imágenes u otros insumos como información climática global (WorldClim), capas de cambios en la cobertura forestal (Global Forest Cover Change), información de la altura del dosel global (Global Forest Canopy Height), mapas de densidad de carbono globales (Global Aboveground and Belowground Biomass Carbon Density Map), datos de precipitación globales (CHIRPS), límites políticos (FAO GAUL: Global Administrative Unit Layers 2015, Country Boundaries), polígonos de áreas protegidas mundiales (WDPA: World Database on Protected Areas), densidad poblacional (GPWv411: Population Density —Gridded Population of the World Version 4.11—) y cuencas (WWF HydroSHEDS Hydrologically Conditioned DEM), entre otras.
```{r f11, echo = F, out.width="95%", fig.cap="Algunos ejemplos de fuentes de información disponibles en GEE."}
knitr::include_graphics("Img/Datasets.png")
```
:::: {.bluebox2 data-latex=""}
::: {.awesomeblock data-latex="{5pt}{\faLightbulb}{darkblue}"}
Para consultar toda la información que está disponible en GEE se puede dirigir al siguiente enlace: https://developers.google.com/earth-engine/datasets. Se estima que en 2010 GEE era capaz de ejecutar en cuestión de días procesamientos que en un computador personal habrían tardado 15 años.
:::
::::
De manera paralela al catálogo de información, GEE puso a disposición de la gente un conjunto de servidores para poder realizar rápida y eficazmente cálculos y computaciones sobre esos datos. En 2010, estos servidores tenían una capacidad más o menos equivalente a 10 000 computadores personales.
El tercer componente clave para el funcionamiento de GEE son las API. Una API es una interfaz que permite la comunicación entre nosotros (los usuarios) y los servidores de Google, proporcionando el acceso y el uso de la capacidad computacional de Google para nuestros análisis. Las API de GEE tienen el objetivo de facilitar la creación de programas, por lo cual cuentan con una serie de funciones, métodos y algoritmos preprogramados que se pueden llamar con una simple línea de código. La idea central de las API de GEE es brindar una interfaz que permita crear códigos y programas claros y concisos.
GEE ofrece dos API, una en JavaScript, a la cual se accede vía internet mediante un explorador y es la más conocida, actualizada y amigable con los usuarios. Además, es la que contiene más documentación y ayuda disponible. Por esta razón, el manual se enfocará en la API de JavaScript. Por otro lado, existe la API en Python, la cual se puede trabajar desde la consola de Python y permite —hasta cierto punto— usar complementariamente bibliotecas de Python, para así hacer procesamientos más complejos, o funcionalidades que la API de JavaScript no permite. Sin embargo, las desventajas de la API de Python incluyen el tener que instalar varias bibliotecas en la computadora para poder trabajar con GEE, el hecho de que existe mucho menos documentación y ayuda disponible para esta API, y que requiere de la actualización constante de algunas bibliotecas para su uso apropiado. A continuación se mencionan algunas de las principales ventajas de la API de JavaScript respecto de la de Python:
1. Los datos pueden ser consultados directamente en la nube (no se requiere descargarlos para trabajar con ellos), lo que ahorra tiempo y espacio de almacenamiento para el usuario. En cambio, si se quiere usar alguna biblioteca de Python será necesario descargar la información.
2. El procesamiento se hace en la nube, a través de internet, utilizando el poder de cómputo asignado para la API, lo cual reduce el gasto de memoria RAM (solo necesita una conexión estable y el consumo de RAM depende del consumo del navegador). En la API de Python hay un mayor consumo de memoria RAM (para ejecutar la consola de Python y sus bibliotecas) y requiere igualmente una conexión estable a internet.
3. Su interfaz es mucho más amigable con los usuarios, ya que ofrece una plataforma más interactiva para programar y sencilla para enseñar.
4. Se pueden realizar fácilmente consultas de las colecciones de imágenes y sus metadatos antes de decidir importarlos. En cambio, la API de Python no permite realizarlas de manera tan sencilla, de modo que hay que tener una absoluta claridad de las propiedades del conjunto de datos que se van a utilizar.
5. Otra gran ventaja de la plataforma JavaScript radica en que los códigos se guardan en la sesión de cada usuario. Esto permite mantener un control de los códigos y automáticamente se genera un registro histórico (parecido al control de versiones de Git), lo cual facilita el seguimiento y comparación de cambios entre las versiones (y permite regresar a versiones anteriores). Además, se pueden generar repositorios compartidos para generar proyectos colaborativos.
:::: {.bluebox2 data-latex=""}
::: {.awesomeblock data-latex="{5pt}{\faLightbulb}{darkblue}"}
Git es un programa de distribución libre que permite llevar un control de diferentes versiones de un código.
:::
::::
### Ejemplos de estudios realizados con GEE {-}
GEE se ha utilizado para diversos estudios enfocados en analizar la superficie terrestre mediante sensores remotos, especialmente imágenes multiespectrales (por ejemplo: Landsat, Sentinel-2, MODIS) y en algunos casos imágenes de radar de apertura sintética (por ejemplo, Sentinel-1). Algunos ejemplos de sus usos son:
* Realizar análisis de series de tiempo para detectar cambios de cobertura (Arévalo _et al_., 2020; Hamunyela _et al_., 2020).
* Evaluar los cambios de la cobertura boscosa global para periodos superiores a una década (Hansen _et al_., 2013).
* Estimar variables biofísicas de la superficie terrestre (Campos-Taberner _et al_., 2018).
* Enmascarar nubes de imágenes (Mateo-García _et al_., 2018).
* Monitorear asentamientos humanos (Trianni _et al_., 2014).
* Analizar la disponibilidad de imágenes y observaciones despejadas (Solórzano _et al_., 2020a; Solórzano _et al_., 2020b).
* Mapear campos de cultivo (Xiong _et al_., 2017; Dong _et al_., 2016).
* Identificar plantaciones de palma de aceite (Lee _et al_., 2016).
* Mapear cicatrices de incendios (Arruda _et al_., 2021).
* Evaluar el grado de sequía de la superficie terrestre (Sazib _et al_., 2018).
* Mapear características de humedales (Slagter _et al_., 2018).
* Monitorear anomalías térmicas en volcanes (Genzano _et al_., 2020).
* Mapear agricultura protegida (Perilla _et al_., 2019).
* Monitorear exposición de arrecifes de coral a estresores ambientales (Williamson _et al_., 2021).
* Mapear plantas fotovoltáicas (Zhang _et al_., 2021)
* Caracterizar islas de calor (Ravanelli _et al_., 2018), entre muchos otros.
Además, es una herramienta cuyo uso ha ido en aumento gracias a sus enormes capacidades de procesamiento y su rapidez para realizar análisis con información geoespacial (Kumar _et al_., 2018). Por último, cabe mencionar que dentro de Google Earth Engine se pueden programar aplicaciones que facilitan el uso y consulta de resultados de cualquier código, en una interfaz amigable para cualquier usuario. Aunque esto no se revisará en el material de este manual, en la siguiente lista se pueden consultar algunos de estos ejemplos:
* Realizar análisis de series de tiempo para detectar cambios de cobertura (Arévalo _et al_., 2020; Hamunyela _et al_., 2020). <https://parevalo-bu.users.earthengine.app/view/advanced-tstools>, <https://andreim.users.earthengine.app/view/bfastmonitor>
* Evaluar los cambios de la cobertura boscosa global para periodos superiores a una década (Hansen _et al_., 2013). <https://glad.earthengine.app/view/global-forest-change>
* Enmascarar nubes de imágenes (Mateo-García _et al_., 2018) <https://isp.uv.es/projects/cdc/viewer_l8_GEE.html>
* Mapear el cambio de hábitat de las aves del 2000 al 2021 (Perilla _et al_., 2022) <https://biomodelos-iavh.users.earthengine.app/view/biomodelos>
* Mapear plantas de energía fotovoltaica (paneles solares) (Zhang, _et al_., 2021) <https://xunhezhang.users.earthengine.app/view/ningxia-pv-power-plants>
* Monitorear anomalías termales volcánicas globales (Genzano, _et al_., 2020) <https://nicogenzano.users.earthengine.app/view/nhi-tool>
* Monitorear estrés ambiental para corales en el mundo (Williamson, _et al_., 2021) <https://mjw1280.users.earthengine.app/view/coral-reef-stress-exposure-index>
:::: {.bluebox2 data-latex=""}
::: {.awesomeblock data-latex="{5pt}{\faLightbulb}{darkblue}"}
GEE sugiere que para citar su herramienta en cualquier tipo de trabajo se haga referencia a Gorelick _et al_. (2017).
:::
::::