Sen2Like:生成分析就绪数据集的多传感器协同处理器

本文最后更新于 2026年3月17日 晚上

在长时序遥感反演中,常常会遇到一个现实问题:受空间覆盖、云量、重访频率、可用性和影像质量影响,单一传感器难以提供足够密集且稳定的可用影像。

本文整理我对 Sen2Like 的理解与实操流程,重点说明它如何通过多传感器协同,生成 Sentinel-2 风格的协调表面反射率产品,并给出在 openEO 平台上的调用方法。

如果你在做像素级时间序列分析,Sen2Like 能有效提升时间维度的可用观测密度。

1. 什么是 Sen2Like?

Sen2Like 是 ESA 在 Copernicus 框架下开发的开源科学处理器,目标是融合兼容的光学任务传感器,生成 Sentinel-2 风格(S2-like) 的表面反射率产品,用于构建更高时间分辨率的分析就绪数据(ARD)。

核心价值:

  • 统一不同传感器在光谱、几何和辐射上的差异。
  • 增加理论可观测次数,缓解“有时相但没好影像”的问题。
  • 更适合后续的像素级时间序列分析(如生物地球物理变量反演)。

1.1 支持数据与产品类型

Sen2Like 主要对 Sentinel-2 与 Landsat-8/9 进行协同处理(新版本也在拓展其他任务,如 PRISMA)。输出产品通常包括:

  • L2H(Harmonized Surface Reflectance):30 m。
  • L2F(Fused Surface Reflectance):10-20 m。

并且产品采用 Sentinel-2 的 MGRS 网格体系,便于跨时相、跨区域拼接与分析。

1.2 处理流程

Sen2Like 的关键步骤可概括为:

  1. 几何校正与配准(统一到公共参考)。
  2. 大气校正(依赖气象辅助数据,可结合 SMAC / Sen2Cor3 等流程)。
  3. 光谱带间调整(SBAF),降低跨传感器差异。
  4. BRDF 归一化到 NBAR。
  5. 融合与重采样,生成更高时空一致性的产品。

辅助数据质量会直接影响最终 ARD 精度,尤其是几何参考栅格与大气校正所需的气象数据。

2. 在 openEO 中运行 Sen2Like

openEO 提供了托管式后端能力。你只需要定义处理图(process graph),后端自动完成数据获取与计算资源调度。

2.1 基础连接

1
2
import openeo
from openeo.rest.datacube import THIS
1
2
eodc = "https://openeo.eodc.eu/openeo/1.2.0/"
conn = openeo.connect(eodc).authenticate_oidc()
1
conn.describe_process("sen2like")

2.2 构建 Process Graph

可选波段(常见):

  • B01, B02, B03, B04, B05, B06, B07, B08, B8A, B11, B12

关键参数:

  • target_product: L2FL2H
  • cloud_cover: 1-100(越小越严格)
  • export_original_files: 是否导出原始 .SAFE(通常为 .zip
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
collection = "SENTINEL2_L1C"
spatial_extent = {"west": 112.00, "east": 113.20, "south": 28.70, "north": 29.50}
temporal_extent = ["2024-01-01", "2024-12-31"]
bands = ["B02", "B03", "B04", "B05", "B06", "B07", "B08", "B8A", "B11", "B12"]

S2 = conn.load_collection(
collection,
spatial_extent=spatial_extent,
temporal_extent=temporal_extent,
bands=bands,
)

sen2like = S2.process(
"sen2like",
{
"data": THIS,
"target_product": "L2F",
"export_original_files": True,
"cloud_cover": 30,
},
)

如果想检查流程图:

1
sen2like.flat_graph()

2.3 提交任务与状态跟踪

1
job = conn.create_job(sen2like.flat_graph()).start_job()
1
job.status()

重新连接后也可以通过任务 ID 追踪:

1
2
job_id = "d8cfad0e-b2ec-476e-887d-f96f6c21d8f5"  # 替换为你的任务 ID
job = conn.job(job_id)

查看日志:

1
job.logs(level="info")

2.4 下载结果

1
2
results = job.get_results()
metadata = results.get_metadata()

列出资产:

1
metadata["assets"]

示例(.SAFE 压缩包通常会在资产中出现):

1
metadata["assets"]["LS8_OLIL2F_20240119T025648_N0405_R123_T49RGM_20260123T171151.SAFE"]

3. 辅助数据

在 openEO 中运行 Sen2Like 时,输入数据与大部分辅助数据由后端自动提供。常见包括:

  1. Sentinel-2 / Landsat-8 / Landsat-9 输入影像。
  2. CAMS 气象与大气相关参数:
    • 550nm 总气溶胶光学厚度(AOD)
    • 总柱水汽(TCWV)
    • 平均海平面气压(MSLP)
    • 总柱臭氧等
  3. Sentinel-2 参考影像(用于几何相关处理)。
  4. DEM(用于地形相关处理)。

你可以把精力集中在参数设置和质量控制上,而无需大量前置数据处理。

4. 实践建议

  1. target_product 选择:

    • 更关注空间细节可优先尝试 L2F
    • 更关注稳健一致性可先从 L2H 开始。
  2. cloud_cover 建议分场景测试:

    • 多云区可适度放宽(如 30-50)。
    • 干旱区可适度收紧(如 10-20)。
  3. 先小范围试跑再全域生产:

    • 先验证时序连续性、异常值与几何一致性。
  4. 下载后统一做二次质检:

    • 检查关键波段、时间序列跳变与空间接边。

5. 参考链接


Sen2Like:生成分析就绪数据集的多传感器协同处理器
https://bintodo.top/links/Generation-of-Analysis-Ready-Dataset.html
作者
bin
发布于
2024年5月6日
许可协议