我在使用Python API将数据从Google Earth引擎导入本地数组时遇到问题
我的代码的简化版本:
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())
但是np_arr_b2
似乎是空的
有人知道我做错了什么吗
谢谢
似乎您想从地球引擎下载数据,然后将其与numpy一起使用。你在这里做错了两件事:
您将Google Earth引擎视为下载服务。这不是地球引擎的目的。如果你想下载大量数据(比如一年的地表反射率),你应该直接从服务提供商那里下载。您应该从地球引擎下载的唯一内容是您在地球引擎中进行的分析的最终结果
.getInfo
不会获取卫星数据,它只会以JSON对象的形式获取ImageCollection的元数据。如果要导出实际的光栅数据,则必须将其导出(如1所述,对于如此多的数据,您不应该这样做)你离目标不远,至少在一定程度上是这样。在这样一个请求中可以传输多少像素是有限制的,即262144。当你的图像覆盖整个地球时(就像你正在做的那样),你的图像有373248000个,超过10000x个。尽管如此,您仍可以对一小块区域进行采样,然后放入numpy:
这是波兰弗罗茨瓦夫的一个地区,当通过
imshow
传递给matplotlib时,看起来是这样的:如果你真的需要整个图像呢?这就是
Export.image.toDrive
发挥作用的地方。以下是您将图像下载到Google Drive的方式:任务完成后(您也可以从Python监控),您可以从驱动器下载图像,并像其他GeoTIFF一样访问它(请参阅thisGIS Stack Exchange post)
相关问题 更多 >
编程相关推荐