我们本次将使用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);
在控制台打印出的结果:
这是我们指定时间2019年8月份北京的影像:
RGB影像:
NDVI影像