GEE22:基于目视解译的土地利用分类(随机森林监督分类)

采样点信息:
在这里插入图片描述

设置一下采样点参数:
在这里插入图片描述

代码:

//设置研究区位置
var table = ee.FeatureCollection("users/cduthes1991/boundry/China_province_2019");
var roi = table.filter(ee.Filter.eq('provinces','beijing'));
Map.centerObject(roi, 8)
Map.addLayer(roi.style({color:'black',fillColor:'00000000'}),{},'roi');

//设置时间窗口
var startDate = '2023-03-01';
var endDate = '2023-10-01';
var L9 = ee.ImageCollection('LANDSAT/LC09/C02/T1_L2');

// 进行比例换算
function applyScaleFactors(image) {
  var opticalBands = image.select('SR_B.').multiply(0.0000275).add(-0.2);
  var thermalBands = image.select('ST_B.*').multiply(0.00341802).add(149.0);
  return image.addBands(opticalBands, null, true)
              .addBands(thermalBands, null, true);
} 
//去云处理
function rmL89Cloud(image) { 
  var Cirrus = (1 << 2);
  var cloud = (1 << 3); 
  var cloudsShadow = (1 << 4); 
  var qa = image.select('QA_PIXEL'); 
  var mask = qa.bitwiseAnd(Cirrus).eq(0) 
                 .and(qa.bitwiseAnd(cloud).eq(0))
                 .and(qa.bitwiseAnd(cloudsShadow).eq(0)); 
  return image.updateMask(mask); 
}
//指数计算
function addIndexs (image){
     var ndvi = image.normalizedDifference(['SR_B5','SR_B4']).rename('ndvi');
     var bsi = image.expression(
         "((SR_B7+SR_B3)-(SR_B4-SR_B1))/(SR_B7+SR_B3)+(SR_B4-SR_B1)",
          {
            "SR_B7": image.select('SR_B7'),
            "SR_B4": image.select('SR_B4'),
            "SR_B3": image.select('SR_B3'),
            "SR_B1": image.select('SR_B1')
          }
      ).rename('bsi');
      var lswi = image.normalizedDifference(["SR_B4", "SR_B7"]).rename('lswi');
      var mndwi = image.addBands(image.normalizedDifference(["SR_B1", "SR_B7"]).rename('mndwi'));
      return image.addBands(ndvi).addBands(bsi).addBands(lswi).addBands(mndwi);
}
//获取研究区时间窗口内数据
var img = L9.filterDate(startDate,endDate)
            .filterBounds(roi)
            .map(applyScaleFactors)
            .map(addIndexs)
            .map(rmL89Cloud)
            .median()
            .clip(roi)
            .select(['SR_B2','SR_B3','SR_B4','SR_B5','SR_B6','SR_B7','ndvi','bsi','lswi','mndwi'])
var visualization = {
  bands: ['SR_B4', 'SR_B3', 'SR_B2'],
  min: 0.0,
  max: 0.3,
};
Map.addLayer(img,visualization,'img');
print(img)

//合并样本
var samples = water.merge(building).merge(forest);
print('Sample Collection', samples)

//利用样本点对遥感数据进行采样
var samples_img = img.sampleRegions({
  collection:samples,
  properties:['landcover'],
  scale:30,
  tileScale:8,
  geometries:true,
})
print("sample information: ", samples_img)

//给样本添加随机数,用于训练和验证
var samples_img = samples_img.randomColumn();
print('samples_img',samples_img)
// 将样本随机分为7:3,70%用于训练,30%用于验证
var training_samples = samples_img.filter(ee.Filter.lte('random',0.7));
var validation_samples = samples_img.filter(ee.Filter.gte('random',0.7));
//设置分类器
var classifer = ee.Classifier.smileRandomForest(300).train({
  features:training_samples,
  classProperty:'landcover',
  inputProperties:img.bandNames(),
})
//利用分类器对影像进行分类
var Classified_RF = img.classify(classifer)
var visParam = [
  'blue', // 水体water
  'red', // 建筑用地urban
  'green', // 林地forest
];

