GEE入门篇|图像处理(二):在Earth Engine中进行波段计算

news/发布时间2024/9/20 7:56:41

目录

波段计算

1.NDVI的计算

2.NDVI 归一化差值的单次运算计算

3.使用 NDWI 的归一化差值


波段计算

        许多指数可以使用 Earth Engine 中的波段运算来计算。 波段运算是对图像中两个或多个波段进行加、减、乘或除的过程。 在这里,我们将首先手动执行此操作,然后向您展示一些在 Earth Engine 中执行波段运算的更有效方法。

1.NDVI的计算

        由于植被在这些波长下的高反射率,红色和近红外波段提供了大量有关植被的信息。 看一下图 1,特别注意植被曲线(以绿色表示)在 NIR 范围(大约 750-900 nm)内具有相对较高的反射率。 另请注意,植被在红色范围(约 630-690 nm)的反射率较低,此时阳光被叶绿素吸收。 这表明,如果可以将红光和近红外波段结合起来,它们将提供有关植被的大量信息。 1972 年 Landsat 1 发射后不久,分析人员致力于设计一个强大的单一值,以传达沿线植被的健康状况。 比例为 -1 到 1。使用以下公式得出 NDVI:

        其中 NIR 和red指的是这两个波段各自的亮度, 该亮度可以用反射率、辐射率或数字量化值(DN) 等单位来表示; NDVI 旨在在使用这些波长的平台上提供几乎相同的值。 该方程的一般形式称为“归一化差值”,分子是“差值”,分母是“归一化”值。 NDVI 的输出在 -1 和 1 之间变化,大量绿色植被的值约为 0.8–0.9, 没有绿叶的值接近 0,水的值接近 -1。

图1 地球表面不同物体在电磁波谱的可见光和红外部分不同波长下的反射量图;1微米(μm)=1000纳米(nm)

        为了计算NDVI,我们将介绍Earth Engine的波段运算实现。 基于云的波段计算是 Earth Engine 最强大的方面之一,因为该平台的计算机针对这种类型的繁重处理进行了优化。 即使在行星尺度上,波段的计算也可以非常快地完成——这个想法在基于云的遥感出现之前是遥不可及的。 Earth Engine 根据需要自动在大量计算机之间进行计算分区,并组合结果进行显示。

        作为示例,让我们检查旧金山的图像(图 2)。

/
// Band Arithmetic
/
// Calculate NDVI using Sentinel 2
// Import and filter imagery by location and date.
var sfoPoint = ee.Geometry.Point(-122.3774, 37.6194);
var sfoImage = ee.ImageCollection('COPERNICUS/S2')
.filterBounds(sfoPoint).filterDate('2020-02-01', '2020-04-01').first();
// Display the image as a false color composite.
Map.centerObject(sfoImage, 11);
Map.addLayer(sfoImage, {bands: ['B8', 'B4', 'B3'],min: 0,max: 2000
}, 'False color');

图2 旧金山及周边地区的假彩色 Sentinel-2 图像

        Earth Engine 中最简单的数学运算是加法、减法、乘法和除法。 让我们选择近红外和红光波段,并使用这些操作来计算图像的 NDVI。

// Extract the near infrared and red bands.
var nir = sfoImage.select('B8');
var red = sfoImage.select('B4');
// Calculate the numerator and the denominator using subtraction and addition respectively.
var numerator = nir.subtract(red);
var denominator = nir.add(red);
// Now calculate NDVI.
var ndvi = numerator.divide(denominator);
// Add the layer to our map with a palette.
var vegPalette = ['red', 'white', 'green'];
Map.addLayer(ndvi, {min: -1,max: 1,palette: vegPalette
}, 'NDVI Manual');

        检查生成的索引,如果需要,使用检查器挑选出植被和非植被区域的像素值(图 3)。使用这些简单的算术工具,您可以构建几乎任何索引或开发和可视化您自己的索引。 Earth Engine 允许您快速、轻松地计算和显示大范围内的指数。

图3 使用 Sentinel-2 计算的 NDVI,请记住,NDVI 的输出在− 1 和 1 之间变化,大量绿色植被的值约为 0.8–0.9, 没有绿叶时的值接近 0,而有水时的值接近 − 1 

