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

目录

波段计算

1.NDVI的计算

[2.NDVI 归一化差值的单次运算计算](#2.NDVI 归一化差值的单次运算计算)

[3.使用 NDWI 的归一化差值](#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)。

javascript 复制代码
/
// 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。

javascript 复制代码
// 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 计算可以用一行代码替换:

javascript 复制代码
// 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 波段。

javascript 复制代码
// 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

相关推荐
hopetomorrow10 分钟前
学习路之PHP--使用GROUP BY 发生错误 SELECT list is not in GROUP BY clause .......... 解决
开发语言·学习·php
小牛itbull19 分钟前
ReactPress vs VuePress vs WordPress
开发语言·javascript·reactpress
请叫我欧皇i28 分钟前
html本地离线引入vant和vue2(详细步骤)
开发语言·前端·javascript
533_30 分钟前
[vue] 深拷贝 lodash cloneDeep
前端·javascript·vue.js
闲暇部落31 分钟前
‌Kotlin中的?.和!!主要区别
android·开发语言·kotlin
GIS瞧葩菜40 分钟前
局部修改3dtiles子模型的位置。
开发语言·javascript·ecmascript
chnming198744 分钟前
STL关联式容器之set
开发语言·c++
熬夜学编程的小王1 小时前
【C++篇】深度解析 C++ List 容器:底层设计与实现揭秘
开发语言·数据结构·c++·stl·list
zhang-zan1 小时前
nodejs操作selenium-webdriver
前端·javascript·selenium
GIS 数据栈1 小时前
每日一书 《基于ArcGIS的Python编程秘笈》
开发语言·python·arcgis