PIE-engine 教程 ——影像集合的使用map()映射函数(北京市NDVI计算)

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

   我们本次将使用map()函数来完成一个NDVI值得计算,这里我们以北京市为例,主要得目的就是通过map映射函数来完成对规定时间内影像NDVI值的计算,这里有几个函数需要先介绍:

centerObject(object,zoom)

设置地图以图形为中心显示。

方法参数:

- object(Image|Geometry|Feature|FeatureCollection)

影像对象或者矢量对象。

- zoom(Int)

地图显示缩放级别。

返回值:null

addLayer(image,style,name,visible)

在地图上添加图层,图层可以是Image,可以是FeatureCollection,返回图层唯一的ID

方法参数:

- image(Image|ImageCollection|Geometry|Feature|FeatureCollection)

要添加的图层对象,可以是影像或者矢量数据。

- style(String, optional)//这里的style函数我们可以提前设定一个字典,在字典中设定波段,最大和最小值以及我们要加载涂层的颜色platte

数据对象的渲染样式

- name(String, optional)

图层的名称。

- visible(Boolean, optional)

图层是否可见,默认 true。

返回值:String

filterBounds(geometry)

对影像集合进行指定空间范围过滤,然后返回过滤后的影像集合。

方法参数:

- imageCollection(ImageCollection)

ImageCollection实例。

- geometry(Geometry)

过滤空间范围。

返回值:ImageCollection

filterDate(start,end)

对影像集合进行指定日期范围过滤,然后返回过滤后的影像集合。

方法参数:

- imageCollection(ImageCollection)

ImageCollection实例。

- start(String)

开始日期。

- end(String)

结束日期。

返回值:ImageCollection

centerObject(object,zoom)

设置地图以图形为中心显示。

方法参数:

- object(Image|Geometry|Feature|FeatureCollection)

影像对象或者矢量对象。

- zoom(Int)

地图显示缩放级别。

返回值:null

在PIE中并没有像GEE中那种集成好的归一化植被指数的计算函数,所以这里我们只能通过函数计算表达式和map的方式来进行NDVI的计算

代码:

/**
 * @File    :   map-06-ImageCollection循环计算_使用map算子
 * @Time    :   2022/3/1
 * @Author  :   piesat
 * @Version :   1.0
 * @Contact :   400-890-0662
 * @License :   (C)Copyright 航天宏图信息技术股份有限公司
 * @Desc    :   取ImageCollection中的每个元素计算NDVI,采用map算子
 */
//加载北京市边界
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);
//循环计算每景影像的NDVI植被指数
var imgCol_NDVI = imgCol.map(function (image) {
    var nir = image.select("B5");
    var red = image.select("B4");
    var NDVI = nir.subtract(red).divide(nir.add(red)).rename("NDVI");
    return image.addBands(NDVI);
});
print("imgCol_NDVI", imgCol_NDVI)
//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_NDVI.select("NDVI").mosaic().clip(roi);
Map.addLayer(NDVI, visParamNDVI, "NDVI", true);

在控制台打印出的结果:

image.png

这是我们指定时间2019年8月份北京的影像:

image.png

RGB影像:image.png

NDVI影像image.png

 


相关文章
|
2月前
|
数据处理 Python
Pandas中的map函数应用
Pandas中的map函数应用
17 2
|
2月前
|
Go 定位技术 索引
Go 语言Map(集合) | 19
Go 语言Map(集合) | 19
|
2月前
|
存储 前端开发 API
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
该文章详细介绍了ES6中Set和Map数据结构的特性和使用方法,并探讨了它们在前端开发中的具体应用,包括如何利用这些数据结构来解决常见的编程问题。
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
WK
|
2月前
|
Python
map函数
在Python中,`map()` 是一个内置的高阶函数,接受一个函数和一个或多个可迭代对象作为参数,将指定函数应用于每个元素,并返回包含应用结果的迭代器。若有多个可迭代对象,其元素会并行地传递给函数。`map()` 返回一个迭代器,需用 `list()` 转换。在Python 3中,`map()` 返回迭代器而非列表,并支持 `lambda` 表达式,适用于多种应用场景。注意,当输入的可迭代对象长度不同时,结果仅包含最短对象的长度。
WK
23 1
|
1月前
|
存储 分布式计算 Java
Stream很好,Map很酷,但答应我别用toMap():Java开发中的高效集合操作
在Java的世界里,Stream API和Map集合无疑是两大强大的工具,它们极大地简化了数据处理和集合操作的复杂度。然而,在享受这些便利的同时,我们也应当警惕一些潜在的陷阱,尤其是当Stream与Map结合使用时。本文将深入探讨Stream与Map的优雅用法,并特别指出在使用toMap()方法时需要注意的问题,旨在帮助大家在工作中更高效、更安全地使用这些技术。
34 0
|
2月前
|
Go
Golang语言之映射(map)快速入门篇
这篇文章是关于Go语言中映射(map)的快速入门教程,涵盖了map的定义、创建方式、基本操作如增删改查、遍历、嵌套map的使用以及相关练习题。
36 5
|
3月前
|
Java
【Java集合类面试二十二】、Map和Set有什么区别?
该CSDN博客文章讨论了Map和Set的区别,但提供的内容摘要并未直接解释这两种集合类型的差异。通常,Map是一种键值对集合,提供通过键快速检索值的能力,而Set是一个不允许重复元素的集合。
|
3月前
|
安全 Java
【Java集合类面试五】、 如何得到一个线程安全的Map?
如何得到一个线程安全的Map的方法包括:使用Collections工具类将Map包装为线程安全,使用java.util.concurrent包下的ConcurrentHashMap,以及不推荐使用性能较差的Hashtable。
|
5月前
|
Dart
Dart之集合详解(List、Set、Map)
Dart之集合详解(List、Set、Map)
|
3月前
|
存储 安全 Java
java集合框架复习----(4)Map、List、set
这篇文章是Java集合框架的复习总结,重点介绍了Map集合的特点和HashMap的使用,以及Collections工具类的使用示例,同时回顾了List、Set和Map集合的概念和特点,以及Collection工具类的作用。
java集合框架复习----(4)Map、List、set