在与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云端硬盘中未创建任何文件。
我在做什么错了?
答案 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中对其进行阅读。