当前位置: 首页 > news >正文

基于GEE与哨兵2号的土地覆盖分类方法及实现

利用遥感技术进行土地覆盖分类是地表变化监测的基础工作。Google Earth Engine(GEE)平台凭借其海量数据存储与并行计算能力,显著降低了长时间序列、大区域土地分类的技术门槛。本文基于哨兵2号遥感数据,介绍利用GEE实现土地覆盖分类的完整流程,包括数据预处理、特征构建、分类器训练及精度验证等关键环节。

技术优势与数据选择

本方法采用哨兵2号(Sentinel-2)地表反射率数据(COPERNICUS/S2_SR_HARMONIZED),具有以下优势:

  • 空间分辨率达10米,可满足中小尺度土地分类需求
  • 包含13个光谱波段,覆盖可见光至短波红外范围
  • 重访周期为5天,能有效规避云污染影响

结合GEE平台特性,可实现:

  • 免数据下载与预处理,直接调用标准化产品
  • 集成多种分类算法,支持交叉验证与精度对比
  • 自动化批量处理,快速生成多时相分类结果

技术流程与实现代码

1. 研究区定义

首先加载研究区矢量边界,确保后续分析范围精准:

// 替换为实际研究区资产路径
var roi = ee.FeatureCollection("your研究区资产路径");
Map.centerObject(roi, 9); // 设定地图显示中心与缩放级别

2. 影像合成与特征构建

通过年度合成消除云干扰,并构建光谱特征与指数特征:

function getComposite(year) {// 哨兵2号影像年度合成var s2 = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED').filterDate(ee.Date.fromYMD(year, 1, 1), ee.Date.fromYMD(year, 12, 31)).filterBounds(roi).filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20)) // 云量控制.select(['B2', 'B3', 'B4', 'B5', 'B6', 'B8', 'B11', 'B12']).median() // 中值合成抑制噪声.clip(roi);// 特征指数计算var ndvi = s2.normalizedDifference(['B8', 'B4']).rename('NDVI'); // 植被指数var ndwi = s2.normalizedDifference(['B3', 'B8']).rename('NDWI'); // 水体指数var ndbi = s2.normalizedDifference(['B11', 'B8']).rename('NDBI'); // 建筑指数// 地形数据集成var dem = ee.Image('USGS/SRTMGL1_003').clip(roi).rename('DEM');// 整合所有特征波段return s2.addBands([ndvi, ndwi, ndbi, dem]);
}

特征集包含:

  • 8个原始光谱波段(B2-B12)
  • 3个地物指数(NDVI、NDWI、NDBI)
  • 1个地形因子(DEM)

3. 样本采集与数据集划分

样本质量直接决定分类精度,需按土地覆盖类型系统采集:

// 加载五类地物样本(替换为实际样本资产路径)
var waterSamples = ee.FeatureCollection("your水体样本路径");
var builtSamples = ee.FeatureCollection("your建筑样本路径");
var vegSamples = ee.FeatureCollection("your植被样本路径");
var cropSamples = ee.FeatureCollection("your耕地样本路径");
var unusedSamples = ee.FeatureCollection("your未利用地样本路径");// 样本类别编码(0-4对应五类地物)
var labeledSamples = waterSamples.map(f => f.set('class', 0)).merge(builtSamples.map(f => f.set('class', 1))).merge(vegSamples.map(f => f.set('class', 2))).merge(cropSamples.map(f => f.set('class', 3))).merge(unusedSamples.map(f => f.set('class', 4)));// 数据集划分(70%训练,30%验证)
var sampleWithRandom = labeledSamples.randomColumn('random');
var trainingSet = sampleWithRandom.filter(ee.Filter.lt('random', 0.7));
var validationSet = sampleWithRandom.filter(ee.Filter.gte('random', 0.7));

样本采集规范

  • 每个类别样本数量不少于100个
  • 样本需均匀分布于研究区
  • 优先选择纯净像元(混合像元比例<10%)
  • 样本点空间距离应大于30米(避免空间自相关)

4. 分类器选择与训练

采用四种经典机器学习算法进行对比实验:

// 分类器配置
var classifiers = {RF: ee.Classifier.smileRandomForest(100),  // 随机森林(100棵决策树)CART: ee.Classifier.smileCart(),           // 分类回归树SVM: ee.Classifier.libsvm({                // 支持向量机kernelType: 'LINEAR',cost: 10}),GBT: ee.Classifier.smileGradientTreeBoost({ // 梯度提升树numberOfTrees: 50,learningRate: 0.1})
};

分类器训练参数说明:

  • 随机森林:通过100棵树集成降低过拟合风险
  • SVM:采用线性核函数,正则化参数设为10
  • 梯度提升树:50棵树逐步迭代优化,学习率0.1

