PIE-engine 教程 ——影像集合的使用for循环函数(北京市NDVI计算)

简介: PIE-engine 教程 ——影像集合的使用for循环函数(北京市NDVI计算)

   上一次我们通过对北京市影像集合完成了对其NDVI的计算,这次我们同样换一个for循环的形式来实现NDVI的计算,大家可以找找差异,以下是上一篇文章的链接:

(931条消息) PIE-engine 教程 ——影像集合的使用map()映射函数(北京市NDVI计算)_此星光明的博客-CSDN博客

这里函数就不在介绍了,NDVI的计算公式就是:

NDVI——归一化植被指数:NDVI=(NIR-R)/(NIR+R),或两个波段反射率的计算。

1、NDVI的应用:检测植被生长状态、植被覆盖度和消除部分辐射误差等;

2、-1可见光高反射;0表示有岩石或裸土等,NIR和R近似相等;正值,表示有植被覆盖,且随覆盖度增大而增大;

3、NDVI的局限性表现在,用非线性拉伸的方式增强了NIR和R的反射率的对比度。对于同一幅图象,分别求RVI和NDVI时会发现,RVI值增加的速度高于NDVI增加速度,即NDVI对高植被区具有较低的灵敏度;

4、NDVI能反映出植物冠层的背景影响,如土壤、潮湿地面、雪、枯叶、粗糙度等,且与植被覆盖有关;

大家还记得之前发布for和map的区别吗?for循环需要准确知道我们要运行的次数,所以我们必须知道这个影像集合中有多少张影像需要我们遍历,我们用到的函数:

size()

获得影像集合中Image的个数。

方法参数:

- imageCollection(ImageCollection)

ImageCollection实例。

返回值:Number

mosaic()当我们要输出影像的时候(单张/景影像除外),必须要合成就会用到此函数

将影像集合融合成为一张影像Image,融合规则保留是这个影像集合中最新的有效像素值。

方法参数:

- imageCollection(ImageCollection)

ImageCollection实例。

返回值:Image

clip(geometry)

按照指定的矢量边界裁剪影像。除了未被几何覆盖的数据被掩盖之外,裁剪前后的影像波段完全对应。裁剪后影像保留裁剪前的元数据。

方法参数:

- image(Image)

Image实例。

- geometry(Feature|Geometry|Object)

裁剪使用的矢量边界。

返回值:Image

代码:

/**
 * @File    :   map-07-ImageCollection循环计算_使用for循环
 * @Time    :   2022/3/1
 * @Author  :   piesat
 * @Version :   1.0
 * @Contact :   400-890-0662
 * @License :   (C)Copyright 航天宏图信息技术股份有限公司
 * @Desc    :   取ImageCollection中的每个元素计算NDVI,采用for循环
 */
//加载北京市边界
var roi = pie.FeatureCollection("NGCC/CHINA_PROVINCE_BOUNDARY")
    .filter(pie.Filter.eq("name", "北京市"))
    .first()
    .geometry();
Map.centerObject(roi, 6);
Map.addLayer(roi, { color: "ff0000", fillColor: "00000000", width: 3 }, "北京市");
//按区域、时间筛选影像
var imgCol = pie.ImageCollection("LC08/01/T1")
    .filterBounds(roi)
    .filterDate("2019-8-01", "2019-8-30");
print("imgCol", imgCol);
Map.addLayer(imgCol.select(["B2", "B3", "B4"]).mosaic().clip(roi), { min: 0, max: 2500, bands: ["B4", "B3", "B2"] }, "imgCol", false);
//获取影像数量
var count = imgCol.size();
print(count);
//循环计算每景影像NDVI植被指数
var newCol = [];
for (i = 0; i <= 7; i++) {
    var image = imgCol.getAt(i);
    var nir = image.select("B5");
    var red = image.select("B4");
    var imgCol_NDVI = nir.subtract(red).divide(nir.add(red)).rename("NDVI");
    image = image.addBands(imgCol_NDVI);
    newCol.push(image);
}
var imgCol_new = pie.ImageCollection().fromImages(newCol);
print("imgCol_new", imgCol_new);
//NDVI绘制样式
var visParamNDVI = {
    min: -0.2,
    max: 0.8,
    palette: ['FFFFFF', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718', '74A901',
        '66A000', '529400', '3E8601', '207401', '056201', '004C00', '023B01',
        '012E01', '011D01', '011301']
};
//加载北京市NDVI植被指数
var NDVI = imgCol_new.select("NDVI").mosaic().clip(roi);
Map.addLayer(NDVI, visParamNDVI, "NDVI");

