GEE从入门到实战的10个系列单元:

  1. GEE系列:第1单元 Google地球引擎简介
  2. GEE系列:第2单元 探索数据集
  3. GEE系列:​第3单元 栅格遥感影像波段特征及渲染可视化
  4. GEE系列:第4单元 Google 地球引擎中的数据导入和导出
  5. GEE系列:第5单元 遥感影像预处理【GEE栅格预处理】
  6. GEE系列:第6单元 在 Google 地球引擎中构建各种遥感指数
  7. GEE系列:第7单元 利用GEE进行遥感影像分类【随机森林分类】
  8. GEE系列:第8单元 Google 地球引擎中的时间序列分析【时间序列】
  9. GEE系列:第9单元 在GEE中生成采样数据【随机采样】
  10. GEE系列:第10单元 使用 Google 地球引擎创建图形用户界面【GUI开发】

第3单元:栅格解释和可视化

1、简介

在本单元中,将学习以下内容:

  1. 使用遥感传感器捕获的不同类型的能量。
  2. 如何构建 JavaScript 字典和列表以选择单个栅格波段。
  3. 如何可视化多波段和单波段栅格的不同组合。

2、背景

在您探索如何将 Google 地球引擎和遥感数据集成到您的研究中时,视觉解释图像的能力是一项重要的技能。虽然许多算法旨在自动提取和分类图像,但在模式和特征识别方面,计算机根本不如人脑先进。这意味着您经常需要手动识别图像中的要素,不仅是为您自己,而且为您的顾问、项目合作伙伴或其他利益相关者。在 Google 地球引擎中有效传达这些信息的能力最终取决于您可视化和解释栅格数据集的能力。尽管您在这些系列的学习单元中的学习环境是 Google Earth Engine 界面,

被动与主动数据收集
光学传感器依赖于收集反射的太阳能,被描述为“被动”。很多时候,来自无源传感器的数据将被格式化为多波段栅格,允许不同的组合。这些组合使我们能够突出景观中的环境特征。相比之下,发射和测量自身能量的传感器(例如 LiDAR、SAR)通常被称为“有源”。在 Google 地球引擎中,您不会找到来自主动传感器的大量原始数据。相反,衍生产品(例如数字高程图)很容易获得,但通常缺乏被动收集图像的多波段结构。

有源和无源传感器通常具有不同的任务目标和相关的数据产品 - 作为 Google 地球引擎用户,您可以为独特的生态应用程序操纵他们的数据。

从天基传感器收集被动与主动数据的可视化。图片来源:GrindGIS。

电磁波谱
为了更深入地了解被动收集的图像,讨论电磁波谱 (EMS) 是一个好主意。从广义上讲,EMS 是能量波长的范围。在遥感的背景下,我们会遇到这种能量的一小部分,这些能量在从太阳发出后,由于大气中的窗户而通过特定范围过滤吸收能量很少的地方。在这些窗口内是我们通常在遥感中使用的波长。多年来,已经发现特定的波长范围与物理环境的元素相对应,例如植被、水和人造物体。在本单元中,您将找到一些操作这些波长以突出显示栅格数据和感兴趣区域中的特征的方法。这些方法详细参见 第6单元

广泛的电磁能量和形式的例子。请注意,该光谱的可见部分非常窄!图片来源:美国宇航局。

3、可视化多个波段

Google Earth Engine 可以通过多种方式定义可视化参数。第一个是在脚本中,我们可以在其中创建一个字典对象。即使您在编程上下文中不熟悉字典,但对于物理字典的概念来说,这个概念是熟悉的。例如,当您在物理词典中查找一个单词时,会有一段文字解释该单词。类似地,JavaScript 中的字典对象包含由冒号 (:) 分隔的“键”和“项目”对。在 Google 地球引擎中,您的“项目”通常是引号(“字符”)或数字(1.0)。请参阅下面的代码片段以获取几个示例。

