1. 矿区时序变化检测概述
矿区地表变化与城市扩张、森林砍伐有一个本质区别:它往往不是缓慢、连续、均匀发生的,而是由一系列离散的、局部的、强度很高的扰动事件叠加而成。一处露天采场可能在几个月内从山体变成深坑,排土场会在持续排弃中不断“长高、外扩”,尾矿库的干滩面积随季节和生产节奏反复伸缩,而矿区道路、工业广场、复垦区又在不同时间点被新建、翻修或覆盖植被。因此,矿区监测的核心不是“某一年地物是什么”,而是“地表在什么时间、以什么方式、朝什么方向被改变”。
一、矿区开采活动的地表扰动特征
从遥感观测角度看,开采扰动主要表现为四类可辨识特征。第一是几何形态突变:采坑边界外扩、台阶出现、边坡后退,表现为高对比度的边缘和阴影结构。第二是光谱与纹理反转:植被覆盖区被剥离为裸岩、裸土,NDVI 骤降而短波红外反射率升高;排土场新排弃物料则呈现高亮、粗糙、无规则纹理。第三是地形与阴影关系改变:采坑加深、排土场堆高会改变局部坡向与阴影分布,在光学影像上形成稳定的明暗格局。第四是时序上的阶跃与持续漂移:剥离、排弃属于阶跃型变化,而复垦植被恢复、边坡自然稳定则表现为缓慢漂移。这四类特征决定了矿区变化检测必须同时关注“空间形态”和“时间节奏”,单期分类图难以支撑判断。
二、时序变化检测的定义与任务边界
时序变化检测可定义为:在同一地理范围内,利用按时间排序的多期观测,识别地表状态发生改变的位置、时刻、类型与方向,并区分真实变化与观测噪声。它包含四个层次的任务:变化有无(二值检测)、变化时刻(时间定位)、变化类型(如新增采坑、排土场扩张、复垦转绿)、变化方向与强度(增加/减少、幅度大小)。
需要明确边界。其一,变化检测不等于地物分类:分类回答“是什么”,变化检测回答“何时由什么变成了什么”,二者可互相支撑但目标不同。其二,检测结果受观测条件制约:云、雪、阴影、传感器差异、物候都会制造“伪变化”,因此必须设置噪声抑制与置信判断环节。其三,矿区变化具有尺度依赖性:采坑边界在 10 m 分辨率下可辨,而小型堆料点、临时道路可能低于可检测下限,任务设计时应先明确最小关注图斑与时间粒度。
三、Google Earth Engine 在矿区监测中的角色与优势
矿区时序监测的现实难点在于数据量与一致性:一个中型矿区按月度观测、跨越五年,就涉及数十景影像、多颗传感器、上万平方公里的候选数据。GEE 的价值在于把“数据获取—预处理—时序计算—结果导出”放在同一云端环境中完成。其核心优势可归纳为:目录级数据访问(Landsat、Sentinel-2 等集合已做几何与辐射预处理)、服务器端计算(对影像集合做 map/reduce,无需逐景下载)、统一的时间与空间筛选接口(filterDate、filterBounds、云掩膜)、可复现的脚本化流程(同一脚本可在不同矿区复用并留痕)。
下面这张图把本节的核心逻辑串起来:左侧是矿区四类扰动特征,中间是时序变化检测的四个任务层次,右侧是 GEE 提供的能力支撑,底部则标出必须控制的噪声来源。它表达的是“特征—任务—平台能力—误差控制”的对应关系,而不是操作步骤。
四、一个可执行的最小示例
为了让概念落地,下面给出一个“先看变化、再定类型”的最小脚本骨架。它不追求精度,而是示范 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 差分来区分“植被减少”与“地形开挖”,并对候选图斑做目视核查与野外验证,才能把“变化有无”推进到“变化类型”。
综上,本节确立的是后续所有章节的共同框架:以矿区扰动特征为观测对象,以“有无—时刻—类型—强度”为任务层次,以 GEE 的集合化计算为实施载体,并把噪声控制作为结果可信度的前置条件。后续的影像选择、指标构建、算法设计与精度验证,都将在这个框架内展开。