前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PIE-engine 教程 ——影像集合的使用map()映射函数(北京市NDVI计算)

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

作者头像
此星光明
发布2024-02-02 08:25:23
2290
发布2024-02-02 08:25:23
举报

我们本次将使用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的计算

代码:

代码语言:javascript
复制
/**
 * @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);

在控制台打印出的结果:

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

 RGB影像:

 NDVI影像

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档