大家始终记住一点,就是当我们在使用for循环的时候,如果要遍历,必须首先要获取影像或者矢量的id序列号,这时就会用到getAt这个功能。

getAt(index)

获得影像集合中指定编号的Image对象。

方法参数:

- imageCollection(ImageCollection)

ImageCollection实例。

- index(Number)

Image的编号

返回值:Image

image.png

我们获得影像数量

image.png

新增的NDVI影像波段值


 image.png


相关文章
|
JSON 数据可视化 数据格式
PIE-engine 教程 ——长时间序列NDVI影像计算和chart时序图加载(2017年锦州全年植被指数展示)
PIE-engine 教程 ——长时间序列NDVI影像计算和chart时序图加载(2017年锦州全年植被指数展示)
718 0
PIE-engine 教程 ——长时间序列NDVI影像计算和chart时序图加载(2017年锦州全年植被指数展示)
PIE-engine 教程 ——NDVI和FVC计算时序分析以2013年-2020年福州市为例
PIE-engine 教程 ——NDVI和FVC计算时序分析以2013年-2020年福州市为例
769 0
PIE-engine 教程 ——NDVI和FVC计算时序分析以2013年-2020年福州市为例
|
11月前
|
Go vr&ar 图形学
重塑体验:AR/VR技术在游戏与娱乐行业的创新应用
【10月更文挑战第29天】本文探讨了AR/VR技术如何改变游戏与娱乐行业,介绍了AR和VR的基本概念及其在游戏和娱乐中的应用实例,包括《精灵宝可梦GO》的AR开发和VR视频播放器的实现代码,并展望了未来的发展趋势。
741 2
|
C# 索引
C# 一分钟浅谈:接口与抽象类的区别及使用
【9月更文挑战第2天】本文详细对比了面向对象编程中接口与抽象类的概念及区别。接口定义了行为规范,强制实现类提供具体实现;抽象类则既能定义抽象方法也能提供具体实现。文章通过具体示例介绍了如何使用接口和抽象类,并探讨了其实现方式、继承限制及实例化差异。最后总结了选择接口或抽象类应基于具体设计需求。掌握这两者有助于编写高质量的面向对象程序。
587 5
|
运维 Prometheus 监控
微服务架构下的服务治理实践
【7月更文挑战第27天】在微服务架构的浪潮中,服务治理作为确保系统稳定性和高可用性的关键手段,其重要性日益凸显。本文将探讨微服务架构下服务治理的核心要素,包括服务发现、配置管理、流量控制等,并结合实例分析如何有效实施服务治理策略,以提升系统的弹性、监控能力和安全性。通过本文,读者将获得一套实用的服务治理框架,以及面对复杂服务交互时保持清晰治理视野的方法。
|
开发者 图形学 UED
深度解析Unity游戏开发中的性能瓶颈与优化方案:从资源管理到代码执行,全方位提升你的游戏流畅度,让玩家体验飞跃性的顺滑——不止是技巧,更是艺术的追求
【8月更文挑战第31天】《Unity性能优化实战:让你的游戏流畅如飞》详细介绍了Unity游戏性能优化的关键技巧,涵盖资源管理、代码优化、场景管理和内存管理等方面。通过具体示例,如纹理打包、异步加载、协程使用及LOD技术,帮助开发者打造高效流畅的游戏体验。文中提供了实用代码片段,助力减少内存消耗、提升渲染效率,确保游戏运行丝滑顺畅。性能优化是一个持续过程,需不断测试调整以达最佳效果。
535 0
|
数据采集 传感器 XML
Landsat Collection 2 数据集详细介绍(T1/T2产品差异)
Landsat Collection 2 数据集详细介绍(T1/T2产品差异)
788 0
Landsat Collection 2 数据集详细介绍(T1/T2产品差异)
|
数据可视化 数据挖掘 关系型数据库
招聘信息数据分析及可视化|以51JOB为例进行
招聘信息数据分析及可视化|以51JOB为例进行
683 0
《QT从基础到进阶·十九》QThread多线程使用
《QT从基础到进阶·十九》QThread多线程使用
290 0
|
机器学习/深度学习
影像组学中ICC的可靠性探索:揭示一致性的秘密
ICC是一种常用的统计方法,用于评估不同观察者(或评估者)之间的一致性程度。在医学影像组学中,它被广泛应用于研究各种情况下医学影像数据的可靠性和一致性。例如,在新药研发过程中,使用ICC来评估医生之间对同一影像的诊断一致性,以确保研究结果的可靠性和可重复性。此外,ICC还可以应用于影像定量分析,如评估不同影像技术之间的一致性或不同扫描时间点之间的重复性。
3853 1