【GEE笔记】在线分类流程,标注样本点、分类和精度评价

GEE在线分类流程

介绍

GEE(Google Earth Engine)是一个强大的地理信息处理平台,可以实现在线的遥感影像分析和处理。本文将介绍如何使用GEE进行在线的分类流程,包括标注样本点、分类和精度评价。本文以2020年5月至8月的哨兵2影像为例,对区域内的土地覆盖类型进行分类。

标注样本点

首先,加载原始影像,进行在线的标注。

加载的影像:

加载影像的代码如下:

javascript 复制代码
var geometry = ee.Geometry.Polygon(
        [[[121.81940156260009, 40.92383488850036],
          [121.81940156260009, 40.73887826797227],
          [121.99998933115478, 40.73887826797227],
          [121.99998933115478, 40.92383488850036]]], null, false)
var year=2020 //设置年份
var bandlist=['B2','B3','B4','B8','B11','B12'] //设置波段列表
var start = ee.Date(year+'-5-1'); //设置开始日期
var finish = ee.Date(year+'-8-1'); //设置结束日期

var dataset = ee.ImageCollection('COPERNICUS/S2_SR') //加载哨兵2影像集合
                  .filterDate(start, finish) //按日期过滤
                  .filterBounds(geometry) //按范围过滤
                  .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20)) //按云量过滤
                  
dataset=dataset.select(bandlist); //按波段选择            
var rgbVis = {
  min: 0.0, 
  max: 3000, 
  bands: ['B4', 'B3', 'B2'], //设置RGB波段
};


Map.centerObject(geometry) //地图中心定位到范围
print(dataset) //打印影像集合信息

var image=dataset.median().clip(geometry) //计算影像集合的中值,并裁剪到范围
Map.addLayer(image,rgbVis) //添加影像图层

标注样本点过程如下:

1、创建样本点集合对象(集合名称可以设置为类别名称便于区分)

2、设置类别字段及其属性(属性为类别数字代码)

分类

接下来,进行分类。选择随机森林算法作为分类器(也可选择GEE官方其他分类器)。将样本点集合分为训练集和测试集,用训练集来训练分类器,用测试集来评估分类器的性能。

分类主要包括合并样本点集合、划分训练集和测试集、训练分类器、应用分类器、添加分类图层。分类的结果如下图所示:

分类的代码如下:

javascript 复制代码
var sample=danshui.merge(haishui).merge(jianpeng).merge(nongtian).merge(luwie).merge(jianzhu)
.merge(tantu).merge(caodi) //合并样本点集合

var withRandom = sample.randomColumn('random'); //给样本点集合添加随机数列
var split = 0.7;  //七成训练 三成测试
var trainingPartition2 = withRandom.filter(ee.Filter.lt('random', split)); //按随机数列划分训练集
var testingPartition = withRandom.filter(ee.Filter.gte('random', split)); //按随机数列划分测试集

var trainingPartition=image.sampleRegions({ //从影像中提取训练集的像素值
    collection: trainingPartition2, //输入训练集
    scale:10, //设置空间分辨率
    properties: ['Map'], //设置类别字段
    })
var classifier = ee.Classifier.smileRandomForest(100).train({ //训练随机森林分类器
  features: trainingPartition, //输入训练集
  classProperty:'Map', //设置类别字段
  // inputProperties :['B4', 'B3', 'B2']
});
var classied=image.classify(classifier,"smileRandomForest"); //应用分类器

Map.addLayer(classied.randomVisualizer()) //添加分类图层

精度评价

最后需要评估分类器的性能,计算分类精度。

可以通过以下代码来评估分类精度:

javascript 复制代码
var pixelValues2=classied.sampleRegions({ //从影像中提取测试集的像素值
    collection: testingPartition, //输入测试集
    scale:10, 
});
print("pixelValues2",pixelValues2); //打印测试集信息
var confusionMatrix2 = pixelValues2.errorMatrix("Map", 'smileRandomForest');//,[10,20,30,40,50,60,80,90] //计算混淆矩阵
print('confusionMatrix', confusionMatrix2); //打印混淆矩阵
print('accuracy()', confusionMatrix2.accuracy()); //打印总体精度
// print('consumersAccuracy', confusionMatrix2.consumersAccuracy());
print('kappa()', confusionMatrix2.kappa()); //打印Kappa系数
//print('order()', confusionMatrix.order());
// print('producersAccuracy()', confusionMatrix2.producersAccuracy());
相关推荐
Li_RuiQi10 小时前
DAgger与交互式模仿学习_ACT学习笔记
笔记·学习
He BianGu10 小时前
【笔记】C# 中BindingFlags的详细作用
笔记·c#
AI视觉网奇10 小时前
turtle 入门教程笔记
笔记
跨知易知识产权11 小时前
美国专利确权是什么,和专利诉讼有什么不一样?
笔记
杨逢昌工厂6S管理11 小时前
126-杨逢昌6S三环体系:越做越乱的现场熵增机理与基准化治理——一线现场诊断笔记
经验分享·笔记·职场和发展·学习方法
悟道书生11 小时前
若依 RBAC 权限控制学习笔记
java·网络·笔记·sql·学习·vue
陈哈哈111111 小时前
折腾了半天,总算把 Vim 9.2 装明白了
笔记
陈哈哈111111 小时前
折腾了半天,总算把 OpenGL 的开发环境给装明白了
笔记
深圳老胡12 小时前
STM32F103 硬件 SPI 与软件 IO 模拟 SPI 最高速度差异详解
笔记·stm32·单片机·代码规范·1024程序员节
正弦波_Wave12 小时前
【Orcad原理图打印Pdf】
笔记·pdf