• 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的计算

    代码:

    1. /**
    2. * @File : map-06-ImageCollection循环计算_使用map算子
    3. * @Time : 2022/3/1
    4. * @Author : piesat
    5. * @Version : 1.0
    6. * @Contact : 400-890-0662
    7. * @License : (C)Copyright 航天宏图信息技术股份有限公司
    8. * @Desc : 取ImageCollection中的每个元素计算NDVI,采用map算子
    9. */
    10. //加载北京市边界
    11. var roi = pie.FeatureCollection("NGCC/CHINA_PROVINCE_BOUNDARY")
    12. .filter(pie.Filter.eq("name", "北京市"))
    13. .first()
    14. .geometry();
    15. Map.centerObject(roi, 6);
    16. Map.addLayer(roi, { color: "ff0000", fillColor: "00000000", width: 3 }, "北京市");
    17. //按区域、时间筛选影像
    18. var imgCol = pie.ImageCollection("LC08/01/T1")
    19. .filterBounds(roi)
    20. .filterDate("2019-8-01", "2019-8-30");
    21. print("imgCol", imgCol);
    22. Map.addLayer(imgCol.select(["B2", "B3", "B4"]).mosaic().clip(roi), { min: 0, max: 2500, bands: ["B4", "B3", "B2"] }, "imgCol", false);
    23. //循环计算每景影像的NDVI植被指数
    24. var imgCol_NDVI = imgCol.map(function (image) {
    25. var nir = image.select("B5");
    26. var red = image.select("B4");
    27. var NDVI = nir.subtract(red).divide(nir.add(red)).rename("NDVI");
    28. return image.addBands(NDVI);
    29. });
    30. print("imgCol_NDVI", imgCol_NDVI)
    31. //NDVI绘制样式
    32. var visParamNDVI = {
    33. min: -0.2,
    34. max: 0.8,
    35. palette: ['FFFFFF', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718', '74A901',
    36. '66A000', '529400', '3E8601', '207401', '056201', '004C00', '023B01',
    37. '012E01', '011D01', '011301']
    38. };
    39. //加载北京市NDVI植被指数数据
    40. var NDVI = imgCol_NDVI.select("NDVI").mosaic().clip(roi);
    41. Map.addLayer(NDVI, visParamNDVI, "NDVI", true);

    在控制台打印出的结果:

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

     RGB影像:

     NDVI影像

     

  • 相关阅读:
    onbuy买家号下单教程,自养买家号测评环境资源和核心优势!
    设计模式--工厂设计模式
    react中点击事件带参数会立即执行
    0基础学习VR全景平台篇 第104篇:720全景后期软件安装
    mysql超全语法大全
    文件上传漏洞靶场前十关
    k8s安装 Prometheus + Grafana
    Canal实现数据同步
    Unity3D学习笔记12——渲染纹理
    OPPO主题组件开发 - 调试与预览
  • 原文地址:https://blog.csdn.net/qq_31988139/article/details/126924492