Estoy teniendo problemas para importar datos de Google Earth Engine a un array local utilizando la API de Python.
Una versión simplificada de mi código:
import ee
ee.Initialize()
#Load a collection
TERRA = ee.ImageCollection("MODIS/006/MOD09A1").select(['sur_refl_b02', 'sur_refl_b07',"StateQA"])
TERRA = TERRA.filterDate('2003-01-01', '2019-12-31')
#Extract an image
TERRA_list = TERRA.toList(TERRA.size())
Terra_img = ee.Image(TERRA_list.get(1))
#Load as array
Terra_img = Terra.get('sur_refl_b02')
np_arr_b2 = np.array(Terra_img.getInfo())
Pero np_arr_b2
parece estar vacío
¿Alguien sabe lo que estoy haciendo mal?
¡Gracias!
Usted no está lejos de la meta, al menos en cierta medida. Hay un límite al número de píxeles pueden ser transferidos a través de una solicitud de este tipo, a saber 262144. Su imagen, cuando se toma durante todo el globo (como lo está haciendo), tiene 3732480000 - sobre 10000x demasiados. Aún así, se puede degustar un área pequeña y poner en el numpy:
import ee
import numpy as np
import matplotlib.pyplot as plt
ee.Initialize()
#Load a collection
TERRA = ee.ImageCollection("MODIS/006/MOD09A1").select(['sur_refl_b02', 'sur_refl_b07',"StateQA"])
TERRA = TERRA.filterDate('2003-01-01', '2019-12-31')
#Extract an image
TERRA_list = TERRA.toList(TERRA.size())
Terra_img = ee.Image(TERRA_list.get(1))
img = Terra_img.select('sur_refl_b02')
sample = img.sampleRectangle()
numpy_array = np.array(sample.get('sur_refl_b02').getInfo())
Es un área de más de Wroclaw, Polonia, y tiene este aspecto cuando se pasa a través de matplotlib imshow
:
¿Qué pasa si usted realmente necesita toda la imagen? Ahí es donde Export.image.toDrive
entra en juego. Aquí te mostramos cómo descargar la imagen a la unidad de Google:
bbox = img.getInfo()['properties']['system:footprint']['coordinates']
task = ee.batch.Export.image.toDrive(img,
scale=10000,
description='MOD09A1',
fileFormat='GeoTIFF',
region=bbox)
task.start()
Después de que se complete la tarea (que se puede controlar también desde Python), se puede descargar la imagen desde la unidad y acceder a ella como cualquier otro GeoTIFF (ver este SIG posterior Stack Exchange).