Files
UAV-CO2/GASFLUX_CONFIG_DOCUMENTATION.md
2026-02-05 15:13:54 +08:00

10 KiB
Raw Blame History

GasFlux 配置清单完整说明文档

概述

GasFlux 是一个用于处理无人机气体通量数据的完整管道系统。本文档详细说明了所有配置文件参数及其使用方法。

配置文件结构

GasFlux 使用 YAML 格式的配置文件,主要包含以下几个部分:

  1. 输出设置 (output_dir)
  2. 必需列定义 (required_cols)
  3. 气体配置 (gases)
  4. 处理策略 (strategies)
  5. 背景校正设置 (algorithmic_baseline_settings)
  6. 半变异函数设置 (semivariogram_settings)
  7. 普通克里金设置 (ordinary_kriging_settings)
  8. 可选过滤器 (filters) - 高级配置

详细参数说明

1. 输出设置

output_dir: ./output  # 输出目录路径
  • 类型: 字符串
  • 描述: 指定处理结果的输出目录
  • 默认值: ./output
  • 注意: 可以使用相对路径或绝对路径

2. 必需列定义

required_cols:
  latitude: [-90, 90]        # 纬度范围
  longitude: [-180, 180]     # 经度范围
  height_ato: [0, 200]       # 相对起飞高度(米)
  windspeed: [0, 20]         # 风速m/s
  winddir: [0, 360]          # 风向(度)
  temperature: [-50, 60]     # 温度°C
  pressure: [900, 1100]      # 气压hPa
  • 格式: 字典,键为列名,值为 [最小值, 最大值] 数组
  • 作用: 数据验证和范围检查
  • 注意:
    • 所有值必须是 float64 类型
    • 不允许 NaN 值
    • 超出范围的值会报错

3. 气体配置

gases:
  co2: [300, 500]    # 二氧化碳浓度范围ppm
  ch4: [1.5, 10.0]   # 甲烷浓度范围ppm
  • 格式: 字典,键为气体名称,值为 [最小值, 最大值] 数组
  • 作用: 指定要处理的 gases 及其合理浓度范围
  • 注意:
    • 气体名称必须与数据中的列名完全匹配
    • 范围用于数据验证

4. 处理策略

strategies:
  background: "algorithm"    # 背景校正方法
  sensor: "insitu"          # 传感器类型
  spatial: "curtain"        # 空间处理模式: "curtain" 或 "spiral"
  interpolation: "kriging"  # 插值方法
  • background: 目前只支持 "algorithm"
  • sensor: 目前只支持 "insitu"
  • spatial: "curtain" (平面模式) 或 "spiral" (螺旋模式)
  • interpolation: 目前只支持 "kriging"

背景校正算法设置

算法总览

algorithmic_baseline_settings:
  algorithm: fastchrom  # 选择使用的算法
  # 以下是各算法的具体参数

支持的算法

1. FastChrom 算法 (推荐用于大多数情况)

algorithmic_baseline_settings:
  algorithm: fastchrom
  fastchrom:
    half_window: 6              # 半窗口大小,用于基线拟合
    threshold: "custom"         # 阈值方法,推荐使用 "custom"
    min_fwhm: ~                 # 最小峰宽,~ 表示 null
    interp_half_window: 3       # 插值半窗口
    smooth_half_window: 3       # 平滑半窗口
    weights: ~                  # 权重,~ 表示 null
    max_iter: 100               # 最大迭代次数
    min_length: 2               # 最小段长度

2. Dietrich 算法

algorithmic_baseline_settings:
  algorithm: dietrich
  dietrich:
    poly_order: 5               # 多项式阶数
    smooth_half_window: 5       # 平滑半窗口

3. FABC (Fully Automatic Baseline Correction) 算法

algorithmic_baseline_settings:
  algorithm: fabc
  fabc:
    lam: 10000                  # 平滑参数,值越大基线越平滑
    scale: 10                   # 小波变换尺度
    diff_order: 2               # 微分矩阵阶数

4. Golotvin 算法

algorithmic_baseline_settings:
  algorithm: golotvin
  golotvin:
    half_window: 2              # 半窗口大小
    sections: 10                # 分段数量

克里金插值设置

半变异函数设置

semivariogram_settings:
  model: spherical        # 变异函数模型: spherical, gaussian, exponential
  estimator: cressie      # 估计器: cressie, matheron, dowd
  n_lags: 20             # 滞后期数
  bin_func: even         # 分箱函数: even, uniform
  fit_method: lm         # 拟合方法: lm, manual
  maxlag: 100            # 最大滞后距离(米)
  tolerance: 10          # 方向容差(度)
  azimuth: 0             # 方位角0为水平向右
  bandwidth: 20          # 带宽(米)

普通克里金设置

ordinary_kriging_settings:
  min_points: 3          # 最小邻点数
  max_points: 100        # 最大邻点数
  grid_resolution: 500   # 网格分辨率
  min_nodes: 10          # 最小网格节点数
  y_min: ~               # 最小y值覆盖手动覆盖~表示使用默认
  cut_ground: True       # 是否切割地面以下的值

空间处理模式详解

平面模式 (Curtain Mode)

适用场景: 直线飞行路径,沿着固定方向的多个平行航线

strategies:
  spatial: "curtain"

# 推荐的半变异函数设置(平面模式)
semivariogram_settings:
  model: spherical
  estimator: cressie
  n_lags: 15
  bin_func: even
  fit_method: lm
  maxlag: 80          # 根据飞行距离调整
  tolerance: 15        # 较大的容差适应直线路径
  azimuth: 0           # 沿着飞行方向
  bandwidth: 25        # 较大的带宽适应航线间距

