GEE Python API: не удается экспортировать изображение в Google Drive - PullRequest
0 голосов
/ 27 апреля 2019

Используя GEE Python API в приложении, работающем с App Engine (на локальном хосте), я пытаюсь экспортировать изображение в файл на Google Диске.Похоже, что задание запускается и завершается успешно, но в Google Диске файл не создан.

Я попытался выполнить эквивалентный код JavaScript в редакторе кода GEE, и это работает, файл создан в 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)

В распечатанном списке задач состояние задачи изменяется с ГОТОВО до РАБОТА, а затем ЗАВЕРШЕНО.Но после завершения в Google Drive не создается файл в моей папке «GEEtest» (нигде больше).

Что я делаю не так?

1 Ответ

0 голосов
/ 28 апреля 2019

Вы не можете передать словарь аргументов непосредственно в python. Вам нужно передать его, используя соглашение kwargs (для получения дополнительной информации выполните поиск в Интернете). По сути, вам просто нужно предварять аргумент task_config двойными звёздочками, например так:

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

Затем действуйте как следует (я предполагаю, что использование task.config вместо task_config в следующей строке является опечаткой). Также обратите внимание, что вы можете запросить задачу напрямую (используя, например, task.status()), и она может дать больше информации о том, когда / почему задача не удалась. Насколько я могу судить, это не очень хорошо задокументировано, но вы можете прочитать об этом в коде API .

...