【GEE】​3、 栅格遥感影像波段特征及渲染可视化

news2024/11/29 4:33:19

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');

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

测试员如何快速熟悉新业务?

身处职场,学习新业务在所难免,尤其是测试人员,具备良好的业务知识是我们做好质量保障的前提,不管是职场「新人」还是「老人」,快速熟悉业务的能力都是不可或缺的,这是我们安身立命的根本。 但,…

简答-【1 绪论】

关键字: 数据类型、数据结构定义、递归关键、线性结构、非线性结构、算法特性、算法目标、时间复杂度排序

jQuery案例专题

jQuery案例专题 本学期主要担任的课程是js和jQuery&#xff0c;感觉用到的有一些案例挺有意思的&#xff0c;就对其进行了一下整理。 目录&#xff1a; 电影院的幕帘特效 手风琴特效 星光闪烁 网页轮播图 1.电影院的幕帘特效代码如下 html <!DOCTYPE html > <html…

spring面试题笔记

SpringBoot 有几种读取配置文件的方式 1.value 必须是bean里才能生效&#xff0c;&#xff0c;final或static无法生效 2ConfigurationProperties注解 ConfigurationProperties是springboot提供读取配置文件的一个注解 注意&#xff1a; 前缀定义了哪些外部属性将绑定到类的字…

分布式服务框架设计

目录 服务框架的设计 服务框架的功能 服务框架的性能指标 服务治理需要哪些功能 服务框架的设计 尽管不同的分布式服务框架实现细节存在差异&#xff0c;但是核心功能差异不大&#xff0c;下面的架构图描绘了一个分布式服务框架的整体逻辑架构 总共分为 3 层&#xff1a;1…

带斜杠的能读出来,不带斜杠的读不出来,为什么?

能读出来。 读不出来&#xff0c;为什么呢&#xff1f;

MySQL进阶_5.逻辑架构和SQL执行流程

文章目录 第一节、逻辑架构剖析1.1、服务器处理客户端请求1.2、Connectors1.3、第1层&#xff1a;连接层1.4、第2层&#xff1a;服务层1.5、 第3层&#xff1a;引擎层1.6、 存储层1.7、小结 第二节、SQL执行流程2.1、查询缓存2.2、解析器2.3、优化器2.4、执行器 第三节、数据库…

leetcode每日一题-周复盘

前言 该系列文章用于我对一周中leetcode每日一题or其他不会的题的复盘总结。 一方面用于自己加深印象&#xff0c;另一方面也希望能对读者的算法能力有所帮助。 该复盘对我来说比较容易的题我会复盘的比较粗糙&#xff0c;反之较为细致 解答语言&#xff1a;Golang 周一&a…

ICCV2023 Tracking paper汇总(一)(多目标跟随、单目标跟随等)

一、PVT: A Simple End-to-End Latency-Aware Visual Tracking Framework paper&#xff1a; https://openaccess.thecvf.com/content/ICCV2023/papers/Li_PVT_A_Simple_End-to-End_Latency-Aware_Visual_Tracking_Framework_ICCV_2023_paper.pdf github&#xff1a; https://…

c#如何把字符串中的指定字符删除

可以使用以下四种方法&#xff1a; 一、使用关键字&#xff1a;Replace public string Replace(char oldChar,char newChar); 在对象中寻找oldChar&#xff0c;如果寻找到&#xff0c;就用newChar将oldChar替换掉。 1、实例代码&#xff1a; 2、执行结果&#xff1a; 二、Rem…

centos7中多版本go安装

安装go的方式 官网下载tar.gz包安装 # 1.下载tar包 wget https://go.dev/dl/go1.18.1.linux-amd64.tar.gz # 2.解压tar包到指定路径 tar -xvf go1.18.1.linux-amd64.tar.gz -C /usr/local/go1.18 # 3.配置环境变量&#xff0c;打开 /etc/profile 文件添加以下文件每次开机时…

第六章:进制转换与数据存储

系列文章目录 文章目录 系列文章目录前言一、进制二、进制的转换三、原码、反码、补码总结 前言 进制转换是程序员的基本功。 一、进制 进制组成二进制0-1 &#xff0c;满2进1以0b或0B开头十进制0-9 &#xff0c;满10进1八进制0-7&#xff0c;满8进1以数字0开头表示十六进制0…

合肥中科深谷嵌入式项目实战——人工智能与机械臂(六)

订阅&#xff1a;新手可以订阅我的其他专栏。免费阶段订阅量1000 python项目实战 Python编程基础教程系列&#xff08;零基础小白搬砖逆袭) 说明&#xff1a;本专栏持续更新中&#xff0c;订阅本专栏前必读关于专栏〖Python网络爬虫实战〗转为付费专栏的订阅说明作者&#xff1…

电脑提示x3daudio1 7.dll丢失怎么修复,分享5个有效的修复方法

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“x3daudio1 7.dll丢失”。x3daudio1 7.dll是DirectX的一个组件&#xff0c;它负责处理音频输出和输入的相关功能。这个错误通常会导致软件无法启动&#xff0c;音频播放出现问题&#xff0c…

前端框架Vue学习 ——(七)Vue路由(Vue Router)

文章目录 Vue路由使用场景Vue Router 介绍Vue Router 使用 Vue路由使用场景 使用场景&#xff1a;如下图&#xff0c;点击部门管理的时候显示部门管理的组件&#xff0c;员工管理的时候显示员工管理的组件。 前端路由&#xff1a;指的是 URL 中的 hash(#号)与组件之间的对应关…

JAVA应用中线程池设置多少合适?

目录 1、机器配置&#xff1a; 2、核心线程数 3、最大线程数多少合适&#xff1f; 4、理论基础 5、测试验证 一个线程跑满一个核心的利用率 6个线程 12 个线程&#xff1a;所有核的cpu利用率都跑满 有io操作 6、计算公式 7、决定最大线程数的流程&#xff1a; 1、机器…

【CAN通信栈基础】针对CAN通信栈,浅谈操作系统中断和轮询之间的区别和优劣

1. 前言 在操作系统中(例如AUTOSAR OS),中断和轮询是处理需要快速行动的事件的两种方法。中断是通过向CPU发送立即采取行动的信号来通知CPU需要注意的事件,而轮询则是CPU不断检查设备状态以确定是否需要CPU的注意。本文将详细探讨CAN通信中断和轮询之间的差异和优劣。 2.…

【ES专题】ElasticSearch集群架构剖析

目录 前言阅读对象阅读导航前置知识笔记正文一、ES集群架构1.1 为什么要使用ES集群架构1.2 ES集群核心概念1.2.1 节点1.2.1.1 Master Node主节点的功能1.2.1.2 Data Node数据节点的功能1.2.1.3 Master Node主节点选举流程 1.2.2 分片1.3 搭建三节点ES集群1.3.1 ES集群搭建步骤1…

java高级之单元测试、反射

1、Junit测试工具 Test定义测试方法 1.被BeforeClass标记的方法,执行在所有方法之前 2.被AfterCalss标记的方法&#xff0c;执行在所有方法之后 3.被Before标记的方法&#xff0c;执行在每一个Test方法之前 4.被After标记的方法&#xff0c;执行在每一个Test方法之后 public …