这里我们首先画一个自己选择的研究区,用于方便计算NDWI,这里我们将青海湖区域作为我们的研究区,第二步我们就是要设定一个函数,用于在函数中执行循环遍历,这里包括去云和影像筛选过程,最后按照最大值合成,最后我们分别加载影像,计算影像水域的面积分别用到的就是我们提到的pixelArea()和reduceregion(),在这个过程中我们可以设定一个水域变化面积的函数,用来展示每一面水体的面积变化情况,期间我们还可以构建动态展示效果,加载影像的三年湖水的动画效果。

ChartImage(ySeries,xSeries,options)

即将弃用,请使用 ui.Chart.image.*替换。
通过统计的结果在控制台绘制图表,绘制的图表可以保存。

方法参数:

- ySeries(List)

计算结果Array对象

- xSeries(List)

横坐标标注Array对象

- options(Object)这里的函数可以有好多种,我们这里分别在之前设定好的类型当中分别用到了线性图和柱状图

用于描述统计图的Json对象

返回值:null

代码:

//加载我们的自己画的区域
var geometry = pie.Geometry.Polygon([[[99.58525333814976,37.24714673441345],[100.77704556952716,37.24714673441345],[100.77704556952716,36.528174170711736],[99.58525333814976,36.528174170711736],[99.58525333814976,37.24714673441345]]
], null);//将其所化的geometry转化为矢量
var roi = pie.FeatureCollection(pie.Feature(geometry));
//加载图层
Map.addLayer(roi, { color: "ff0000ff", fillColor: "00000000" }, "roi", false);
//加载地图中心点
Map.centerObject(geometry, 9);//指定年份数据的NDWI指数提取
function processImage(year, roi) {var id = "LC08/01/T1";var l8Col = pie.ImageCollection(id).filterBounds(roi) //按范围过滤.filterDate(year + "-04-01", year + "-10-01") //按时间过滤.select(["B3", "B5", "BQA"])  //选择绿波段、红外波段和BQA波段.map(function (image) {     //map函数针对ImageCollection中的每个Image进行循环计算。var b3 = image.select("B3");var b5 = image.select("B5");var ndwi = (b3.subtract(b5)).divide(b3.add(b5));  //ndwi计算,ndwi=(b3-b5)/(b3+b5)//QA去云var qa = image.select("BQA");var cloudMask = qa.bitwiseAnd(1 << 4).eq(0);//去云和提取水体ndwi = ndwi.updateMask(cloudMask).updateMask(ndwi.gt(0.3));return ndwi.rename("NDWI");//对图层重命名,方便后面选择,不重命名的话,select时是“B3”});//采用最大值直接融合,最后做一次裁剪var yearImg = l8Col.select("NDWI").max().clip(roi);//return yearImg;  //返回Image对象
}
// 2017-2019年巢湖区域水体指数提取及显示
var img1 = processImage(2017, geometry);
Map.addLayer(img1, { min: -1, max: 1, palette: "0000ff" }, "2017", false);//bluevar img2 = processImage(2018, geometry);
Map.addLayer(img2, { min: -1, max: 1, palette: "00ff00" }, "2018", false);//greenvar img3 = processImage(2019, geometry);
Map.addLayer(img3, { min: -1, max: 1, palette: "ff0000" }, "2019", false);//red// 计算影像面积
function calcArea(yearImg, roi) {var areaImage = yearImg.pixelArea().multiply(yearImg.gt(0.3));var water = areaImage.reduceRegion(pie.Reducer.sum(), roi, 30);return water;
}// 青海湖水域2017-2019年面积变化多图表对比
//构建描述统计图的json对象
var line_options = {     title: '青海湖水域2017-2019年面积变化',legend: ['水体面积'],xAxisName: "日期(年)",yAxisName: "水体面积(平方千米)",chartType: "line",yScale: 1 / 1000000
};//构建计算结果Array对象
var areaValues = [    calcArea(img1, geometry),calcArea(img2, geometry),calcArea(img3, geometry)
];//构建横坐标标注Array对象
var xSeries = [2017, 2018, 2019];
//打印结果
print("2017年", areaValues[0]);
print("2018年", areaValues[1]);
print("2019年", areaValues[2]);//构建动画数据
var layerNames = [];
layerNames.push("2017" + "");
layerNames.push("2018" + "");
layerNames.push("2019" + "");//显示动画效果,传入动画数据、循环时间、循环次数
Map.playLayersAnimation(layerNames, 2, 100); //加载显示折线统计图
ChartImage(areaValues, xSeries, line_options);  //构建描述统计图的json对象
var column_options = {     title: '青海湖水域2017-2019年面积变化',legend: ["水体面积"],yAxisName: "水体面积(平方千米)",xAxisName: "日期(年)",chartType: "column",yScale: 1 / 1000000
};//加载显示柱状统计图
ChartImage(areaValues, xSeries, column_options);   