5. 分类执行与精度验证

分类完成后需通过混淆矩阵评估精度:

// 地物类别配色方案(RGB值)
var palette = ['#173bd6', '#ff1711', '#48dc4a', '#ffc82d', '#7979a1'];// 分类与验证流程
var targetYear = 2024;
var inputImage = getComposite(targetYear);Object.keys(classifiers).forEach(classifierName => {// 模型训练var trainedClassifier = classifiers[classifierName].train({features: trainingSet,classProperty: 'class',inputProperties: inputImage.bandNames()});// 执行分类var classificationResult = inputImage.classify(trainedClassifier);// 结果可视化Map.addLayer(classificationResult, {min: 0, max: 4, palette: palette}, `${targetYear}年-${classifierName}分类结果`);// 精度验证var validationResult = validationSet.classify(trainedClassifier);var confusionMatrix = validationResult.errorMatrix('class', 'classification');// 精度指标计算var overallAccuracy = confusionMatrix.accuracy();var kappaCoeff = confusionMatrix.kappa();var producersAccuracy = confusionMatrix.producersAccuracy();// 精度结果输出print(`${classifierName}总体精度`, overallAccuracy);print(`${classifierName}Kappa系数`, kappaCoeff);
});

主要精度指标:

  • 总体精度(Overall Accuracy):正确分类样本占总样本的比例
  • Kappa系数:考虑随机误差的一致性系数(0-1,越高越好)
  • 生产者精度:某类别被正确分类的比例

6. 结果导出

将分类结果与精度报告导出至云端存储:

// 分类影像导出
Export.image.toDrive({image: classificationResult,description: `LandClassification_${targetYear}`,folder: 'GEE_Export',region: roi,scale: 10,maxPixels: 1e13
});// 精度报告导出
Export.table.toDrive({collection: ee.FeatureCollection(accuracyResults),description: 'ClassificationAccuracy_Report',fileFormat: 'CSV'
});

部分结果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

关键技术要点

  1. 特征优化

    • 新增红边波段(B5-B7)可提升植被细分精度
    • 季节性合成(如生长季/非生长季)适用于物候差异显著区域
  2. 精度提升策略

    • 采用分层抽样确保样本类别均衡
    • 加入空间自相关特征(如纹理指数)可改善边界分类效果
    • 对低精度类别进行样本增补与重训练
  3. 效率优化

    • 大区域分类可采用分块处理策略
    • 特征降维(如主成分分析)可减少计算量

应用场景

本方法可广泛应用于:

  • 国土空间规划中的用地结构分析
  • 生态保护中的植被覆盖动态监测
  • 农业生产中的耕地变化与作物估产
  • 城镇化进程中的建设用地扩张监测

通过替换研究区矢量与样本数据,该流程可快速迁移至不同区域。实际应用中应根据研究目标调整分类体系与特征组合,以获得最优结果。

http://www.lryc.cn/news/593490.html

相关文章:

  • python网络爬虫之selenium库(二)
  • uview-ui使用u-row+u-avatar居中布局
  • uview-ui使用u-icon文字图标展示
  • react+antd 可拖拽模态框组件
  • Python之--元组
  • RabbitMQ01——基础概念、docker配置rabbitmq、内部执行流程、五种消息类型、测试第一种消息类型
  • Java学习--------消息队列的重复消费、消失与顺序性的深度解析​
  • I/O 多路复用select,poll
  • Java 中的继承与多态
  • 5.组合模式
  • 3.5软件开发活动[2-系统设计]面向对象设计-UML统一开发过程
  • [故障诊断方向]SNNs:针对小样本轴承故障诊断的孪生神经网络模型
  • 在Vscode中使用Kimi K2模型:实践指南,三分钟生成个小游戏
  • 练习三:熟知前端知识
  • 目标检测中的标签分配算法总结
  • MinIO深度解析:从核心特性到Spring Boot实战集成
  • Vue的路由模式的区别和原理
  • 《Qt5串口开发》搭建跨平台通信系统
  • VSCode用Python操作MySQL:环境配置与代码验证
  • 操作系统-分布式同步
  • 实验室危险品智能管控:行为识别算法降低爆炸风险
  • Mybatis学习之简介(一)
  • Vue 3 中封装并使用 IndexedDB 的完整教程(含泛型、模块化、通用 CRUD)
  • Vue Swiper组件
  • 93.数字信号处理相关的一些问题
  • 单元测试学习+AI辅助单测
  • 【ArcGIS技巧】最近分享的GIS插件总结与优化
  • Spring MVC源码分析 DispatcherServlet#getHandlerAdapter方法
  • LVS四种工作模式深度解析
  • Go 语言核心机制深度剖析:指针、defer、多态与空接口实战指南