1. 矿区时序变化检测概述

矿区地表变化与城市扩张、森林砍伐有一个本质区别:它往往不是缓慢、连续、均匀发生的,而是由一系列离散的、局部的、强度很高的扰动事件叠加而成。一处露天采场可能在几个月内从山体变成深坑,排土场会在持续排弃中不断“长高、外扩”,尾矿库的干滩面积随季节和生产节奏反复伸缩,而矿区道路、工业广场、复垦区又在不同时间点被新建、翻修或覆盖植被。因此,矿区监测的核心不是“某一年地物是什么”,而是“地表在什么时间、以什么方式、朝什么方向被改变”。

一、矿区开采活动的地表扰动特征

从遥感观测角度看,开采扰动主要表现为四类可辨识特征。第一是几何形态突变:采坑边界外扩、台阶出现、边坡后退,表现为高对比度的边缘和阴影结构。第二是光谱与纹理反转:植被覆盖区被剥离为裸岩、裸土,NDVI 骤降而短波红外反射率升高;排土场新排弃物料则呈现高亮、粗糙、无规则纹理。第三是地形与阴影关系改变:采坑加深、排土场堆高会改变局部坡向与阴影分布,在光学影像上形成稳定的明暗格局。第四是时序上的阶跃与持续漂移:剥离、排弃属于阶跃型变化,而复垦植被恢复、边坡自然稳定则表现为缓慢漂移。这四类特征决定了矿区变化检测必须同时关注“空间形态”和“时间节奏”,单期分类图难以支撑判断。

二、时序变化检测的定义与任务边界

时序变化检测可定义为:在同一地理范围内,利用按时间排序的多期观测,识别地表状态发生改变的位置、时刻、类型与方向,并区分真实变化与观测噪声。它包含四个层次的任务:变化有无(二值检测)、变化时刻(时间定位)、变化类型(如新增采坑、排土场扩张、复垦转绿)、变化方向与强度(增加/减少、幅度大小)。

需要明确边界。其一,变化检测不等于地物分类:分类回答“是什么”,变化检测回答“何时由什么变成了什么”,二者可互相支撑但目标不同。其二,检测结果受观测条件制约:云、雪、阴影、传感器差异、物候都会制造“伪变化”,因此必须设置噪声抑制与置信判断环节。其三,矿区变化具有尺度依赖性:采坑边界在 10 m 分辨率下可辨,而小型堆料点、临时道路可能低于可检测下限,任务设计时应先明确最小关注图斑与时间粒度。

实践建议:在项目启动时先写清三件事——监测范围与最小图斑、时间步长(月/季/年)、关注的变化类型清单。这三项直接决定后续影像选择、算法与验证方式,避免“先跑算法再想用途”。

三、Google Earth Engine 在矿区监测中的角色与优势

矿区时序监测的现实难点在于数据量与一致性:一个中型矿区按月度观测、跨越五年,就涉及数十景影像、多颗传感器、上万平方公里的候选数据。GEE 的价值在于把“数据获取—预处理—时序计算—结果导出”放在同一云端环境中完成。其核心优势可归纳为:目录级数据访问(Landsat、Sentinel-2 等集合已做几何与辐射预处理)、服务器端计算(对影像集合做 map/reduce,无需逐景下载)、统一的时间与空间筛选接口(filterDate、filterBounds、云掩膜)、可复现的脚本化流程(同一脚本可在不同矿区复用并留痕)。

下面这张图把本节的核心逻辑串起来:左侧是矿区四类扰动特征,中间是时序变化检测的四个任务层次,右侧是 GEE 提供的能力支撑,底部则标出必须控制的噪声来源。它表达的是“特征—任务—平台能力—误差控制”的对应关系,而不是操作步骤。