2.NDVI 归一化差值的单次运算计算

        像 NDVI 这样的归一化差异在遥感中非常常见,因此 Earth Engine 提供了使用归一化差异方法在单个步骤中执行特定序列的减法、加法和除法的能力。 此方法采用输入图像以及您指定的波段,并创建这两个波段的标准化差异。 之前使用波段算法创建的 NDVI 计算可以用一行代码替换:

// Now use the built-in normalizedDifference function to achieve the same outcome.
var ndviND = sfoImage.normalizedDifference(['B8', 'B4']);
Map.addLayer(ndviND, {min: -1,max: 1,palette: vegPalette
}, 'NDVI normalizedDiff');

        请注意,向 normalizedDifference 提供两个波段的顺序很重要。 我们使用近红外波段 B8 作为第一个参数,使用红波段 B4 作为第二个参数。 如果您的两次 NDVI 计算在绘制到屏幕上时看起来不相同,请检查以确保 NIR 和红色波段的顺序正确。

3.使用 NDWI 的归一化差值

        如前所述,归一化差异法用于许多不同的指数。 让我们将相同的归一化差异方法应用于另一个指数。归一化差异水分指数(NDWI)是由Gao(1996)开发的作为植被水分含量的指数。 该指数对植被冠层液体含量的变化敏感。 这意味着该指数可用于检测经历干旱条件的植被或区分作物
灌溉水位。 在干旱地区,灌溉作物可以与自然植被区分开来, 有时也称为归一化差异水分指数 (NDMI)。 NDWI 的公式如下:

        其中 NIR 是近红外,中心在 860 nm (0.86 µm) 附近,SWIR 是短波红外,中心在1240 nm (1.24 µm) 附近。

        使用归一化差异方法在 Earth Engine 中计算并显示 NDWI。 请记住,对于 Sentinel-2,B8 是 NIR 波段,B11 是 SWIR 波段。

// Use normalizedDifference to calculate NDWI
var ndwi = sfoImage.normalizedDifference(['B8', 'B11']);
var waterPalette = ['white', 'blue'];
Map.addLayer(ndwi, {min: -0.5,max: 1,palette: waterPalette
}, 'NDWI');

        检查到NDVI 识别为拥有大量植被的地图区域,注意哪些颜色更蓝, 这是含水量较高的植被(图 4)。

图4 Sentinel-2 在旧金山上空显示的 NDWI 

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

如若内容造成侵权/违法违规/事实不符,请联系编程老四网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

逆序字符串

逆序字符串 题目描述:解法思路:解法代码:运行结果: 题目描述: 输入⼀个字符串,写⼀个函数将⼀个字符串的内容逆序过来。 测试1: 输⼊:abcdef 输出:fedcba 测试2&#x…

Linux信号【systemV】

目录 前言 正文: 1消息队列 1.1什么是消息队列? 1.2消息队列的数据结构 1.3消息队列的相关接口 1.3.1创建 1.3.2释放 1.3.3发送 1.3.4接收 1.4消息队列补充 2.信号量 2.1什么是信号量 2.2互斥相关概念 2.3信号量的数据结构 2.4…

PyTorch深度学习快速入门

PyTorch深度学习快速入门 1.PyTorch环境配置及安装2.python编辑器的选择、安装、配置(pycharm、JupyTer安装)3.为什么torch.cuda.is_available()返回false4.python学习中两大法宝函数(也可用在pytorch)5.pycharm和jupyter&#xf…

基于java+springboot动物检疫信息管理系统设计和实现

基于java SSM springboot动物检疫信息管理系统设计和实现 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文…

太实用了!微信自动回复神器,助你轻松社交

在当今社交网络的时代,微信已经成为了一种重要的社交工具,为了更有效地管理微信号和提高社交效率,许多人开始使用微信管理系统,下面就一起来看看它的优势吧。 首先,使用微信管理系统可以实现多个微信号同时登陆&#…

input输入框过滤非金额内容保留一个小数点和2位小数

