衰减订正

English version: Attenuation Correction

这页介绍 pycwr 中和衰减订正最相关的公开用法,重点是:

  • 什么时候应该做衰减订正

  • 原始场和订正场会怎么存放

  • 哪条 API 适合数组级处理,哪条适合 PRD 工作流

Attenuation Correction

在双偏振 workflow 里,衰减订正通常和 KDP / PhiDP 处理、非气象回波剔除、 后续绘图与导出连在一起。pycwr 推荐优先走 run_dualpol_qc / apply_dualpol_qc 这条公开链路。

在工作流中的位置

典型顺序通常是:

  1. 读取文件得到 PRD

  2. 对目标 sweep 或整卷运行双偏振 QC

  3. 得到订正反射率、订正差分反射率、PIA 等结果

  4. 在绘图、HID 或导出时显式使用订正后的字段

输入与输出

常见输入输出字段

类型

字段

说明

输入

dBZ

原始反射率

输入

KDPPhiDP

双偏振衰减订正的关键输入

输入

ZDRCCSNRH

可选辅助双偏振/QC字段

输出

Zc

订正后的反射率

输出

ZDRc

订正后的差分反射率

输出

PIAPIA_ZDR

积分衰减量

输出

KDPcPhiDP_smoothQC_MASK

QC / 补充结果

字段行为

  • 原始字段和订正字段分开存储,不会覆盖原始 dBZ / ZDR

  • 跑完 PRD.apply_dualpol_qc 后,订正字段会写回 PRD.fields[sweep]

  • 后续绘图可以显式用 ZcZDRcPIA 等字段

快速开始

from pycwr.io import read_auto

radar = read_auto("./data/file.bin.bz2")
qc_radar = radar.apply_dualpol_qc(inplace=False, band="C")

raw_dbz = radar.get_sweep_field(0, "dBZ")
corrected_dbz = qc_radar.get_sweep_field(0, "Zc")
pia = qc_radar.get_sweep_field(0, "PIA")

print(qc_radar.available_fields(0))

数组级 API 示例

如果你已经拿到了二维 sweep 数组,也可以直接使用 pycwr.qc 下的公开函数:

from pycwr.qc import correct_attenuation_kdp

z_corr, pia, zdr_corr, pia_zdr = correct_attenuation_kdp(
    ref=dbz_2d,
    kdp=kdp_2d,
    dr=0.075,
    zdr=zdr_2d,
)

适用场景:

  • 你已经在自定义 workflow 里单独处理某个二维 sweep

  • 你只需要数组结果,不需要把结果写回 PRD

完整 PRD 工作流示例

from pycwr.io import read_auto
from pycwr.qc import run_dualpol_qc

radar = read_auto("./data/file.bin.bz2")
sweep = radar.fields[0]
gate_length_km = float((sweep["range"].values[1] - sweep["range"].values[0]) / 1000.0)

results = run_dualpol_qc(
    ref=sweep["dBZ"].values,
    zdr=None if "ZDR" not in sweep else sweep["ZDR"].values,
    phidp=None if "PhiDP" not in sweep else sweep["PhiDP"].values,
    kdp=None if "KDP" not in sweep else sweep["KDP"].values,
    rhohv=None if "CC" not in sweep else sweep["CC"].values,
    snr=None if "SNRH" not in sweep else sweep["SNRH"].values,
    dr=gate_length_km,
    band="C",
)

print(results.keys())
# ref_corrected, zdr_corrected, pia, pia_zdr, phidp_smooth, kdp_used, ...

下游怎么使用

  • 绘图:显式画 ZcZDRcPIA,不要假设项目会自动替换 dBZ

  • HID:如果 corrected 字段存在,分类流程会优先使用 Zc / ZDRc / KDPc

  • 导出:标准接口导出会按当前公开规则选择合适数据源字段,但不会修改 PRD 的原始变量

补充说明

  • 单偏振历史接口 correct_attenuation / correct_attenuation_HB 仍然保留,但新 workflow 更推荐 correct_attenuation_kdpapply_dualpol_qc

  • 如果 sweep 缺少 KDPPhiDP,双偏振 QC 无法完成衰减订正