基于GEE的LUCC驱动因子动态分析及实现

一、引言

本文以2015-2020年上海地区为研究区,基于GEE实现LUCC变化识别、驱动因子提取及重要性评估的完整流程,为LUCC驱动机制研究提供可复用的技术框架。

二、技术原理与数据基础

2.1 核心技术框架

LUCC驱动因子分析的核心逻辑是通过对比“变化区域”与“未变化区域”的环境与人文特征差异,识别对土地利用转换具有显著影响的因子。本研究采用“变化识别-因子提取-模型评估”三步框架:

  1. LUCC变化识别:通过两期土地覆盖数据对比,确定土地利用类型发生转换的空间范围;
  2. 驱动因子提取:选取与LUCC密切相关的自然与人文因子,构建因子数据集;
  3. 驱动机制评估:利用随机森林模型量化各因子对LUCC的贡献度(重要性),揭示主导驱动因子。

2.2 数据来源与预处理(实际上土地利用数据可以替换为前面发的内容中我们自己做的数据)

数据类型数据源空间分辨率时间范围预处理方法
土地覆盖数据MODIS/MCD12Q1(LC_Type1)500m2015年、2020年裁剪至研究区,提取主要地类代码
夜光数据NOAA/VIIRS/DNB(月度合成)500m2015-2020年计算多年均值,反映人类活动强度
地表温度数据MODIS/MOD11A2(白天温度)1km2015-2020年辐射定标(转换为℃),裁剪至研究区
植被指数数据MODIS/MOD13A2(NDVI)1km2015-2020年辐射定标(转换为-1~1),计算均值
地形数据USGS/SRTMGL1_003(DEM)30m静态数据重采样至500m,裁剪至研究区

三、代码实现与解析

3.1 研究区与参数设置

// 定义研究区(上海行政边界)
var roi = ee.FeatureCollection("projects/your/assets/SHANGHAI");
// 定义分析时段
var yearStart = 2015;
var yearEnd = 2020;

说明:研究区采用上海行政边界矢量数据,分析时段选取2015-2020年,该时段为上海城市化后期转型关键期,LUCC特征显著。

3.2 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)。

3.3 驱动因子数据集构建

// 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');

数据处理说明

  • 夜光数据采用多年均值消除季节性波动,反映长期人类活动强度;
  • 地表温度与NDVI均经过辐射定标,转换为物理意义明确的数值(℃、-1~1);
  • 所有因子均裁剪至研究区,确保空间范围一致性。

3.4 特征栈合成与采样

// 合成特征栈(变化信息+驱动因子)
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)的比例均衡,避免因样本偏差影响模型精度。

3.5 驱动因子重要性评估(随机森林模型)

// 样本量检查(防错机制)
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的区分能力越强。

3.6 可视化与结果导出

// 基础可视化配置
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变化类型
在这里插入图片描述

四、结果分析与讨论

4.1 LUCC驱动因子重要性特征

以上海地区2015-2020年数据为例,驱动因子重要性通常表现为:

  • 夜光强度(night):重要性最高,反映城市化进程中人类活动(如建设用地扩张)是LUCC的核心驱动;
  • NDVI(ndvi):重要性次之,表明植被覆盖变化与土地利用转换(如耕地转建设用地)密切相关;
  • 地表温度(lst):重要性中等,土地覆盖变化与热环境相互影响;
  • DEM(dem):重要性最低,上海地形平坦,地形对LUCC的限制较弱。

1. 实际结果
在这里插入图片描述

4.2 方法优势与局限

优势

  1. 全流程基于GEE实现,规避了海量遥感数据的本地存储与计算压力;
  2. 集成样本量检查、自动预警等防错机制,提升方法稳定性;
  3. 量化驱动因子重要性,为LUCC机制解析提供定量化依据。

局限

  1. 未包含社会经济数据(如GDP、人口),人文驱动因子解析不够全面;
  2. MODIS数据分辨率(500m)较低,难以捕捉小尺度LUCC(如村级建设用地扩张)。

五、方法总结与应用展望

5.1 方法总结

本文提出的基于GEE的LUCC驱动因子分析方法,通过“数据-模型-可视化”全流程整合,实现了以下技术突破:

  1. 高效性:依托GEE云端计算能力,规避了传统方法中数据下载、预处理的繁琐流程,可在小时级完成大区域LUCC驱动因子分析;
  2. 鲁棒性:集成样本量自动检查、异常值预警等防错机制,确保模型在数据质量较差时仍能稳定输出结果或提示调整方案;
  3. 定量化:通过随机森林模型量化驱动因子重要性,突破了传统定性分析的局限,为LUCC机制解析提供可比较的数值依据。

5.2 应用展望

  1. 多尺度扩展:可将方法推广至区域(如长江三角洲)、全国乃至全球尺度,仅需替换研究区矢量数据并调整采样参数;
  2. 因子优化:后续可纳入社会经济数据(如夜间灯光数据细化至月度、POI兴趣点密度)和自然因子(如降水、土壤类型),提升驱动机制解析的全面性;
  3. 动态监测:通过逐年更新数据,构建LUCC驱动因子的时间序列,分析驱动机制的年际变化特征(如城市化后期人文因子影响力的衰减);
  4. 决策支持:基于驱动因子重要性结果,可为土地利用规划提供靶向建议(如针对夜光强度高的区域加强生态保护红线管控)。

欢迎关注下面的公众号获取更多内容!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

遥感AI实战

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值