// This is a dictionary object. It has a key and an item.
var dictionary_one = {key: 'item', term: 'value'};
var dictionary_two = {first_key: 1.1, second_key: 2.2, third_key: 3.3};
print(dictionary_one,"dict1");
print(dictionary_two, "dict2");// Occasionally, dictionary items can be lists. Lists are simply containers for multiple items.
var dictionary_with_list = {key: ['item1', 'item2', 'item3']};
print(dictionary_with_list, "dictList");

3.1真彩色 (TCI)

在本单元中,我们将使用许多数据集。在本节中,我们将导入 Landsat 8 表面反射率集合。我们将首先使用真彩色图像 (TCI) 来调查和解释加拿大蒙特利尔的景观。使用下面的代码应该会产生如下所示的图像。我们在新闻和网上遇到的许多基于空间的图像都是 TCI。通过使用 Google Earth Engine 中的 TCI,我们可以利用自己的经验和常识识别来对物体进行识别和分类。使用以下代码启动一个新脚本以生成如下所示的 TCI。

// Load the Landsat image collection.
var ls8 = ee.ImageCollection("LANDSAT/LC08/C01/T1_SR");// Filter the collection by date and cloud cover.
var ls8 = ls8
.filterDate('2017-05-01','2017-09-30')
.filterMetadata('CLOUD_COVER','less_than', 3.0);// There are a number of keys that you can use in a visParams dictionary.
// Here, we are going to start by defining our 'bands', 'min', 'max', and 'gamma' values.
// You can think of 'gamma' essentially as a brightness level.
var ls_tci = {bands: ['B4','B3','B2'], min: 0, max: 3000, gamma: 1.4};Map.setCenter(-73.755, 45.5453, 11);
Map.addLayer(ls8, ls_tci, 'True Color');

可视化 2017 年加拿大蒙特利尔上空 Landsat 8 表面反射率数据的真彩色图像。

3.2彩色红外(CI)

将下面的代码附加到我们的脚本中,我们可以将 TCI 与彩色红外 (CI) 进行比较。使用 CI,我们可以开始区分土地覆盖类别(即森林覆盖与农田)以及类别内的条件,例如区域较深红色的更活跃的植被。再次单击运行以查看类似于下图的图像。

// Add the Color Infrared visualization.
var ls_ci = {bands: ['B5','B4','B3'], min: 0, max: 3000, gamma: [0.7, 1, 1]};
Map.addLayer(ls8, ls_ci, 'Color Infrared');

用彩色红外图像替换我们的真彩色图像,以识别加拿大蒙特利尔和周边陆地区域的活跃植被和水道区域。

3.3伪色 1 和 2 (FC1/FC2)

再一次,如果我们将下面的代码附加到我们的脚本中,我们可以将两个额外的假彩色合成 (FC1) 与我们的其他多波段图像进行比较。在水体中,对短波和长波红外波长的吸收率很高。因此,这些图像中的水体会显得很暗,而真彩色图像中一些茂密的植被也会显得很暗。FC1 中的波段组合还应突出灰色/紫色的密集城市发展区域,而休耕农田将显示为浅棕色。再次单击运行,您的地图窗口应与下图类似。

// Add the False Color 1 visualization.
var ls_fc1 = {bands: ['B6','B5','B4'], min: 0, max: 4000, gamma: 0.9};
Map.addLayer(ls8, ls_fc1, 'False Color 1');// Add the False Color 2 visualization.
var ls_fc2 = {bands: ['B7','B6','B4'], min: 0, max: 3000, gamma: 0.9};
Map.addLayer(ls8, ls_fc2, 'False Color 2');

我们使用两个不同(但相关)的假彩色图像对加拿大蒙特利尔的最终描绘,突出了农业和城市地区以及水道之间的差异。

4、可视化单波段

当我们使用来自单波段源的栅格数据时,我们将需要使用不同的地图可视化技术:调色板。调色板是我们可以在 Google 地球引擎中传达连续或分类数据的方式,但在使用调色板时了解我们的最小值和最大值很重要。请记住,我们可以通过单击“检查器”选项卡来采样值。