矿区时序变化检测:特征 → 任务 → 平台能力 → 误差控制 地表扰动特征 几何形态突变 采坑外扩·台阶·边坡后退 光谱纹理反转 植被剥离·裸岩裸土高亮 地形阴影改变 采坑加深·排土场堆高 时序阶跃与漂移 剥离排弃突变·复垦缓变 检测任务层次 ① 变化有无 二值检测:变 / 未变 ② 变化时刻 时间定位:哪一期发生 ③ 变化类型 新增采坑·排土扩张·复垦 ④ 方向与强度 增/减·幅度·速率 先定最小图斑与时间粒度 Google Earth Engine 支撑能力 目录级数据访问 Landsat / Sentinel-2 集合,已做几何辐射预处理 服务器端计算 影像集合 map / reduce,无需逐景下载 统一时空筛选接口 filterDate / filterBounds / 云掩膜 脚本化可复现流程 同一脚本跨矿区复用并留痕 输出:变化位置 + 时刻 + 类型 + 强度 支撑采坑边界、排土场范围、复垦进度核查 必须控制的“伪变化”来源(否则检测结果不可信) 云 / 云影 / 雪 掩膜后仍可能残留 需时序一致性检验 传感器差异 Landsat 与 S2 波段 响应不同,需归一 物候与季节 复垦植被季相波动 易误判为退化 几何配准误差 陡坡、采坑边缘 错位即假变化 观测缺失 时间序列断档 时刻定位偏移

四、一个可执行的最小示例

为了让概念落地,下面给出一个“先看变化、再定类型”的最小脚本骨架。它不追求精度,而是示范 GEE 中矿区时序检测的基本组织方式:先构建统一时间序列,再计算变化指标,最后导出候选变化图斑供人工核查。示例参数为教学假设,实际使用需按矿区调整。

// 1. 定义矿区范围与时间窗(示例:某露天矿区,2020-01 至 2024-12)
var aoi = ee.Geometry.Rectangle([110.20, 39.80, 110.35, 39.92]);
var start = '2020-01-01', end = '2024-12-31';

// 2. 构建 Sentinel-2 去云时序集合
var s2 = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED')
  .filterBounds(aoi).filterDate(start, end)
  .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20))
  .map(function(img){
    var mask = img.select('SCL').neq(3).and(img.select('SCL').neq(8))
               .and(img.select('SCL').neq(9)).and(img.select('SCL').neq(10));
    return img.updateMask(mask).divide(10000)
              .copyProperties(img, ['system:time_start']);
  });

// 3. 计算 NDVI 并做年度中值合成(示例:按年)
var ndvi = s2.map(function(img){
  return img.normalizedDifference(['B8','B4']).rename('NDVI')
            .copyProperties(img, ['system:time_start']);
});
var yearly = ee.ImageCollection.fromImages(
  ee.List.sequence(2020, 2024).map(function(y){
    var sub = ndvi.filter(ee.Filter.calendarRange(y, y, 'year'));
    return sub.median().set('year', y);
  })
);

// 4. 首末年中值差分,提取显著下降(剥离/采坑扩张候选)
var first = yearly.filter(ee.Filter.eq('year', 2020)).first();
var last  = yearly.filter(ee.Filter.eq('year', 2024)).first();
var diff  = last.subtract(first);
var loss  = diff.lt(-0.25);   // 示例阈值,需按矿区验证

// 5. 导出候选变化图斑
Export.image.toDrive({
  image: loss.selfMask(), description: 'mine_change_candidate',
  region: aoi, scale: 10, maxPixels: 1e13
});

这段脚本的关键判断点有三处:云掩膜是否把采坑边缘的阴影误删;年度中值合成是否掩盖了年内发生的阶跃变化;差分阈值 −0.25 是否与本地植被—裸地对比度匹配。实际项目中,通常还要叠加 Sentinel-1 后向散射或 DEM 差分来区分“植被减少”与“地形开挖”,并对候选图斑做目视核查与野外验证,才能把“变化有无”推进到“变化类型”。

常见误区:直接把两期分类图相减当作变化检测结果。分类误差会在相减时被放大,且无法给出变化时刻。矿区监测更稳妥的做法是先做时序指标(如 NDVI、NDBI、后向散射)的连续追踪,再在异常点上做类型判别。

综上,本节确立的是后续所有章节的共同框架:以矿区扰动特征为观测对象,以“有无—时刻—类型—强度”为任务层次,以 GEE 的集合化计算为实施载体,并把噪声控制作为结果可信度的前置条件。后续的影像选择、指标构建、算法设计与精度验证,都将在这个框架内展开。