这篇是输入框过滤非金额内容保留一个小数点和2位小数,金额的其他格式化可以看这篇文章常用的金额数字的格式化方法 js方法直接使用 该方式可以直接使用过滤内容,也可以到onInput或onblur等地方过滤,自行使用 /*** 非金额字符格式化处理* p…

好的测试数据管理,到底要怎么做?

你的组织是否实施了测试数据管理?如果你的组织处理关键或敏感的业务数据,测试数据管理肯定会让组织受益。与测试数据相关的问题占所有软件缺陷的 15%,这一事实强调了测试数据的重要性。本文将准确讨论测试数据经理职责、测试数据经理需要什么…

性能测试-反编译jar

方法一,使用jd-gui 1、官网下载:Java Decompiler 2、下载mac版本后,解压,如下所示: 双击 JD_GUI,提示错误,如下所示: 已经安装了java 17,是java 1.8以上版本&#xff0…

kali linux通过aircrack-ng命令破解wifi密码

相关阅读:如何破解攻击WiFi 百度安全验证https://baijiahao.baidu.com/s?id1764248756021219497&wfrspider&forpc上面2篇文章写得都很不错 一、前期准备工作 1、将无线网卡挂载到Kali上 ​ 将无线网卡插到电脑上,如果弹出检测到新的USB设备&…

springboot223基于springboot的信息技术知识竞赛系统的设计与实现

信息技术知识赛系统设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装信息技术知识赛系统软件来发…

【生成式AI】ChatGPT 原理解析(2/3)- 预训练 Pre-train

Hung-yi Lee 课件整理 预训练得到的模型我们叫自监督学习模型(Self-supervised Learning),也叫基石模型(foundation modle)。 文章目录 机器是怎么学习的ChatGPT里面的监督学习GPT-2GPT-3和GPT-3.5GPTChatGPT支持多语言…

12.整数转罗马数字

题目:罗马数字包含以下七种字符:I, V, X, L,C,D 和 M。 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X II 。 27 写做 XXVII, 即为 XX…

「算法」常见位运算总结

位运算符 异或 按位异或可以实现无进位相加,所谓无进位相加,就是在不考虑进位的情况下将两个数相加(后面有道题需要用到这种操作) 异或的运算律 ①a ^ 0 a ②a ^ a 0 ③a ^ b ^ c a ^ ( b ^ c ) 有符号右移>> 将一个…

Linux上搭建并使用ffmpeg(Java)

关于MacOs和Windows系统上使用ffmpeg就不多说了,有很多相关文章,今天给大家分享一个在Linux环境下使用Java语言来使用ffmpeg 一、首先去官网下载一个Linux对应的ffmpeg包 1、进入ffmpeg官网:官网 2、点击左侧导航栏Download 3、选择Linux对…

react-JSX基本使用

1.目标 能够知道什么是JSX 能够使用JSX创建React元素 能够在JSX中使用JS表达式 能够使用JSX的条件渲染和列表渲染 能够给JSX添加样式 2.目录 JSX的基本使用 JSX中使用JS表达式 JSX的条件渲染 JSX的列表渲染 JSX的样式处理 3.JSX的基本使用 3.1 createElement()的问题 A. …

金融短信群发平台具有那些特点

金融短信群发平台的特点主要包括以下几个方面: 1.高效性:金融短信群发平台能够快速地发送大量的短信,使得金融信息能够迅速传达给目标客户,保证了信息的及时性和有效性。 2.安全性:金融短信群发平台对于信息的安全性非…

蓝桥杯 信号覆盖

遍历每一个坐标轴上的点&#xff0c;带入圆的方程&#xff0c;看是否在圆内或圆上 #include<bits/stdc.h> using namespace std; int main() {int w,h,n,r,i,j,k,s,ans0;cin>>w>>h>>n>>r;int x[n1],y[n1];for(i0;i<n;i){cin>>x[i]>&…

【Redis | 第一篇】快速了解Redis

文章目录 1.快速了解Redis1.1简介1.2与其他key-value存储的不同处1.3Redis安装——Windows环境1.3.1下载redis1.3.2启动redis1.3.3进入redis客户端1.3.4修改配置 1.4Redis安装——Linux环境1.4.1安装命令1.4.2启动redis1.4.3进入redis客户端 1.5配置修改1.6小结 1.快速了解Redi…

设计模式-结构模式-装饰模式

装饰模式&#xff08;Decorator Pattern&#xff09;&#xff1a;动态地给一个对象增加一些额外的职责&#xff0c;就增加对象功能来说&#xff0c;装饰模式比生成子类实现更为灵活。装饰模式是一种对象结构型模式。 //首先&#xff0c;定义一个组件接口&#xff1a; public in…

【Go语言】Go语言中的切片

Go语言中的切片 1.切片的定义 Go语言中&#xff0c;切片是一个新的数据类型数据类型&#xff0c;与数组最大的区别在于&#xff0c;切片的类型中只有数据元素的类型&#xff0c;而没有长度&#xff1a; var slice []string []string{"a", "b", "c…
推荐文章