在共享您的数据时,如果您的受众可能是色盲,检查并查看您选择的调色板是否仍然可以解释通常是明智的。两个很好的资源是Color Brewer,您可以在其中看到不同的调色板创意,以及Colblinder,您可以在其中模拟不同的色盲条件如何影响颜色感知。

4.1连续数据

为了了解如何有效地使用调色板来解释连续数据,我们将使用来自 Landsat 的 Gross Primary Productivity 栅格。初级生产力总值在此定义为“生态系统中植物捕获的碳量”的量度。使用以下代码启动一个新脚本,以可视化美国华盛顿州喀斯喀特山脉东坡的数据。对我们来说方便的是,数据集已经过滤掉了水体和大气效应。运行脚本,您应该会看到如下图所示的图像。

通过使用这个特定的调色板,我们可以开始挑选土地管理活动。强烈的几何和/或线性特征可以指示森林采伐和农业等活动,而不规则形状通常可以是保护区(即国家森林或荒野地区)。

// Load and select the Gross Primary Production (GPP) image collection.
var dataset = ee.ImageCollection('UMT/NTSG/v2/LANDSAT/GPP').filter(ee.Filter.date('2018-05-01', '2018-10-31'));
var gpp = dataset.select('GPP');// Build a set of visualization parameters and add the GPP layer to the map.
var gppVis = {min: 0.0,max: 500.0,palette: ['ffffe5','f7fcb9','d9f0a3','addd8e','78c679','41ab5d','238443','005a32']};Map.setCenter(-120.9893, 47.2208, 10);
Map.addLayer(gpp, gppVis, 'GPP');

可视化美国华盛顿州喀斯喀特山脉东坡的总初级生产力(来自 Landsat 数据),其中多种土地用途以红色突出显示。

4.2分类数据

我们还可以使用调色板来突出显示分类数据。如果我们想在研究区域创建森林/非森林掩膜,我们可以使用国家土地覆盖数据集NLCD以深绿色突出显示所有森林类别。NLCD 中有许多土地覆盖类别,但为了简化此示例,我们仅在东部瀑布的同一区域使用“落叶林”、“常绿林”和“混交林”。再次启动一个新脚本并粘贴下面的代码。您应该会看到类似于下图的结果图像。

// Load the NLCD image collection and select the land cover layer.
var dataset = ee.ImageCollection('USGS/NLCD');
var landcover = dataset.select('landcover');// Values from 41-43 represent explicitly defined forest types.
var landcoverVis = {min: 41.0,max: 43.0,palette: ['black','green', 'green','green','black'],opacity: 0.75
};Map.setCenter(-120.9893, 47.2208, 10);
Map.addLayer(landcover, landcoverVis, 'Landcover');

森林与非森林区域的简单二元可视化,同样位于喀斯喀特山脉的东坡,使用国家土地覆盖数据集类。

我们将在第9单元中再次处理分类数据。

5、结论

在本单元中,我们讨论了被动和主动遥感之间的差异,以及电磁光谱和构成我们所知的可见光的窄条。我们还回顾了 JavaScript 字典和列表的结构,以及如何使用它们来选择单个栅格波段。利用这些知识,我们采用了多种方法来可视化多波段和单波段图像,以有效地传达土地覆盖、土地利用和植被状态的差异。

6、单元3 的完整代码

