PIE-engine 教程 ——利用NDWI加载青海湖三年水域影像和面积计算
这里我们首先画一个自己选择的研究区,用于方便计算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加载青海湖三年水域影像和面积计算相关推荐
- python训练好的图片验证_利用keras加载训练好的.H5文件,并实现预测图片
我就废话不多说了,直接上代码吧! import matplotlib matplotlib.use('Agg') import os from keras.models import load_mod ...
- CV:利用cv2(加载人脸识别xml文件及detectMultiScale函数得到人脸列表)+keras的load_model(加载表情hdf5、性别hdf5)并标注
CV:利用cv2+自定义load_detection_model(加载人脸识别xml文件及detectMultiScale函数得到人脸列表)+keras的load_model(加载表情hdf5.性别h ...
- 利用Office加载项进行持久化控制的6种姿势
本文讲的是利用Office加载项进行持久化控制的6种姿势,现在,几乎所有用户都会使用Microsoft Office,它的普及率这么高,以至于攻击者经常会用它来实施大规模攻击. 本文就将为大家介绍通过 ...
- android 加载三方so的方法_Android开发教程之动态加载so库文件的方法
Android开发教程之动态加载so库文件的方法,我想对于静态加载 so 库文件,大家都已经很熟悉了,这里就不多说了.在 Android 开发中调用动态库文件(*.so)都是通过 jni 的方式,而静 ...
- php8预加载,如何利用预加载优化Laravel Model查询详解
前言 本文主要给大家介绍了关于利用预加载优化Laravel Model查询的相关内容,分享出来供大家参考学习,话不多说了,来一起看看详细的介绍: 介绍 对象关系映射(ORM)使数据库的工作变得非常简单 ...
- Caffe2教程实例,加载预训练模型
Caffe2教程实例,加载预训练模型 概述 本教程使用模型库中的预训练模型squeezenet 里分类我们自己的图片.我们需要提供要分类图片的路径或者URL信息作为输入.了解ImageNet对象代码可 ...
- 在 ArcGIS Engine 应用程序中加载搜狗地图和谷歌地图。
在ArcGIS Engine 应用程序中加载搜狗地图和谷歌地图. Adding sogou map or google map in ArcGIS Engine application WebmapL ...
- 在ArcGIS Engine 应用程序中加载搜狗地图和谷歌地图
在ArcGIS Engine 应用程序中加载搜狗地图和谷歌地图. Adding sogou map or google map in ArcGIS Engine application WebmapL ...
- 【项目技术点总结之一】vue集成d3.js利用svg加载图片实现缩放拖拽功能
[项目技术点总结之一]vue集成d3.js利用svg加载图片实现缩放拖拽功能 前言 概述 技术介绍 实现过程 插件安装 引用组件 初始化组件 实现效果 简单理解 使用d3创建一个svg 在svg中提添 ...
最新文章
- Oracle Database 11.2.0.1(静默安装)
- WIN7安装及配置JDK
- mysql 缓存监控_MySQL监控性能的一些方法总结
- 【C#学习】delegate(委托) 和 event(事件)
- 【转】C++标准转换运算符static_cast
- HTTPS时代已来,你做好准备了吗?
- 你的学习方法真的有效吗?
- 自己动手用electron+vue开发博客园文章编辑器客户端【一】
- android 动画卡顿优化,Android属性动画卡顿的优化
- 软件测试方法和技术有哪些?
- R语言弦图绘制 (单细胞互作弦图)
- 笔记--左耳朵耗子叔的成长经历
- idea实现Tomcat热部署
- fences(桌面整理软件)与eDiary3.3.3下载链接
- 裤子尺码对照表eur40_欧洲40的尺码具体部位多少
- mysql主从同步延迟优化大全
- 028 《数据分析师养成宝典》读书笔记
- 图像的空间分辨率和幅度分辨率
- 普通用户不能登录linux图形界面,只有root用户可以登录到图形界面
- 行云管家:专注多云混合云,树立一站式云管平台行业标杆
热门文章
- Android开发单选按钮功能,android实现单选按钮功能
- Web Service(三):先了解SOA
- IB数学/生物/化学/物理所需的教材有哪些
- powershehll删除并重装打印机
- 哈工大深圳计算机考研科目854,2020年哈尔滨工业大学854计算机基础硕士研究生入学考试科目大纲...
- 高效率同步降压变换器,24V转3.3V降压芯片
- 制作网页游戏的页面。(开始网页,登录账号网页和进入网页)
- xp系统steam无法连接到更新服务器,教你win10系统steam更新失败的解决教程
- 打开WIFI软件JAVA_java – 以编程方式打开wifi网络共享
- 商家后台1.0的设计思路