本文以2015-2020年上海地区为研究区,基于GEE实现LUCC变化识别、驱动因子提取及重要性评估的完整流程,为LUCC驱动机制研究提供可复用的技术框架。
LUCC驱动因子分析的核心逻辑是通过对比“变化区域”与“未变化区域”的环境与人文特征差异,识别对土地利用转换具有显著影响的因子。本研究采用“变化识别-因子提取-模型评估”三步框架:
数据类型 | 数据源 | 空间分辨率 | 时间范围 | 预处理方法 |
---|---|---|---|---|
土地覆盖数据 | MODIS/MCD12Q1(LC_Type1) | 500m | 2015年、2020年 | 裁剪至研究区,提取主要地类代码 |
夜光数据 | NOAA/VIIRS/DNB(月度合成) | 500m | 2015-2020年 | 计算多年均值,反映人类活动强度 |
地表温度数据 | MODIS/MOD11A2(白天温度) | 1km | 2015-2020年 | 辐射定标(转换为℃),裁剪至研究区 |
植被指数数据 | MODIS/MOD13A2(NDVI) | 1km | 2015-2020年 | 辐射定标(转换为-1~1),计算均值 |
地形数据 | USGS/SRTMGL1_003(DEM) | 30m | 静态数据 | 重采样至500m,裁剪至研究区 |
// 定义研究区(上海行政边界)
var roi = ee.FeatureCollection("projects/your/assets/SHANGHAI");
// 定义分析时段
var yearStart = 2015;
var yearEnd = 2020;
说明:研究区采用上海行政边界矢量数据,分析时段选取2015-2020年,该时段为上海城市化后期转型关键期,LUCC特征显著。
// 函数:获取单年度MODIS土地覆盖数据
function getLUCC_MODIS(year) {
var img = ee.ImageCollection('MODIS/006/MCD12Q1')
.filter(ee.Filter.calendarRange(year, year, 'year')) // 按年份筛选
.first() // 获取该年度影像
.select('LC_Type1') // 选取土地覆盖类型波段
.clip(roi); // 裁剪至研究区
return img.rename('lc_' + year); // 重命名波段便于识别
}
// 获取起止年份土地覆盖数据
var lc_start = getLUCC_MODIS(yearStart);
var lc_end = getLUCC_MODIS(yearEnd);
// 识别变化区域(1=变化,0=未变化)
var lucc_change = lc_start.neq(lc_end).rename('lucc_change');
核心逻辑:通过对比2015年与2020年土地覆盖数据,利用neq
(不等于)运算识别类型转换区域,生成二值化变化图(变化=1,未变化=0)。
// 1. 夜光强度(人类活动因子)
var night = ee.ImageCollection('NOAA/VIIRS/DNB/MONTHLY_V1/VCMSLCFG')
.filterDate(yearStart + '-01-01', yearEnd + '-12-31')
.mean() // 多年均值
.select('avg_rad').clip(roi).rename('night');
// 2. 地表温度(LST,环境因子)
var lst = ee.ImageCollection('MODIS/061/MOD11A2')
.filterDate(yearStart + '-01-01', yearEnd + '-12-31')
.select('LST_Day_1km')
.mean()
.multiply(0.02).subtract(273.15) // 辐射定标(K→℃)
.clip(roi).rename('lst');
// 3. 植被指数(NDVI,生态因子)
var ndvi = ee.ImageCollection('MODIS/061/MOD13A2')
.filterDate(yearStart + '-01-01', yearEnd + '-12-31')
.select('NDVI').mean().multiply(0.0001) // 辐射定标(0→10000→0→1)
.clip(roi).rename('ndvi');
// 4. 地形因子(DEM)
var dem = ee.Image('USGS/SRTMGL1_003').clip(roi).rename('dem');
数据处理说明:
// 合成特征栈(变化信息+驱动因子)
var featureStack = lucc_change.addBands([night, lst, ndvi, dem]);
var bands = ['night', 'lst', 'ndvi', 'dem']; // 驱动因子波段名
// 分层采样(确保变化/未变化样本均衡)
var samples = featureStack.stratifiedSample({
numPoints: 1000, // 总样本量
classBand: 'lucc_change', // 分类依据(变化/未变化)
region: roi,
scale: 500, // 采样分辨率(与土地覆盖数据一致)
geometries: true, // 保留采样点几何信息
seed: 2025, // 随机种子(保证结果可重复)
tileScale: 2 // 并行计算优化
});
采样设计:采用分层采样确保变化样本(lucc_change=1)与未变化样本(lucc_change=0)的比例均衡,避免因样本偏差影响模型精度。
// 样本量检查(防错机制)
samples.size().evaluate(function(n){
if (n < 10) {
print('【警告】采样点数量不足10,无法建模,请扩大研究区或延长时间跨度');
} else {
// 随机森林建模
var classifier = ee.Classifier.smileRandomForest(50) // 50棵决策树
.train({
features: samples,
classProperty: 'lucc_change', // 因变量(变化/未变化)
inputProperties: bands // 自变量(驱动因子)
});
// 提取驱动因子重要性
var importances = ee.Dictionary(classifier.explain().get('importance'));
print('驱动因子重要性(数值越高影响越大):', importances);
// 变化预测(验证模型效果)
var prediction = featureStack.select(bands).classify(classifier);
}
});
模型原理:随机森林通过多棵决策树集成学习,计算各驱动因子在分类过程中的贡献度(重要性),数值越高表明该因子对LUCC的区分能力越强。
// 基础可视化配置
Map.centerObject(roi, 9);
// LUCC变化空间分布
Map.addLayer(lucc_change, {min:0, max:1, palette:['#7fc97f','#beaed4']}, 'LUCC变化(0=未变,1=变化)');
// 预测结果可视化
Map.addLayer(prediction, {min:0, max:1, palette:['#e0ecf4','#8856a7']}, 'LUCC变化预测');
// 图例构建函数
function makeLegend(title, dict, position) {
var legend = ui.Panel({style: {position: position, padding: '8px 15px'}});
legend.add(ui.Label({value: title, style: {fontWeight: 'bold', fontSize: '14px'}}));
Object.keys(dict).forEach(function(key){
var entry = ui.Panel({layout: ui.Panel.Layout.Flow('horizontal')});
entry.add(ui.Label({style: {backgroundColor: dict[key], padding: '8px'}}));
entry.add(ui.Label(key));
legend.add(entry);
});
return legend;
}
// 添加图例
Map.add(makeLegend('LUCC变化类型', {'未变化':'#7fc97f','变化':'#beaed4'}, 'bottom-left'));
Map.add(makeLegend('预测变化类型', {'预测未变':'#e0ecf4','预测变化':'#8856a7'}, 'bottom-right'));
// 导出采样数据(用于本地验证)
Export.table.toDrive({
collection: samples,
description: 'LUCC_Driving_Factors_Samples',
fileFormat: 'CSV'
});
可视化设计:通过对比实际变化与预测变化的空间分布,直观评估模型效果;图例采用统一配色逻辑,确保变化/未变化类型的区分度。
可视化结果:
1. LUCC变化类型
2. 预测LUCC变化类型
以上海地区2015-2020年数据为例,驱动因子重要性通常表现为:
优势:
局限:
本文提出的基于GEE的LUCC驱动因子分析方法,通过“数据-模型-可视化”全流程整合,实现了以下技术突破:
欢迎关注下面的公众号获取更多内容!