La API de Python para Earth Engine se puede implementar en un notebook de Google Colaboratory. Los notebooks de Colab son notebooks de Jupyter que se ejecutan en la nube y están altamente integrados con Google Drive, lo que facilita su configuración, acceso y uso compartido. Si no conoces Google Colab o los notebooks de Jupyter, tómate un tiempo para explorar el sitio de bienvenida de Colab.
En las siguientes secciones, se describe cómo implementar Earth Engine en Google Colab y visualizar mapas y gráficos con paquetes de Python de terceros.
Abre un notebook de Colab
Los notebooks se pueden abrir desde Google Drive o la interfaz de Colaboratory.
Nuevo notebook
Google Drive
Abre Google Drive y crea un archivo nuevo.
- Nuevo > Más > Colaboratory
- Haz clic con el botón derecho en una carpeta y selecciona Más > Colaboratory en el menú contextual.
Interfaz de Colab
Visita el sitio de Colab y crea un archivo nuevo.
- File > New > New Python 3 notebook
- Si ya interactuaste con Colab, visitar el sitio vinculado anterior te proporcionará un explorador de archivos en el que puedes iniciar un archivo nuevo con el menú desplegable que se encuentra en la parte inferior de la ventana.
Notebook existente
Los archivos de notebook existentes (.ipynb) se pueden abrir desde Google Drive y la interfaz de Colab.
Google Drive
Los notebooks de Colab pueden existir en varias carpetas de Google Drive, según dónde se hayan creado los archivos de notebooks. Los notebooks creados en Google Drive existirán en la carpeta en la que se crearon o movieron. Los notebooks creados desde la interfaz de Colab se almacenarán de forma predeterminada en una carpeta llamada "Notebooks de Colab", que se agregará automáticamente a la carpeta "Mi unidad" de Google Drive cuando comiences a trabajar con Colab.
Los archivos de Colab se pueden identificar por un símbolo "CO" amarillo y la extensión de archivo ".ipynb". Para abrir archivos, haz doble clic en ellos y selecciona Abrir con > Colaboratory en el botón que se encuentra en la parte superior de la página resultante, o bien haz clic con el botón derecho en un archivo y selecciona Abrir con > Colaboratory en el menú contextual del archivo.
Interfaz de Colab
Abrir notebooks desde la interfaz de Colab te permite acceder a archivos existentes desde Google Drive, GitHub y el hardware local. Si visitas la interfaz de Colab después del uso inicial, aparecerá un cuadro modal del explorador de archivos. En las pestañas de la parte superior del explorador de archivos, selecciona una fuente y navega al archivo .ipynb que deseas abrir. También puedes acceder al explorador de archivos desde la interfaz de Colab seleccionando File > Open notebook o usando la combinación de teclas Ctrl+O.
Importa la API y obtén credenciales
En esta sección, se muestra cómo importar la API de Earth Engine para Python y autenticar el acceso. Este contenido también está disponible como un notebook de Colab:
La API de Earth Engine se incluye de forma predeterminada en Google Colaboratory, por lo que solo requiere importar y autenticar. Estos pasos se deben completar para cada sesión nueva de Colab, si reinicias el kernel de Colab o si se recicla tu máquina virtual de Colab debido a la inactividad.
Importa la API
Ejecuta la siguiente celda para importar la API a tu sesión.
import ee
Autentica e inicializa
Ejecuta la función ee.Authenticate
para autenticar tu acceso a los servidores de Earth Engine y ee.Initialize
para inicializarlo. Agrega una celda de código, ingresa las siguientes líneas, edita el proyecto y ejecuta la celda.
# Trigger the authentication flow. ee.Authenticate() # Initialize the library. ee.Initialize(project='my-project')
Se te pedirá que autorices el acceso a tu cuenta de Earth Engine. Sigue las instrucciones impresas en la celda para completar este paso.
Prueba la API
Para probar la API, imprime la elevación del monte Everest. Ten en cuenta que, antes de usar la API, debes inicializarla. Ejecuta la siguiente secuencia de comandos de Python en una celda nueva.
# Print the elevation of Mount Everest. dem = ee.Image('USGS/SRTMGL1_003') xy = ee.Geometry.Point([86.9250, 27.9881]) elev = dem.sample(xy, 30).first().get('elevation').getInfo() print('Mount Everest elevation (m):', elev)
Visualización de mapas
Los objetos ee.Image
se pueden mostrar en las celdas de salida del notebook. En los siguientes dos ejemplos, se muestra cómo mostrar una imagen estática y un mapa interactivo.
Imagen estática
El módulo IPython.display
contiene la función Image
, que puede mostrar
los resultados de una URL que representa una imagen generada a partir de una llamada a la función getThumbUrl
de Earth
Engine. La siguiente secuencia de comandos mostrará una miniatura de un modelo de elevación global.
# Import libraries. import ee from IPython.display import Image # Trigger the authentication flow. ee.Authenticate() # Initialize the library. ee.Initialize(project='my-project') # Import a DEM and display a thumbnail of it. dem = ee.Image('USGS/SRTMGL1_003') Image(url=dem.updateMask(dem.gt(0)) .getThumbUrl({'min': 0, 'max': 4000, 'dimensions': 512, 'palette': ['006633', 'E5FFCC', '662A00', 'D8D8D8', 'F5F5F5']}))
Mapa interactivo
El paquete folium
se puede usar para mostrar objetos ee.Image
en un mapa interactivo de Leaflet. Folium no tiene un método predeterminado para controlar las tarjetas de Earth Engine, por lo que se debe definir uno y agregarlo al módulo folium.Map
antes de usarlo.
En la siguiente secuencia de comandos, se proporciona un ejemplo de cómo agregar un método para entregar tarjetas de Earth Engine y usarlo para mostrar un modelo de elevación en un mapa de Leaflet.
# Import libraries. import ee import folium # Trigger the authentication flow. ee.Authenticate() # Initialize the library. ee.Initialize(project='my-project') # Define a method for displaying Earth Engine image tiles to folium map. def add_ee_layer(self, ee_image_object, vis_params, name): map_id_dict = ee.Image(ee_image_object).getMapId(vis_params) folium.raster_layers.TileLayer( tiles = map_id_dict['tile_fetcher'].url_format, attr = "Map Data © Google Earth Engine", name = name, overlay = True, control = True ).add_to(self) # Add EE drawing method to folium. folium.Map.add_ee_layer = add_ee_layer # Fetch an elevation model. dem = ee.Image('USGS/SRTMGL1_003') # Set visualization parameters. vis_params = { 'min': 0, 'max': 4000, 'palette': ['006633', 'E5FFCC', '662A00', 'D8D8D8', 'F5F5F5']} # Create a folium map object. my_map = folium.Map(location=[20, 0], zoom_start=3) # Add the elevation model to the map object. my_map.add_ee_layer(dem.updateMask(dem.gt(0)), vis_params, 'DEM') # Add a layer control panel to the map. my_map.add_child(folium.LayerControl()) # Display the map. display(my_map)
Visualización de gráficos
Algunas funciones de Earth Engine producen datos tabulares que se pueden graficar con paquetes de visualización de datos, como matplotlib
. En el siguiente ejemplo, se muestra la visualización de datos tabulares de Earth Engine como un gráfico de dispersión. Consulta Cómo crear gráficos en Colaboratory para obtener más información.
# Import libraries. import ee import matplotlib.pyplot as plt # Trigger the authentication flow. ee.Authenticate() # Initialize the Earth Engine module. ee.Initialize(project='my-project') # Fetch a Landsat TOA image. img = ee.Image('LANDSAT/LT05/C02/T1_TOA/LT05_034033_20000913') # Select Red and NIR bands, scale them, and sample 500 points. samp_fc = img.select(['B3','B4']).sample(scale=30, numPixels=500) # Arrange the sample as a list of lists. samp_dict = samp_fc.reduceColumns(ee.Reducer.toList().repeat(2), ['B3', 'B4']) samp_list = ee.List(samp_dict.get('list')) # Save server-side ee.List as a client-side Python list. samp_data = samp_list.getInfo() # Display a scatter plot of Red-NIR sample pairs using matplotlib. plt.scatter(samp_data[0], samp_data[1], alpha=0.2) plt.xlabel('Red', fontsize=12) plt.ylabel('NIR', fontsize=12) plt.show()