You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SentinelSat API获取S5P数据不全问题求助

SentinelSat API下载S5P数据的问题排查与解决

一、API返回文件名与OpenAccessHub不匹配的原因

  • SentinelSat API返回的是简化后的内部命名,OpenAccessHub显示的是完整归档名,两者规则不同:
    • API文件名省略了部分冗余标识(比如平台后缀、入库批次标记)
    • 核心的产品ID、时间戳、模式标识(Offline/NRTI)完全一致,可通过product_id字段关联两者

二、Offline模式产品缺失的核心原因

你遇到的2023年5-7月印度区域早7点入库的Offline产品缺失,主要是SentinelSat默认查询参数过滤了这类延迟入库的产品:

  • Offline产品入库时间(ingestiondate)通常比观测时间晚数小时甚至1天,而你的单日查询只限定了观测时间(beginposition/endposition)在目标日期,没覆盖入库时间范围
  • 部分Offline产品的空间覆盖边界在API查询时被误判,导致印度区域的边缘覆盖产品没被匹配到

三、具体解决办法

1. 扩展入库时间范围,覆盖延迟产品

修改查询代码,把ingestiondate范围设为目标日期前后1天,确保捕获次日入库的Offline产品:

from sentinelsat import SentinelAPI

api = SentinelAPI('你的用户名', '你的密码', 'https://s5phub.copernicus.eu/dhus')

# 目标日期示例:2023-05-15
target_date = "20230515"
# 入库时间范围:目标日期当天到次日23:59
ingestion_start = f"{target_date[:4]}-{target_date[4:6]}-{target_date[6:8]}T00:00:00.000Z"
ingestion_end = f"{target_date[:4]}-{target_date[4:6]}-{str(int(target_date[6:8])+1)}T23:59:59.999Z"

products = api.query(
    area='你的印度区域多边形WKT',  # 替换为实际区域
    date=(f"{target_date[:4]}-{target_date[4:6]}-{target_date[6:8]}", f"{target_date[:4]}-{target_date[4:6]}-{target_date[6:8]}"),
    platformname='Sentinel-5 Precursor',
    producttype='L2__NO2___',  # 替换为你需要的产品类型
    ingestiondate=(ingestion_start, ingestion_end),  # 新增入库时间过滤
    producttype='Offline'  # 明确指定Offline模式
)

2. 优化空间匹配规则

如果是空间匹配漏查,调整边界或匹配规则:

  • 给印度区域的多边形增加0.5度缓冲,覆盖边缘产品
  • 把area_relation设为Intersects,替代默认的Contains,确保只要产品覆盖区域和查询区域有交集就会被返回:
products = api.query(
    # 其他参数不变
    area_relation='Intersects'
)

3. 自动校验补全缺失产品

如果还是有漏查,可以先通过OpenAccessHub导出目标日期所有Offline产品的UUID列表,然后对比API查询结果,自动下载缺失的:

# 从OpenAccessHub导出的目标日期UUID列表
target_uuids = ["uuid_1", "uuid_2", ...]
# 提取已查询到的产品UUID
downloaded_uuids = [prod['uuid'] for prod in products.values()]

# 找出缺失的UUID
missing_uuids = [uuid for uuid in target_uuids if uuid not in downloaded_uuids]

# 批量下载缺失产品
for uuid in missing_uuids:
    api.download(uuid)

四、额外注意点

  • 部分Offline产品的观测时间(beginposition)可能跨日期,比如目标日期23:50观测,次日7点入库,这时要确保date参数覆盖跨日期的观测时间
  • 可以用api.get_product_odata(uuid)查看产品完整元数据,对比beginposition、ingestiondate、footprint字段,精准排查漏查原因

内容的提问来源于stack exchange,提问作者muilenheinz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 17:40:25