// This is a dictionary object. It has a key and an item.
var dictionary_one = {key: 'item', term: 'value'}
var dictionary_two = {first_key: 1.1, second_key: 2.2, third_key: 3.3}
print(dictionary_one,"dict1");
print(dictionary_two, "dict2");// Occasionally, dictionary items can be lists. Lists are simply containers for multiple items.
var dictionary_with_list = {key: ['item1', 'item2', 'item3']};
print(dictionary_with_list, "dictList");// Load the Landsat image collection.
var ls8 = ee.ImageCollection("LANDSAT/LC08/C01/T1_SR");// Filter the collection by date and cloud cover.
var ls8 = ls8
.filterDate('2017-05-01','2017-09-30')
.filterMetadata('CLOUD_COVER','less_than', 3.0);// There are a number of keys that you can use in a visParams dictionary.
// Here, we are going to start by defining our 'bands', 'min', 'max', and 'gamma' values.
// You can think of 'gamma' essentially as a brightness level.
var ls_tci = {bands: ['B4','B3','B2'], min: 0, max: 3000, gamma: 1.4};Map.setCenter(-73.755, 45.5453, 11);
Map.addLayer(ls8, ls_tci, 'True Color');// Add the Color Infrared visualization.
var ls_ci = {bands: ['B5','B4','B3'], min: 0, max: 3000, gamma: [0.7, 1, 1]};
Map.addLayer(ls8, ls_ci, 'Color Infrared');// Add the False Color 1 visualization.
var ls_fc1 = {bands: ['B6','B5','B4'], min: 0, max: 4000, gamma: 0.9};
Map.addLayer(ls8, ls_fc1, 'False Color 1');// Add the False Color 2 visualization.
var ls_fc2 = {bands: ['B7','B6','B4'], min: 0, max: 3000, gamma: 0.9};
Map.addLayer(ls8, ls_fc2, 'False Color 2');// Load and select the Gross Primary Production (GPP) image collection.
var dataset = ee.ImageCollection('UMT/NTSG/v2/LANDSAT/GPP').filter(ee.Filter.date('2018-05-01', '2018-10-31'));
var gpp = dataset.select('GPP');// Build a set of visualization parameters and add the GPP layer to the map.
var gppVis = {min: 0.0,max: 500.0,palette: ['ffffe5','f7fcb9','d9f0a3','addd8e','78c679','41ab5d','238443','005a32']};Map.setCenter(-120.9893, 47.2208, 10);
Map.addLayer(gpp, gppVis, 'GPP');// Load the NLCD image collection and select the land cover layer.
var dataset = ee.ImageCollection('USGS/NLCD');
var landcover = dataset.select('landcover');// Values from 41-43 represent explicitly defined forest types.
var landcoverVis = {min: 41.0,max: 43.0,palette: ['black','green', 'green','green','black'],opacity: 0.75
};Map.setCenter(-120.9893, 47.2208, 10);
Map.addLayer(landcover, landcoverVis, 'Landcover');

