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

 


相关文章
go语言中遍历映射(map)
go语言中遍历映射(map)
306 8
|
2月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
223 1
|
6月前
|
安全 Java 数据库连接
让我们讲解一下 Map 集合遍历的方式
我是小假 期待与你的下一次相遇 ~
266 43
使用 entrySet 遍历 Map 类集合 KV
使用 entrySet 遍历 Map 类集合 KV
go语言for遍历映射(map)
go语言for遍历映射(map)
424 12
|
存储 Go
go语言 遍历映射(map)
go语言 遍历映射(map)
353 2
|
存储 前端开发 API
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
该文章详细介绍了ES6中Set和Map数据结构的特性和使用方法,并探讨了它们在前端开发中的具体应用,包括如何利用这些数据结构来解决常见的编程问题。
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
|
Go 定位技术 索引
Go 语言Map(集合) | 19
Go 语言Map(集合) | 19
|
数据处理 Python
Pandas中的map函数应用
Pandas中的map函数应用
132 2
WK
|
Python
map函数
在Python中,`map()` 是一个内置的高阶函数,接受一个函数和一个或多个可迭代对象作为参数,将指定函数应用于每个元素,并返回包含应用结果的迭代器。若有多个可迭代对象,其元素会并行地传递给函数。`map()` 返回一个迭代器,需用 `list()` 转换。在Python 3中,`map()` 返回迭代器而非列表,并支持 `lambda` 表达式,适用于多种应用场景。注意,当输入的可迭代对象长度不同时,结果仅包含最短对象的长度。
WK
517 1

热门文章

最新文章