GEE Python API:将图像导出到Google云端硬盘失败

时间:2019-04-27 17:12:56

标签: python google-earth-engine

在与App Engine(在localhost上)一起运行的应用程序中使用GEE Python API,我正在尝试将图像导出到Google云端硬盘中的文件。该任务似乎已成功启动并成功完成,但未在Google云端硬盘中创建任何文件。

我尝试在GEE代码编辑器中执行等效的javascript代码,并且此方法有效,该文件是在Google云端硬盘中创建的。 在python中,我尝试了各种方法来启动任务,但是它总是给我相同的结果:任务完成但未创建文件。

我的python代码如下:

landsat = ee.Image('LANDSAT/LC08/C01/T1_TOA/LC08_123032_20140515').select(['B4', 'B3', 'B2'])

geometry = ee.Geometry.Rectangle([116.2621, 39.8412, 116.4849, 40.01236])

task_config = {
    'description': 'TEST_todrive_desc',
    'scale': 30,  
    'region': geometry,
    'folder':'GEEtest'
}

task = ee.batch.Export.image.toDrive(landsat, 'TEST_todrive', task_config)
ee.batch.data.startProcessing(task.id, task.config)
# Note: I also tried task.start() instead of this last line but the problem is the same, task completed, no file created. 

# Printing the task list successively 
for i in range(10): 
    tasks = ee.batch.Task.list()
    print(tasks)
    time.sleep(5)

在打印的任务列表中,任务的状态从“就绪”变为“正在运行”,然后是“已完成”。但是完成后,在我的文件夹“ GEEtest”(也没有其他地方)的Google云端硬盘中未创建任何文件。

我在做什么错了?

2 个答案:

答案 0 :(得分:1)

我认为该文件是在用于 Python API 的“服务帐户”的谷歌驱动器上生成并存储的,而不是在您使用网络代码编辑器时通常使用的私人帐户上。

答案 1 :(得分:0)

您不能直接在python中传递参数字典。您需要使用kwargs约定传递它(进行网络搜索以获取更多信息)。基本上,您只需要在task_config参数前面加上这样的双星号即可:

task = ee.batch.Export.image.toDrive(landsat, 'TEST_todrive', **task_config)

然后按您的方式进行(我假设您在下一行中使用task.config而不是task_config是错字)。另外请注意,您可以直接查询任务(例如使用task.status()),它可能会提供有关任务何时/为何失败的更多信息。据我所知,这方面的文档还不完善,但是您可以在API code中对其进行阅读。