GEE系列:​第3单元 栅格遥感影像波段特征及渲染可视化相关推荐

  1. Python中ArcPy实现对大量长时间序列栅格遥感影像批量逐像元求取像素平均值

      本文介绍基于Python中ArcPy模块,对大量长时间序列栅格遥感影像文件的每一个像元进行多时序平均值的求取.   在遥感应用中,我们经常需要对某一景遥感影像中的全部像元的像素值进行平均值求取-- ...

  2. ArcGIS中ArcMap快速自动计算单一波段或多波段栅格遥感影像NDVI的方法

      本文介绍在ArcMap软件中,快速对单一波段或多波段栅格遥感影像自动计算NDVI数值的方法.   计算遥感影像的NDVI值是一个很常见.也很基础的操作,基于ENVI.ERDAS等专业遥感影像数据处 ...

  3. ENVI无缝镶嵌工具Seamless Mosaic实现栅格遥感影像镶嵌拼接的方法

      本文介绍基于ENVI软件,利用"Seamless Mosaic"工具实现栅格遥感影像无缝镶嵌的操作.   在ENVI软件实现栅格遥感影像基于像元的镶嵌拼接(https://bl ...

  4. ArcGIS中ArcMap时间滑块功能对长时间序列栅格遥感影像进行动态显示并生成视频或动图

      本文介绍基于ArcMap软件,利用时间滑块功能,对大量多时相栅格遥感影像数据进行动态显示,并生成视频或动图的方法.   首先,我们需要在ArcMap软件中新建一个镶嵌数据集,并将全部的多时像遥感影 ...

  5. python遥感影像分类代码_Python 实现遥感影像波段组合的示例代码

    最近要做个遥感相关的小系统,需要波段组合功能,网上找了可以使用ArcGIS安装时自带的arcpy包,但是Python3.7不能使用现有ArcGIS10.2版本,也不想再装其他版本,所以只能自己想了个办 ...

  6. TM遥感影像波段/通道bands

    遥感影像波段band 一.遥感影像波段 1.原理 2.举例说明 二.TM影像各波段简介 1.TM影像概述 2.各波段影像特征 3.波段组合 4.类型提取 5.光谱差异 三.遥感图像--多波段数据存储的 ...

  7. 遥感影像波段/通道bands

    遥感影像波段band 一.遥感影像波段 1.原理 2.举例说明 二.TM影像各波段简介 1.TM影像概述 2.各波段影像特征 3.波段组合 4.类型提取 5.光谱差异 三.遥感图像--多波段数据存储的 ...

  8. (二)Landsat_5 TM 遥感影像波段合成真假彩色影像

    前言 回顾以下Landsat系列卫星的发展史,可以发现Landsat_5卫星已经退役,作为世界上寿命最长的地球观测卫星,其在影像方面对人类的发展具有很深刻的意义.Landsat_5 TM共有7个波段, ...

  9. 遥感影像波段与波段合成

    目录 全色波段 多光谱波段 高光谱波段 假彩色 真彩色 伪彩色(pseudo-color) 真彩色.假彩色和伪彩色的区别 全色波段 全色波段,一般指使用0.5微米到0. 75微米左右的单波段,即从绿色 ...

最新文章

  1. mysql M/S配置小记
  2. Centos7/RedHat7 下 python3使用cx-freeze打包matplotlib程序遇到的问题和解决办法
  3. Go游戏服务器开发的一些思考(十):goroutine和coroutine
  4. Fiddler抓包使用教程-乱码处理 Decode
  5. asp.net导出excel-一行代码实现excel、xml、pdf、word、html、csv等7种格式文件导出功能而且美观-SNF快速开发平台...
  6. 新手福利:百度官方中文教程,过年也要深度学习!
  7. 计算机三级嵌入式试题讲解,计算机三级嵌入式系统操作题及解析.docx
  8. module 'scipy.misc' has no attribute 'imread' 报错解决
  9. 用PHP写距离圣诞节还有多久,距离圣诞节还有多少天
  10. 微信小程序使用wxParse解析html代码
  11. C语言输出大写金额,编程实现,输入一个人民币小写金额值,转化为大写金额值输出。先实现基本功能...
  12. PROFIBUS DP和PROFINET IO区别
  13. unity点光源消失
  14. 在服务系统部署MFC程序,出现DLL缺失情况的问题解决方式
  15. 桌面删除的文件如何找回
  16. CAD教程:CAD软件中怎么将图块改层?
  17. 用前端代码编写一个动态的罗盘时钟
  18. Linux使用本地光盘制作yum源
  19. 防疫主题的微信公众号图文排版有哪些技巧?
  20. win10打开蓝牙_win10蓝牙开关不见了

热门文章

  1. Guzzle/promises源码解读
  2. 树莓派控制固态继电器的使用
  3. Salt基础安装配置
  4. 补码的秘密之一--补码的来源
  5. 1.4多媒体计算机系统教案,1.4 多媒体计算机系统_教案
  6. C# Assembly说明
  7. 2D Player脚本
  8. 【论文合集】Awesome Anomaly Detection
  9. 操作系统和应用的关系
  10. R语言epiDisplay包mlogit.display函数无序多分类logistic回归模型的汇总统计信息(各分组模型对应系数及标准差、相对危险降低率RRR值及其置信区间、AIC值等)、保存到csv