Python调用Google Earth Engine下载卫星影像:任务启动成功但云端硬盘无文件的问题排查
Python调用Google Earth Engine下载卫星影像:任务启动成功但云端硬盘无文件的问题排查
看起来你的代码逻辑框架没问题,输出也显示任务已经提交,但Google Drive里没收到文件,大概率是任务没实际完成、目标路径配置混淆或者参数格式有误,我给你梳理几个核心排查和修复方向:
1. 先去GEE任务面板确认任务真实状态
这是最优先要做的!GEE的ee.batch.Export是异步任务,代码里的task.start()只是把任务提交到GEE的云端队列,不是直接下载到你的Drive。你需要:
- 打开Google Earth Engine代码编辑器(用你运行代码时认证的谷歌账号登录)
- 点击右上角的「Tasks」面板(时钟图标)
- 查看你提交的这些任务的状态:是排队(READY)、运行中(RUNNING)还是失败(FAILED)
- 如果是失败,鼠标悬停在红色感叹号上会看到具体错误提示(比如区域格式错误、像素数超限、权限不足等),这是最快定位问题的方式。
2. 区分本地文件夹与云端Drive文件夹的配置
你的代码里有个很容易混淆的点:本地文件夹和GEE导出的云端文件夹完全是两回事:
- 你用
os.makedirs(download_folder, exist_ok=True)创建的是你本地电脑的文件夹,但GEE的Export.image.toDrive的folder参数指定的是Google Drive云端的文件夹名称。 - 代码里你把
folder=download_folder(也就是"satellite_images"),这里要注意:- GEE默认只会把文件传到Drive的顶级文件夹,如果要传到子文件夹,需要用
folder="父文件夹名/子文件夹名"的格式(比如folder="GEE_Downloads/satellite_images") - 如果Drive根目录没有同名文件夹,GEE会自动创建,但如果有同名的共享文件夹,可能会导致任务找不到目标路径,建议先手动在Drive根目录创建
satellite_images文件夹再重试。
- GEE默认只会把文件传到Drive的顶级文件夹,如果要传到子文件夹,需要用
3. 修正Region参数的传递方式
你的代码里region=roi.getInfo()["coordinates"]可能存在格式兼容问题:
- GEE的Export任务的
region参数可以直接接受ee.Geometry对象,或者它的完整getInfo()结果,手动提取coordinates可能会因为Polygon的嵌套结构(比如多环多边形)导致任务识别失败。 - 建议直接改成:
或者更稳妥的用边界框:region=roi,region=roi.bounds().getInfo(),确保区域格式完全符合GEE要求。
4. 处理影像波段与导出限制
Sentinel-2影像包含多分辨率的波段(10m、20m、60m),直接导出全波段可能会因为数据量过大、分辨率不统一导致任务失败:
- 可以先测试导出RGB波段(减少数据量),代码修改如下:
image=image.clip(roi).select(['B4', 'B3', 'B2']), # 只导出红、绿、蓝波段 - 另外,建议加上
maxPixels=1e10参数,避免影像像素总数超过GEE默认限制导致任务被拒绝:task= ee.batch.Export.image.toDrive( # 其他参数不变 maxPixels=1e10 )
5. 二次确认认证权限与账号一致性
虽然你代码里做了EE初始化和认证,但可能存在权限遗漏:
- 尝试重新认证:注释掉现有
ee.Initialize()代码,重新运行脚本,在弹出的授权页面里,确保勾选了Google Drive的访问权限。 - 确认你用来运行代码的谷歌账号,和你打开Drive查看文件的是同一个账号,不要混淆了多个谷歌账号。
针对你代码的优化版片段
这里给你调整了关键参数的代码片段,可以直接替换原有的Export部分:
task= ee.batch.Export.image.toDrive( image=image.clip(roi).select(['B4', 'B3', 'B2']), # 测试用RGB波段 description=f"Export_S2_{image_date}", # 简化任务名称,避免特殊字符 folder="satellite_images", # 确保Drive根目录有此文件夹 scale=10, region=roi, # 直接传入Geometry对象 fileFormat="GeoTIFF", maxPixels=1e10 # 解除像素数限制 )
备注:内容来源于stack exchange,提问作者Balamurugan S
相关产品推荐
相关产品推荐