//显示分类结果(色彩设置依据IGBG)
Map.addLayer(Classified_RF,{'palette':visParam, min:1,max:3},'Classified_RF');
//精度验证
var test = validation_samples.classify(classifer);
var confussionMatrix = test.errorMatrix('landcover','classification');
var accuracy = confussionMatrix.accuracy();
var kappa = confussionMatrix.kappa();
var userAccuracy = confussionMatrix.consumersAccuracy();
var productAccuracy = confussionMatrix.producersAccuracy();
print('accuracy',accuracy);
print('kappa',kappa);
print('userAccuracy',userAccuracy);
print('productAccuracy',productAccuracy);

// 图像导出
Export.image.toDrive({
    image: Classified_RF,
    description: 'Classified_RF',
    region: roi,
    scale: 250,
    maxPixels: 1e13,
	folder: 'LUCC'
})


结果展示:
在这里插入图片描述
以上结果只是一个简单示例,需要设置更多的采样点才能更精确分类。

  • GEE代码链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/499811.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Machine Learning机器学习之数据可视化

目录 前言 一、 数据预处理与清洗 二、常见可视化技术 三、可视化工具和平台 博主介绍&#xff1a;✌专注于前后端、机器学习、人工智能应用领域开发的优质创作者、秉着互联网精神开源贡献精神&#xff0c;答疑解惑、坚持优质作品共享。本人是掘金/腾讯云/阿里云等平台优质作者…

MES系统怎么解决车间生产调度难的问题?

MES系统三个层次 1、MES决定了生产什么&#xff0c;何时生产&#xff0c;也就是说它使公司保证按照订单规定日期交付准确的产品&#xff1b; 2、MES决定谁通过什么方式&#xff08;流程&#xff09;生产&#xff0c;即通过优化资源配置&#xff0c;最有效运用资源&#xff1b; …

PCI总线管脚定义(引脚定义)

文章目录 1&#xff1a; 参考资料的链接2: 图片说明3&#xff1a;PCI文字说明每日好图 1&#xff1a; 参考资料的链接 PCI bus pinout PCI三种标准引脚信号定义 PCI bus pinout 2: 图片说明 A面和B面正反 PCI Universal Card 32/64 bit ----------------------------------…

同事们希望我拥有博士学位,但资历并不是一切

罗伯特纽贝克 “你太聪明了&#xff01;你为什么没有博士学位&#xff1f;这个熟悉的问题被当作赞美&#xff0c;但总感觉像是一记耳光。我已经在该组织工作了 2 周&#xff0c;每个人似乎都喜欢我正在做的工作、我带来的观点以及我为我的团队设想的方向。但只有一个小问题&am…

打PTA (15分)(JAVA)

目录 题目描述 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&#xff1a; 输出样例&#xff1a; 题解 题目描述 传说这是集美大学的学生对话。本题要求你做一个简单的自动问答机&#xff0c;对任何一个问句&#xff0c;只要其中包含 PTA 就回答 Yes!&#xff0c;其…

机器学习 - 手动实现 ReLU 和 Sigmoid

直接上代码 import torch import matplotlib.pyplot as pltA torch.arange(-10, 10, 1, dtypetorch.float(32)) def relu(x):return torch.maximum(torch.tensor(0), x) plt.plot(relu(A))结果如下&#xff1a; import torch import matplotlib.pyplot as pltA torch.aran…

FPGA Artix7 Bootloader App Python升级

文章目录 软硬环境复现官方 srec_spi_bootloader例子简介Vivado硬件部分存储划分Vitis 嵌入式 BootVitis 嵌入式 Appelf转换srec合并boot和app得到mcs文件下载测试过程分析 基础知识BIT MCS HEX BINBit SwappingSREC 文件格式Vivado约束 串口Boot地址划分链接脚本修改Github Li…

1.Netty介绍及NIO三大组件

Netty网络编程Netty的底层是NIO&#xff08;非阻塞IO&#xff09;&#xff0c;常用的多线程和线程池使用的是阻塞IO&#xff0c;其效率并不高。支持高并发&#xff0c;性能好高性能的服务端程序、客户端程序 NIO三大组件 一、Channel 读写数据的双向传输通道 常见的传输通道…

Taskflow 简单使用

Hello World #include <taskflow/taskflow.hpp>int main() {tf::Executor executor; tf::Taskflow taskflow;// 返回一个std::tuple<tf::Task, tf::Task, tf::Task, tf::Task> auto [A, B, C, D] taskflow.emplace([](){std::cout<<"A"<<s…

金三银四面试题(六):对象大小知多少

