You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过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

火山引擎 最新活动