Compatibilidad con Python
La biblioteca cliente de Python de Earth Engine es compatible con las versiones de Python que admite Google Cloud. La compatibilidad se actualiza anualmente según el programa de lanzamientos de Python (PEP 602; Estado de las versiones de Python). El uso de versiones de Python no compatibles puede causar fallas de autenticación, un comportamiento inesperado o fallas de ciertas operaciones.
Opciones de instalación
Si usas Google Colab, ya se instaló la versión más reciente de la biblioteca cliente de Earth Engine para Python (a través de pip). Prueba el siguiente notebook para comenzar a usar Earth Engine y Colab:
Si no usas Colab, la biblioteca cliente de Earth Engine se puede instalar y actualizar manualmente en tu sistema con conda (recomendado) o pip:
Importación de paquetes
El paquete de la API de Python se llama ee
. Se debe importar y, luego, inicializar para cada sesión y secuencia de comandos de Python nuevas:
import ee
Autenticación e inicialización
Antes de usar la biblioteca cliente de Python de Earth Engine, debes autenticarte y usar las credenciales resultantes para inicializar el cliente de Python. Ejecuta lo siguiente:
ee.Authenticate()
Se seleccionará el mejor modo de autenticación para tu entorno y se te solicitará que confirmes el acceso de tus secuencias de comandos. Para inicializarlo, deberás proporcionar un proyecto que te pertenezca o para el que tengas permisos de uso. Este proyecto se usará para ejecutar todas las operaciones de Earth Engine:
ee.Initialize(project='my-project')
Consulta la guía de autenticación para solucionar problemas y obtener más información sobre los modos de autenticación y los proyectos de Cloud.
¡Hola, mundo!
Esta es una secuencia de comandos breve para probar que tienes todo listo para trabajar con Earth Engine.
import ee ee.Authenticate() ee.Initialize(project='my-project') print(ee.String('Hello from the Earth Engine servers!').getInfo())
Sintaxis
Tanto las APIs de Python como las de JavaScript acceden a la misma funcionalidad del servidor, pero las expresiones del cliente (obtén más información sobre el cliente y el servidor) pueden variar debido a las diferencias de sintaxis del lenguaje. En la siguiente tabla, se incluye una lista de las diferencias comunes de sintaxis que encontrarás cuando trabajes con la API de Python en relación con la API de JavaScript.
Propiedad | JavaScript | Python |
---|---|---|
Definición de la función |
function myFun(arg) { return arg; } var myFun = function(arg) { return arg; }; |
def my_fun(arg): return arg |
Asignación de funciones anónimas |
var foo = col.map(function(arg) { return arg; }); |
foo = col.map(lambda arg: arg) |
Definición de variables |
var myVar = 'var'; |
my_var = 'var' |
Operadores lógicos |
var match = such.and(that); var match = such.or(that); var match = such.not(that); |
match = such.And(that) match = such.Or(that) match = such.Not(that) |
Cadena de métodos de varias líneas |
var foo = my.really() .reallyLong() .methodChain(); |
foo = (my.really() .reallyLong() .methodChain()) |
Claves del diccionario |
var dic = {'key': value}; var dic = {key: value}; |
dic = {'key': value} |
Acceso a objetos de diccionario |
var value = dic.key; var value = dic['key']; |
value = dic['key'] |
Definición del argumento de la función |
// Positional arguments. var foo = fun(argX, argY, argZ); // Keyword arguments object. var foo = fun({y: argY}); |
# Positional arguments. foo = fun(arg_x, arg_y, arg_z) # Keyword arguments dictionary. foo = fun(**{'y': arg_y}) # Keyword arguments. foo = fun(x=arg_x, z=arg_z) |
Booleano |
var t = true; var f = false; |
t = True f = False |
Valores nulos |
var na = null; |
na = None |
Comentario |
// |
# |
Objetos de fecha
Define y manipula objetos de fecha del cliente con el módulo
datetime
. Incluye el módulo en la secuencia de comandos:
import datetime
Convierte ee.Date
a fecha del cliente:
ee_date = ee.Date('2020-01-01') py_date = datetime.datetime.utcfromtimestamp(ee_date.getInfo()['value']/1000.0)
Convierte la fecha del cliente a ee.Date:
py_date = datetime.datetime.utcnow() ee_date = ee.Date(py_date)
Exporta datos
Para exportar datos con la API de Python, debes usar el módulo ee.batch
, que proporciona una interfaz a las funciones Export
. Pasa los argumentos de los parámetros como lo harías con la API de JavaScript, teniendo en cuenta las diferencias que se indican en la tabla de sintaxis anterior. Para iniciar las tareas de exportación, debes llamar al método start()
en una tarea definida. Para consultar el estado de una tarea, llama al método status()
. En el siguiente ejemplo, se muestra cómo exportar un objeto ee.Image
.
Crea una tarea de exportación:
task = ee.batch.Export.image.toDrive(image=my_image , # an ee.Image object. region=my_geometry , # an ee.Geometry object. description='mock_export' , folder='gdrive_folder' , fileNamePrefix='mock_export' , scale=1000 , crs='EPSG:4326' )
Inicia una tarea de exportación:
task.start()
Verifica el estado de la tarea de exportación:
task.status()
El resultado de task.status()
es un diccionario que contiene información como el estado de la tarea y su ID.
{ 'state': 'READY', 'description': 'my_export_task', 'creation_timestamp_ms': 1647567508236, 'update_timestamp_ms': 1647567508236, 'start_timestamp_ms': 0, 'task_type': 'EXPORT_IMAGE', 'id': '56TVJIZABUMTD5CJ5YHTMYK4', 'name': 'projects/earthengine-legacy/operations/56TVJIZABUMTX5CJ5HHTMYK4' }
Puedes supervisar el progreso de las tareas con el campo state
. Consulta la página de entornos de procesamiento para obtener una
lista de valores de state
y más información sobre el ciclo de vida de las tareas.
Cómo imprimir objetos
Cuando se imprime un objeto de Earth Engine en Python, se imprime la solicitud serializada del objeto, no el objeto en sí. Consulta la página Cliente frente a servidor para comprender el motivo.
Llama a getInfo()
en los objetos de Earth Engine para obtener el objeto deseado del servidor al cliente:
# Load a Landsat image. img = ee.Image('LANDSAT/LT05/C02/T1_L2/LT05_034033_20000913') # Print image object WITHOUT call to getInfo(); prints serialized request instructions. print(img) # Print image object WITH call to getInfo(); prints image metadata. print(img.getInfo())
getInfo()
es una operación síncrona, lo que significa que la ejecución de las expresiones
después de la llamada a getInfo()
se bloquea hasta que se muestra el resultado al cliente.
Además, las solicitudes de muchos datos o cálculos costosos pueden mostrar un error o colgarse. En general, la práctica recomendada es exportar los resultados y, una vez que se completen, importarlos a una secuencia de comandos nueva para un análisis más detallado.
Objetos de la IU
El módulo ui
de Earth Engine solo está disponible a través del editor de código de la API de JavaScript. Usa bibliotecas de terceros para elementos de la IU en Python. Las bibliotecas como geemap, Folium y ipyleaflet proporcionan una visualización de mapas interactivos, mientras que los gráficos se pueden crear con Matplotlib, Altair o seaborn, entre otros. Consulta los ejemplos
en el
notebook de configuración de Earth Engine en Colab para usar geemap y Matplotlib.
Python en la Guía para desarrolladores
El código de Python se incluye en toda la Guía para desarrolladores de Earth Engine. Cuando estén disponibles, podrás ver los ejemplos de código haciendo clic en la pestaña “Colab (Python)” en la parte superior de los bloques de código.
Las páginas de guía también pueden incluir botones en la parte superior para ejecutar la página como un notebook de Colab o verla en GitHub. Los ejemplos de código de Python están diseñados para ejecutarse con
Google Colab. La biblioteca geemap
controla la exploración de objetos y mapas interactivos. Tanto la biblioteca cliente de Python de Earth Engine como geemap
están preinstaladas
en Colab.
Configuración de Earth Engine
Para ejecutar código de Python, debes importar la biblioteca de Earth Engine, autenticarla y inicializarla. Los siguientes comandos se usan en los ejemplos (consulta la página Autenticación e inicialización para ver alternativas).
import ee ee.Authenticate() ee.Initialize(project='my-project')
Exploración interactiva con geemap
La biblioteca geemap
se usa para mostrar mosaicos de mapas y para imprimir representaciones enriquecidas de objetos de Earth Engine.
La biblioteca depende, respectivamente, de ipyleaflet
y eerepr
para estas funciones.
La biblioteca geemap
y sus dependencias están preinstaladas en Google Colab. Importala en cada sesión.
import geemap.core as geemap
Las clases de datos geográficos de Earth Engine, como ee.Image
y ee.FeatureCollection
, se pueden ver con el objeto geemap.Map
.
Primero, define el objeto de mapa. Luego, agrégale capas o altera su viewport.
# Initialize a map object. m = geemap.Map() # Define an example image. img = ee.Image.random() # Add the image to the map. m.add_layer(img, None, 'Random image') # Display the map (you can call the object directly if it is the final line). display(m)