首页 > 其他分享 >【GEE笔记2】数据整合Reducer/遍历循环.map

【GEE笔记2】数据整合Reducer/遍历循环.map

时间:2022-10-08 16:34:49浏览次数:53  
标签:map roi image Reducer GEE ndvi var NDVI 影像


Reducer是GEE中按照时间、空间、波段等进行整合数据的方法;类似于从部分到整体。

ee.Reducer()可以指定数据整合的方式,如:max\min\mean\etal。

  • 时间:imageCollection.reduce()
  • 空间:image.reduceRegion() ; image.reduceNeighborhood()
  • 波段:image.reduce()
  • Feature Collection 的属性:Feature Collection.reduceColumns()

以计算NDVI数值并添加至影像合集为例

具体需求:
为一个影像集合添加NDVI波段,同时计算每一景影像上roi的NDVI均值

var mean = ndvi.reduceRegion({  
reducer: ee.Reducer.mean(),
geometry: roi,
scale: 30
});
print("reduceRegion value is: ", mean);

map遍历循环

  • map:用的最多,执行效率最快,相当于“并行执行任务”,能用 map,就用 map,但是函数里一般不能用 print,Map,toDrive 等方法
  • for、while:就是基本的循环结构语句,但是在GEE里很少用,基本用 map 替代,因为是顺序执行代码,效率太慢
  • iterate:“迭代”,顺序执行,每次执行都在前面执行的结果上继续执行,很遗憾,这次的例子没有体现“迭代”的意思
  • eval(232, 232, 232); background: rgb(249, 249, 249);">
    var roi = ee.FeatureCollection(geometry);  
    Map.addLayer(roi, {color: "red"}, "roi"); // 显示roi
    Map.centerObject(roi, 9); // 以roi为中心,缩放等级9
    // 筛选影像
    var Col = ee.ImageCollection("LANDSAT/LC09/C02/T1_TOA")
    .filterBounds(roi)
    .filterDate("2022-1-1", "2022-7-1")
    // 循环遍历影像集合,为每景影像计算并添加一个NDVI波段
    .map(function(image){
    var ndvi = image.normalizedDifference(["B5", "B4"])
    .rename("NDVI");
    return image.addBands(ndvi);
    })
    // 选择NDVI波段用于后续计算
    .select("NDVI")
    // 循环遍历影像集合,计算每景影像roi的NDVI均值,并赋为新的属性字段“ndvi”
    .map(function(image) {
    var dict = image.reduceRegion({
    reducer: ee.Reducer.mean(),
    geometry: roi,
    scale: 30
    });
    var ndvi = ee.Number(dict.get("NDVI"));
    image = image.set("ndvi", ndvi);
    return image;
    });
    // 可视化参数,加载显示新的影像集合,使用first(),返回集合的第一个非空元素,即第一景影像
    print("Col", Col);
    var visParam = {
    min: -0.2,
    max: 0.8,
    palette: ["FFFFFF", "CE7E45", "DF923D", "F1B555", "FCD163",
    "99B718", "74A901", "66A000", "529400", "3E8601",
    "207401", "056201", "004C00", "023B01", "012E01",
    "011D01", "011301"]
    };
    Map.addLayer(Col.first().clip(roi), visParam, "Col");

标签:map,roi,image,Reducer,GEE,ndvi,var,NDVI,影像
From: https://blog.51cto.com/u_15813863/5738316

相关文章

  • 【GEE笔记6】数据连接Join
    连接​​ee.Join​​​用于根据​​ee.Filter​​​指定的条件组合来自不同集合(例如ImageCollection或FeatureCollection)的元素。过滤器由每个集合中相互关联的属性的......
  • 【GEE笔记4】GEE的数据下载和上传(Google Drive和Google Assets)
    虽然GEE有很多在线数据,但我们在使用的过程中有很多场景需要用到自己独有的数据,比如shp数据、csv数据等。GEE中,有多个存储空间​​GoogleDrive​​​​https://drive.google......
  • 【GEE笔记3】发布APP(简易版)
    何为GEE发布APP就是GEE发布一些APP(应用)用官方的话说就是Dynamic,publiclyaccessibleuserinterfacesforEarthEngineanalyses(用于地球引擎分析的动态、可公开访问的......
  • Java自学小白——Set系列集合、Map集合体系
      一、Set系列集合Set系列集合特点无序:存取顺序不一致不重复:可以去除重复无索引:没有带索引的方法,所以不能使用普通for循环遍历,也不能通过索引来获取元素Set集合......
  • Python 使用zmail、imapclient或imap_tools接收邮件
    Python中,可以使用通过代码方式接收邮件,本文主要介绍使用zmail、imapclient和imap_tools三种方法接收邮件,以及相关的示例代码。原文地址:Python使用zmail、imapclient或ima......
  • 如何理解WeakMap?
    在学习​​缓存函数​​时,最后提到了WeakMap方式缓存(对入参类型为对象做缓存,并且当对象在WeakMap中的key没有引用时方便浏览器垃圾回收)Ifourparameterwereanobject(ra......
  • map遍历的5种方法分享
    转自:​​http://www.java265.com/JavaJingYan/202206/16545078043664.html​​下文笔者将讲述对map循环遍历的方法分享,如下所示:Map是我们日常开发中常用的数据容器那么如......
  • Map<Integer,Value>放入缓存后取出来变成了Map<String,Value>
    背景将一个类型为Map<Integer,String>的一个Map对象放到redis中后,再次取出来时。当我们想便利Map.entrySet()获取每个Entry中的Key,如执行Integerkey=entry.getKey();那......
  • CVPR2022| BodyMap可用于换装,Vision Transformers 又立功!
    整理:AI算法与图像处理CVPR2022论文和代码整理:https://github.com/DWCTOD/CVPR2022-Papers-with-Code-Demo欢迎关注公众号AI算法与图像处理,获取更多干货:大家好,  最近正在......
  • ES Mapping
    映射是定义如何存储和索引一个文件及其包含的字段的过程。每个文档都是一个字段的集合,每个字段都有自己的数据类型。当映射你的数据时,你创建一个映射定义,其中包含一个与文......