ordinary_kriging_settings:
  min_points: 5
  max_points: 80
  grid_resolution: 200  # 较高的分辨率
  min_nodes: 10
  y_min: 20           # 设置最小高度
  cut_ground: True

特点:

  • 应用风偏移校正
  • 沿着最大单调序列提取航线
  • 适合规则的栅格飞行模式

螺旋模式 (Spiral Mode)

适用场景: 螺旋或圆形飞行路径

strategies:
  spatial: "spiral"

# 推荐的半变异函数设置(螺旋模式)
semivariogram_settings:
  model: spherical
  estimator: cressie
  n_lags: 20
  bin_func: even
  fit_method: lm
  maxlag: 100         # 较大的最大距离适应螺旋半径
  tolerance: 30        # 更大的容差适应圆形路径
  azimuth: 0           # 径向方向
  bandwidth: 20        # 适应螺旋间距

ordinary_kriging_settings:
  min_points: 3
  max_points: 100
  grid_resolution: 500  # 较低的分辨率适应圆形区域
  min_nodes: 10
  y_min: ~            # 自动确定最小高度
  cut_ground: True

特点:

  • 不应用风偏移校正(假设风垂直于螺旋)
  • 计算圆偏差和中心
  • 重新居中方位角
  • 使用周长距离作为x坐标

可选过滤器(高级配置)

filters:
  course_filter:
    azimuth_filter: 15      # 方位角过滤容差(度)
    azimuth_window: 8       # 滚动中位数窗口大小
    elevation_filter: 8     # 海拔过滤容差(度)

完整配置示例

平面模式完整配置

output_dir: ./curtain_output

required_cols:
  latitude: [-90, 90]
  longitude: [-180, 180]
  height_ato: [0, 200]
  windspeed: [0, 20]
  winddir: [0, 360]
  temperature: [-50, 60]
  pressure: [900, 1100]

gases:
  co2: [300, 500]
  ch4: [1.5, 10.0]

strategies:
  background: "algorithm"
  sensor: "insitu"
  spatial: "curtain"
  interpolation: "kriging"

algorithmic_baseline_settings:
  algorithm: fastchrom
  fastchrom:
    half_window: 6
    threshold: "custom"
    min_fwhm: ~
    interp_half_window: 3
    smooth_half_window: 3
    weights: ~
    max_iter: 100
    min_length: 2

semivariogram_settings:
  model: spherical
  estimator: cressie
  n_lags: 15
  bin_func: even
  fit_method: lm
  maxlag: 80
  tolerance: 15
  azimuth: 0
  bandwidth: 25

ordinary_kriging_settings:
  min_points: 5
  max_points: 80
  grid_resolution: 200
  min_nodes: 10
  y_min: 20
  cut_ground: True

螺旋模式完整配置

output_dir: ./spiral_output

required_cols:
  latitude: [-90, 90]
  longitude: [-180, 180]
  height_ato: [0, 200]
  windspeed: [0, 20]
  winddir: [0, 360]
  temperature: [-50, 60]
  pressure: [900, 1100]

gases:
  co2: [300, 500]
  ch4: [1.5, 10.0]

strategies:
  background: "algorithm"
  sensor: "insitu"
  spatial: "spiral"
  interpolation: "kriging"

algorithmic_baseline_settings:
  algorithm: fastchrom
  fastchrom:
    half_window: 6
    threshold: "custom"
    min_fwhm: ~
    interp_half_window: 3
    smooth_half_window: 3
    weights: ~
    max_iter: 100
    min_length: 2

semivariogram_settings:
  model: spherical
  estimator: cressie
  n_lags: 20
  bin_func: even
  fit_method: lm
  maxlag: 100
  tolerance: 30
  azimuth: 0
  bandwidth: 20

ordinary_kriging_settings:
  min_points: 3
  max_points: 100
  grid_resolution: 500
  min_nodes: 10
  y_min: ~
  cut_ground: True

参数调优指南

空间模式选择

  1. 平面模式 (curtain):

    • 飞行路径呈直线或平行航线
    • 数据点分布在规则的栅格中
    • 适合大型区域的系统采样
  2. 螺旋模式 (spiral):

    • 飞行路径呈螺旋或圆形
    • 数据点围绕中心点分布
    • 适合点源排放的详细采样

半变异函数调优

  1. maxlag: 设置为数据空间范围的 80-100%
  2. tolerance: 平面模式 10-20°螺旋模式 20-40°
  3. bandwidth: 根据飞行间距调整,过大会影响精度
  4. n_lags: 通常 10-25根据数据量调整

克里金插值调优

  1. grid_resolution: 影响输出网格密度
  2. min_points/max_points: 平衡计算速度和精度
  3. cut_ground: 根据是否有地面高程数据决定

故障排除

常见错误

  1. "autodetected range of [nan, nan] is not finite"

    • 检查气体列是否有NaN值
    • 确认气体名称与数据列名匹配
  2. "ydata must not be empty!"

    • 检查半变异函数参数是否过于严格
    • 减少 maxlag 或增加 tolerance
  3. Missing columns

    • 确认数据列名与配置中的 gases 键匹配
    • 检查必需列是否存在

性能优化

  1. 减少计算时间: 降低 grid_resolution减少 max_points
  2. 提高精度: 增加 n_lags调整半变异函数参数
  3. 内存优化: 适当减少 max_points 和 grid_resolution

版本信息

  • GasFlux 版本: 开发版
  • 最后更新: 2025年2月
  • 文档版本: 1.0

本配置文档基于 GasFlux 系统的实际代码实现编写。如有疑问,请参考源码注释或提交 Issue。