一张土地覆盖分类图颜色齐全,并不表示它已经可用。真正决定结果是否可信的,往往发生在模型运行之前:训练区是否代表各类地物,测试区是否与训练区独立,影像时间与地面参考是否一致,以及错误是否在边缘、阴影、混合像元和少数类别中被单独看见。OCWGIS 的 QGIS 遥感影像分类教程把这些步骤放在同一条可操作链中:隔离工作环境、准备 ground truth、生成分割面、拆分训练和测试区,再通过 SCP 下载 Sentinel-2、运行随机森林、预览全图并做 accuracy assessment。

数据口径与可核验事实

OCWGIS 的官方教程题为 “Tutorial: Remote Sensing Image Classification with QGIS”。教程说明,工作流使用 QGIS 以及两个开源插件 AI Segmentation Plugin 和 Semi-Automatic Classification Plugin(SCP),从原始卫星影像走向经过评估的 land-cover map。课程目录依次包含新建 QGIS profile、准备 ground truth data、生成 segment polygons、拆分 training/test areas,以及使用 SCP 的影像下载、训练区评估、随机森林、全图分类和精度评价。

教程建议为遥感任务创建独立 QGIS profile。它解释 profile 是保存个人 QGIS 设置的自包含工作区;SCP 一类插件会增加工具栏、面板和 processing providers,独立 profile 可只加载本工作流需要的插件并降低插件冲突。对于 ground truth,教程要求先建立参考面;它提醒 Sentinel-2 像元较粗,为避免混合像元,可以适当收缩地块多边形。

教程给出的 training/test 做法是将每个类别的多边形拆分,典型比例为 70% 用于训练、30% 用于测试,并强调测试数据用于后续 error matrix 验证,不能把全部多边形都用于模型。它还建议将 training 和 test layers 各自保存为单层 GeoPackage,因为 SCP 导入训练和测试区时只能加载 single-layer GeoPackages。

在分类阶段,教程列出 SCP 下载合适 Sentinel-2 影像、创建 band set、裁剪 study area、导入和评估训练数据、设置 random forest classifier、预览分类、分类整景和 accuracy assessment。课程同时提示另一种 one-click installer 的 SCP 插件属于 experimental,使用风险由用户承担。

研究的八项固定口径

  1. OCWGIS 教程使用 QGIS、AI Segmentation Plugin 和 SCP 完成土地覆盖分类流程。
  2. 教程从原始卫星影像生成经评估的 land-cover map。
  3. 课程建议为遥感工作流创建独立 QGIS profile。
  4. SCP 等插件会增加工具栏、面板和 processing providers。
  5. 教程使用 ground truth 面并提醒 Sentinel-2 的较粗像元可能产生混合像元。
  6. 每个类别典型按 70% 训练、30% 测试拆分。
  7. 训练和测试层各自保存为单层 GeoPackage,供 SCP 导入。
  8. SCP 流程包括 Sentinel-2、band set、random forest、全图分类与 accuracy assessment。

核心机制:把训练、测试和制图结果分开

分类项目最常见的乐观偏差,是让同一片地物既教会模型又验证模型。相邻像元、同一地块和同一采集时间往往高度相似;即使测试多边形没有直接重叠训练多边形,空间自相关也会使精度偏高。因此 70/30 只是课程提供的起点,不是自动可信的比例。团队还应按地块、时间或空间块拆分样本,并确保少数类别、阴影区、边界区和不同传感条件都进入独立测试集合。

独立 QGIS profile 的作用也不只是界面整洁。它使插件版本、processing provider、Python 依赖和设置可以作为一次分类运行的环境证据。模型参数、band set、裁剪范围、ground truth 来源、类别定义和输出 GeoPackage 应与 profile 名称、QGIS/SCP 版本一起保存。这样,错误发生时才能判断是样本、影像、参数还是桌面环境改变造成的。

GIS 场景

以农地地类制图为例,先按作物、裸地、水体、道路和建设用地建立带类别代码的参考地块。把每类地块按空间块拆成训练与测试,不让同一大田的相邻区域跨集合。用固定日期窗口的 Sentinel-2 影像创建 band set 并裁剪到 AOI;训练随机森林后,只把预览图当作调参线索,不把它当作验收结果。

全图完成后,对测试样本生成混淆矩阵,分别看每个类别的 producer accuracy、user accuracy、遗漏和混淆去向。将错误点叠加回原始影像与 ground truth,检查是标签定义、混合像元、云影、时相差异还是算法参数导致。最终发布图层应额外包含来源影像、时间、类别体系、训练测试规则、模型版本和已知限制,而不只是一个颜色字段。

技术路径

第一,创建专用 profile 并记录 QGIS、SCP 和分割插件版本。第二,写清类别定义、采样规则、影像时间窗口与最小可用地块尺度。第三,建立训练/测试 GeoPackage;测试层不参与训练或阈值调节。第四,固定 Sentinel-2 产品、band set、裁剪边界、云处理和 CRS。第五,在小 AOI 运行随机森林预览,检查类别、空值、范围和输出 schema。第六,在锁定参数后运行全图,并对独立测试层输出误差矩阵、类别指标与错误样本图层。

如果精度不达标,优先回到类别定义、ground truth 时相、空间拆分和混合像元,而不是连续更换模型直到总分变高。所有调参都应在训练集或单独的 validation 集完成,保留最终 test 集只做一次发布级评估。

风险与局限

教程是实践教学材料,不构成任何地区土地覆盖精度承诺。70/30 比例也不能自动解决空间泄漏;如果训练与测试面来自同一影像、同一地块或同一时间,结果仍可能偏乐观。Sentinel-2 的空间分辨率、云影、季节性和地表混合会改变类别可分性,分割边界再精细也无法恢复像元没有包含的光谱信息。

插件安装与算法运行也不能绕过数据责任。experimental one-click installer 不应直接进入受控生产桌面;影像许可、地面样本来源、个人或敏感地块信息、类别命名和输出共享范围都需按组织规则处理。

检查清单

  1. 是否用独立 QGIS profile 固定插件、provider 与版本?
  2. 每个类别的 ground truth 是否有清楚定义、时间和来源?
  3. 训练与测试是否按地块或空间块独立拆分,避免相邻像元泄漏?
  4. 是否记录 Sentinel-2 日期、band set、裁剪范围、云处理和 CRS?
  5. 测试 GeoPackage 是否从未参与训练、特征选择或阈值调节?
  6. 是否保留混淆矩阵、逐类指标和回叠原始影像的错误样本?
  7. 发布图层是否附带类别体系、模型参数、影像来源和已知限制?

结论

OCWGIS 教程的价值不在于把随机森林按钮放进 QGIS,而在于把样本拆分、影像准备、分类和精度评估连成可检查的顺序。GIS 团队应先验证独立测试样本和错误结构,再讨论整图颜色是否好看;这样,遥感分类才能从一次演示转为可追踪的空间数据产品。

资料来源