GEE利用已有土地利用数据选取样本点并进行分类

今日分享:

GEE利用已有土地利用数据选取样本点并进行分类

遥感影像分类精度在定量遥感研究中较为重要,不同地物由于各自特殊的理化性质,在光谱曲线上表现为:吸收谷、反射峰位置不同,由特定反射值形成的夹角、距离、投影不同,且不同地物后向散射系数等存在一定差异,为通过光学、微波传感器识别地类提供一定理论依据。

在进行土地利用分类时,需要目视解译选取训练样本点来进行分类,在面对研究范围较大的区域时,并且要做时序分类时,选取样本点是非常令人头疼的事!!

所以今天我们用已有的土地利用数据随机选取样本点,应用到随机森林分类中。

01


GEE部分实现代码

选择研究区和数据集

cs 复制代码
function maskL8sr(image) {  // Bit 0 - Fill  // Bit 1 - Dilated Cloud  // Bit 2 - Cirrus  // Bit 3 - Cloud  // Bit 4 - Cloud Shadow  var qaMask = image.select('QA_PIXEL').bitwiseAnd(parseInt('11111', 2)).eq(0);  var saturationMask = image.select('QA_RADSAT').eq(0);
  // Apply the scaling factors to the appropriate bands.  var opticalBands = image.select('SR_B.').multiply(0.0000275).add(-0.2);  var thermalBands = image.select('ST_B.*').multiply(0.00341802).add(149.0);
  // Replace the original bands with the scaled ones and apply the masks.  return image.addBands(opticalBands, null, true)      .addBands(thermalBands, null, true)      .updateMask(qaMask)      .updateMask(saturationMask);}Map.centerObject(roi,7)var styling = {color:"red",fillColor:"00000000"};Map.addLayer(roi.style(styling),{},"geometry")
var img = ee.ImageCollection("LANDSAT/LC08/C02/T1_L2")                  .filterDate("2024-5-01", "2024-10-30")                  .filterBounds(roi)                  // Pre-filter to get less cloudy granules.                  .filter(ee.Filter.lte('CLOUD_COVER',10))//云量设置                  .map(maskL8sr)                  .mosaic()                  .clip(roi);print(img)var visualization = {

  min: 0.0,  max: 0.3,  bands: ['SR_B4', 'SR_B3', 'SR_B2'],};Map.addLayer(img, visualization, 'RGB');

利用GOOGLE/DYNAMICWORLD/V1土地覆盖数据集,用作分类器训练中的标签源。

php 复制代码
var lcV1 = ee.ImageCollection('GOOGLE/DYNAMICWORLD/V1')           .filterDate("2024-7-01", "2024-9-30")           .filterBounds(roi).select('label').map(function(image){    return image.clip(roi)  })  .mosaic()  //.divide(255);print(lcV1)// 将土地覆盖类别值重新映射到基于 0 的序列.var classValues = [0, 1, 2, 3, 4, 5, 6, 7, 8];var remapValues = ee.List.sequence(0, 8);var label = 'lcV1';lcV1 = lcV1.remap(classValues, remapValues).rename(label).toByte();// 将土地覆盖添加为反射率图像的一个波段,并在感兴趣区域内的每个土地覆盖类别中以 10 米的尺度采样 200 个像素。var sample = img.addBands(lcV1).stratifiedSample({    numPoints: 100,    classBand: label,    region: roi,    scale: 10,    geometries: true});  print(sample)

向样本添加一个随机值字段,并使用它将大约 80%// 的特征分成训练集,20% 分成验证集

php 复制代码
// 向样本添加一个随机值字段,并使用它将大约 80%// 的特征分成训练集,20% 分成验证集。sample = sample.randomColumn();var trainingSample = sample.filter('random <= 0.8');var validationSample = sample.filter('random > 0.8');Map.addLayer(trainingSample,{color:'red'},'训练样本')Map.addLayer(validationSample ,{color:'blue'},'验证样本')var trainedClassifier = ee.Classifier.smileRandomForest(50)    .train({      features: trainingSample,       classProperty: label,       inputProperties: img.bandNames()    });print('分类结果', trainedClassifier.explain());    // 混淆矩阵var testAccuracy = trainedClassifier.confusionMatrix();// 总体分类精度var accuracy = testAccuracy.accuracy();// 用户分类精度var userAccuracy = testAccuracy.consumersAccuracy();// 生产者精度var producersAccuracy = testAccuracy.producersAccuracy();// Kappa系数var kappa = testAccuracy.kappa();print('混淆矩阵:', testAccuracy);//print('用户分类精度:', userAccuracy);//用户分类精度print('生产者精度:', producersAccuracy);//生产者精度print('总体分类精度', accuracy);//总体分类精度print('Kappa:', kappa);

应用分类器并导出至云盘

php 复制代码
var imgClassified = img.classify(trainedClassifier).clip(roi);// Add the layers to the map.var classVis = {    min: 0,  max: 8,    palette: ['#419bdf' ,'#397d49', '#7a87c6', '#e49635', '#dfc35a', '#c4281b',    '#a59b8f', '#b39fe1']};
Map.addLayer(lcV1, classVis, 'GOOGLE_V1');Map.addLayer(imgClassified, classVis, '分类结果');

//导出函数Export.image.toDrive({  image: imgClassified,  description: 'RF2024a',  crs: "EPSG:4326",  scale: 30,  region: roi,  maxPixels: 1e13,  folder: 'RF'});

02


结果显示

随机筛选的样本点

分类精度

GOOGLE/DYNAMICWORLD/V1土地覆盖数据显示

用于训练的样本点显示

用于验证的样本点

分类结果显示

感谢关注,欢迎转发!

声明:仅供学习使用!

希望关注的朋友们转发, 如果对你有帮助的话记得给小编点个赞或者在看!****

相关推荐
reasonsummer2 分钟前
【教学类-160-01】20260408 AI视频培训-练习1“豆包AI视频”
人工智能·音视频
杜子不疼.3 分钟前
Python + Selenium + AI 智能爬虫:自动识别反爬与数据提取
人工智能·python·selenium
美式请加冰4 分钟前
最短路径问题
java·数据结构·算法
Elastic 中国社区官方博客4 分钟前
Elasticsearch:语义搜索,现在默认支持多语言
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
会编程的土豆4 分钟前
【数据结构与算法】 时间复杂度计算
数据结构·c++·算法
财经资讯数据_灵砚智能4 分钟前
基于全球经济类多源新闻的NLP情感分析与数据可视化(日间)2026年4月8日
大数据·人工智能·python·信息可视化·自然语言处理
枫叶林FYL5 分钟前
【自然语言处理 NLP】多模态与具身智能:视觉-语言预训练技术手册
人工智能·机器学习·自然语言处理
AI获客新方案@柯望望5 分钟前
GEO并非SEO的AI适配版 生成式引擎优化核心术语说明
人工智能·geo·生成式引擎优化
小年糕是糕手5 分钟前
【35天从0开始备战蓝桥杯 -- Day9】
数据结构·数据库·c++·算法·蓝桥杯
Henry-SAP6 分钟前
SAP中STO影响MRP跨厂供需平衡解析
人工智能·sap·erp