结果:

PIE-engine 教程 ——利用NDWI加载青海湖三年水域影像和面积计算相关推荐

  1. python训练好的图片验证_利用keras加载训练好的.H5文件,并实现预测图片

    我就废话不多说了,直接上代码吧! import matplotlib matplotlib.use('Agg') import os from keras.models import load_mod ...

  2. ​​​​​​​CV:利用cv2(加载人脸识别xml文件及detectMultiScale函数得到人脸列表)+keras的load_model(加载表情hdf5、性别hdf5)并标注

    CV:利用cv2+自定义load_detection_model(加载人脸识别xml文件及detectMultiScale函数得到人脸列表)+keras的load_model(加载表情hdf5.性别h ...

  3. 利用Office加载项进行持久化控制的6种姿势

    本文讲的是利用Office加载项进行持久化控制的6种姿势,现在,几乎所有用户都会使用Microsoft Office,它的普及率这么高,以至于攻击者经常会用它来实施大规模攻击. 本文就将为大家介绍通过 ...

  4. android 加载三方so的方法_Android开发教程之动态加载so库文件的方法

    Android开发教程之动态加载so库文件的方法,我想对于静态加载 so 库文件,大家都已经很熟悉了,这里就不多说了.在 Android 开发中调用动态库文件(*.so)都是通过 jni 的方式,而静 ...

  5. php8预加载,如何利用预加载优化Laravel Model查询详解

    前言 本文主要给大家介绍了关于利用预加载优化Laravel Model查询的相关内容,分享出来供大家参考学习,话不多说了,来一起看看详细的介绍: 介绍 对象关系映射(ORM)使数据库的工作变得非常简单 ...

  6. Caffe2教程实例,加载预训练模型

    Caffe2教程实例,加载预训练模型 概述 本教程使用模型库中的预训练模型squeezenet 里分类我们自己的图片.我们需要提供要分类图片的路径或者URL信息作为输入.了解ImageNet对象代码可 ...

  7. 在 ArcGIS Engine 应用程序中加载搜狗地图和谷歌地图。

    在ArcGIS Engine 应用程序中加载搜狗地图和谷歌地图. Adding sogou map or google map in ArcGIS Engine application WebmapL ...

  8. 在ArcGIS Engine 应用程序中加载搜狗地图和谷歌地图

    在ArcGIS Engine 应用程序中加载搜狗地图和谷歌地图. Adding sogou map or google map in ArcGIS Engine application WebmapL ...

  9. 【项目技术点总结之一】vue集成d3.js利用svg加载图片实现缩放拖拽功能

    [项目技术点总结之一]vue集成d3.js利用svg加载图片实现缩放拖拽功能 前言 概述 技术介绍 实现过程 插件安装 引用组件 初始化组件 实现效果 简单理解 使用d3创建一个svg 在svg中提添 ...

最新文章

  1. Oracle Database 11.2.0.1(静默安装)
  2. WIN7安装及配置JDK
  3. mysql 缓存监控_MySQL监控性能的一些方法总结
  4. 【C#学习】delegate(委托) 和 event(事件)
  5. 【转】C++标准转换运算符static_cast
  6. HTTPS时代已来,你做好准备了吗?
  7. 你的学习方法真的有效吗?
  8. 自己动手用electron+vue开发博客园文章编辑器客户端【一】
  9. android 动画卡顿优化,Android属性动画卡顿的优化
  10. 软件测试方法和技术有哪些?
  11. R语言弦图绘制 (单细胞互作弦图)
  12. 笔记--左耳朵耗子叔的成长经历
  13. idea实现Tomcat热部署
  14. fences(桌面整理软件)与eDiary3.3.3下载链接
  15. 裤子尺码对照表eur40_欧洲40的尺码具体部位多少
  16. mysql主从同步延迟优化大全
  17. 028 《数据分析师养成宝典》读书笔记
  18. 图像的空间分辨率和幅度分辨率
  19. 普通用户不能登录linux图形界面,只有root用户可以登录到图形界面
  20. 行云管家:专注多云混合云,树立一站式云管平台行业标杆

热门文章

  1. Android开发单选按钮功能,android实现单选按钮功能
  2. Web Service(三):先了解SOA
  3. IB数学/生物/化学/物理所需的教材有哪些
  4. powershehll删除并重装打印机
  5. 哈工大深圳计算机考研科目854,2020年哈尔滨工业大学854计算机基础硕士研究生入学考试科目大纲...
  6. 高效率同步降压变换器,24V转3.3V降压芯片
  7. 制作网页游戏的页面。(开始网页,登录账号网页和进入网页)
  8. xp系统steam无法连接到更新服务器,教你win10系统steam更新失败的解决教程
  9. 打开WIFI软件JAVA_java – 以编程方式打开wifi网络共享
  10. 商家后台1.0的设计思路