如何通过SentinelHub Python批量下载查询到的所有数据?
实现Sentinel数据批量下载的完整方案
看了你的代码,目前已经能打印出符合条件的Sentinel产品标题,但还缺少获取产品列表和执行下载的核心逻辑,另外还有几处小语法问题需要修正。我帮你完善后的代码如下:
修正后的完整代码
from sentinelhub import AwsProductRequest, BBox, CRS # 定义目标区域的WGS84坐标边界 betsiboka_coords_wgs84 = [38.788605, 35.781057, 39.314575, 36.180008] bbox = BBox(bbox=betsiboka_coords_wgs84, crs=CRS.WGS84) # 修正日期范围的写法:正确的元组格式 date_range = ('2016-09-05', '2018-03-08') # 1. 查询符合条件的Sentinel-2 L1C产品 product_request = AwsProductRequest( bbox=bbox, time_interval=date_range, data_collection='SENTINEL2_L1C', maxcc=1.0, # 云量过滤阈值,1.0允许全云量,可按需调整(比如0.5=50%云量以下) config=None # 若有自定义sentinelhub配置可传入,默认留空即可 ) # 获取产品列表(这就是你代码里缺失的`data`变量) products = product_request.get_products() # 2. 批量下载所有查询到的产品 download_dir = './sentinel_downloads' # 自定义下载目录,不存在会自动创建 for product in products: product_title = product['properties']['title'] print(f"开始下载:{product_title}") # 创建针对单个产品的下载请求 download_req = AwsProductRequest( product_id=product_title, data_collection='SENTINEL2_L1C', download_dir=download_dir, config=None ) # 执行下载并保存到指定目录 download_req.save_data() print(f"✅ {product_title} 下载完成")
关键说明
- 修复了
date变量的语法错误:原来的写法多了冗余括号,现在改成标准的元组格式('起始日期', '结束日期') - 补充了产品查询逻辑:通过
product_request.get_products()获取符合区域、日期条件的产品列表,这是你代码里缺失的核心步骤 - 增加了批量下载逻辑:遍历每个产品,创建下载请求并执行
save_data()完成下载 - 可调整参数:
maxcc用来过滤云量,比如设置为0.3就只会下载云量低于30%的产品;download_dir可以改成你想要的本地路径
内容的提问来源于stack exchange,提问作者Benas Pekarskis




