Вы не далеко от цели, по крайней мере, в определенной степени. Существует ограничение на количество пикселей, которое может быть передано по такому запросу, а именно 262144. Ваше изображение при съемке по всему земному шару (как вы делаете) имеет 3732480000 - в 10000 раз больше. Тем не менее, вы можете отобрать небольшую область и вставить 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())
Это область над Вроцлавом, Польша, и выглядит так, когда передается matplotlib через imshow
:
![satellite image](https://i.stack.imgur.com/TUuDD.png)
Что, если вам действительно нужно все изображение? Вот где Export.image.toDrive
вступает в игру. Вот как вы можете загрузить изображение на 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()
После завершения задачи (которую вы также можете отслеживать с Python), вы можете загрузить свое изображение с Диска и получить к нему доступ как любой другой GeoTIFF (см. этот пост обмена ГИС-стека).