对象和数组在JVM如何在堆中布局&#xff1f;更常见地问法就是对象头都包含哪些信息 在JVM中对象和数组尽管都是连续的内存块。但在堆内存中的布局方式有些不同。 对象的组成 对象在JVM中可以分为三个部分&#xff0c;对象头&#xff08;Header&#xff09;&#xff0c;实例数…

SoC芯片的DVFS技术详解

​A72训练营很多同学问DVFS技术怎么实现的&#xff0c;这里小编就和大家掰扯掰扯SoC芯片的DVFS技术吧。 1. DVFS技术介绍 DVFS&#xff08;Dynamic Voltage and Frequency Scaling&#xff09;即动态电压频率调节技术&#xff0c;是一种高效的低功耗技术&#xff0c;它通过动态…

初始化脚手架

说明: 1 --- Vue脚手架是Vue官方提供的标准化开发工具&#xff08;开发平台&#xff09; 2 --- 最新的版本是 4.x 3 --- 文档 Vue CLI 具体步骤: 1 --- 如果下载缓慢请配置npm淘宝镜像npm config set registry http://registry.npm.taobao.org 2 --- 全局安装 vue/cli npm ins…

Apache Kafka + 矢量数据库 + LLM = 实时 GenAI

公众号&#xff1a;Halo咯咯 生成式人工智能 (GenAI) 支持先进的人工智能用例和创新&#xff0c;但也改变了企业架构的外观。大型语言模型 (LLM)、向量数据库和检索增强生成 (RAG) 需要新的数据集成模式和数据工程最佳实践。 Apache Kafka 和 Apache Flink 的数据流在大规模实时…

CIM搭建实现发送消息的效果

目录 背景过程1、下载代码2、进行配置3、直接启动项目4、打开管理界面5、启动web客户端实例项目6、发送消息 项目使用总结 背景 公司项目有许多需要发送即时消息的场景&#xff0c;之前一直采用的是传统的websocket连接&#xff0c;它会存在掉线严重&#xff0c;不可重连&…

推荐算法策略需求-rank model优化

1.pred_oobe (base) [rusxx]$ pwd /home/disk2/data/xx/icode/baidu/oxygen/rus-pipeline/pipeline-migrate/UserBaseActiveStatPipeline/his_session (base) [rusxx]$ sh test.sh 2. user_skill_history_dict_expt2包含userid [workxx]$ vim /home/work/xx/du-rus/du_rus_o…

2.2.1.3-移动平均线

跳转到根目录&#xff1a;知行合一&#xff1a;投资篇 已完成&#xff1a; 1、投资&技术   1.1.1 投资-编程基础-numpy   1.1.2 投资-编程基础-pandas   1.2 金融数据处理   1.3 金融数据可视化 2、投资方法论   2.1.1 预期年化收益率   2.1.2 一个关于yaxb的…

Docker命令及部署Java项目

文章目录 简介Docker镜像镜像列表查找镜像拉取镜像删除镜像镜像标签 Docker容器容器启动容器查看容器停止和重启后台模式和进入强制停止容器清理停止的容器容器错误日志容器别名及操作 Docker部署Java项目 简介 Docker是一种容器化技术&#xff0c;可以帮助开发者轻松打包应用…

python练习五

1. 给定一个包含n1个整数的数组nums&#xff0c;其数字在1到n之间&#xff08;包含1和n&#xff09;&#xff0c;可知至少存在一个重复的整数&#xff0c;假设只有一个重复的整数&#xff0c;请找出这个重复的数 def find_difnumber(ls):for index in range(0, len(ls)):for n…

如何使用命令行对RK开发板进行OpenHarmony版本烧录?

问题 在 OpenHarmony 自动化测试环境中&#xff0c;需要对流水线上的 RK 设备进行烧录&#xff0c;图形工具只能人工操作&#xff0c;那么有什么方法可以纯命令行进行自动化烧录呢&#xff1f; 思路 我们发现 RK 开发板实际是使用 upgrade_tool 的执行文件进行烧录的&#x…

力扣Lc24--- 434. 字符串中的单词数(java版)-2024年3月29日

1.题目描述 2.知识点 注1&#xff1a; \\s: 匹配一个或多个空格字符。|: 表示逻辑或&#xff0c;用于分隔不同的正则表达式部分。(?[\\p{Punct}]): 正向前瞻&#xff0c;匹配任何标点符号之前的位置。(?<[\\p{Punct}]): 正向后顾&#xff0c;匹配任何标点符号之后的位置…