PIE-engine 教程 ——荒漠化程度提取案例分析(陕北区域)

这里我们利用ndvi进行荒漠化处理,我们这里将ndvi小于0.1的地方进行淹没掉,将剩余部分作为作为荒漠化的区域。这里选择时间的筛选我们将4月到10月的的时间作为研究时间。这里我们有几个函数需要需要先了解一下,首先是我们了解画polygon的函数,另外就是image的掩膜,另外一个就是像素统计函数

pie.Geometry.Polygon(coords,proj)

多边形构造Geometry。

方法参数:

- geometry(Geometry)

geometry实例。

- coords(Array)

给定坐标系下的多个点构成的坐标序列。

- proj(Projection, optional)

坐标系对象,null表示默认为EPSG:4326。

返回值:Geometry.Polygon

updateMask(value)

Image掩膜运算,参数image需要是一个0和1的二值图,返回一个Image对象。

这里的括号中我们所需要的是

方法参数:

- image(Image)

Image实例。

- value(Image|Double)

Image对象或数值。

返回值:Image

reduceRegion(reducer,geometry,scale)

对特定区域的所有像素进行统计,返回结果为一个JSON对象;目前可完成最大、最小和求和统计计算。

方法参数:

- image(Image)

Image实例。

- reducer(Reducer)

统计类型,包括最大值、最小值和求和。

- geometry(Geometry)

统计区域范围。默认是影像第一个波段的范围。

- scale(Number)

统计采样比例。

返回值:Dictionary

playLayersAnimation(layers,time,loop,callFunc)

将指定的图层列表设置动画图层。

方法参数:

- layers(List|Object)

图层的名称列表或者图层的配置信息,使用图层配置需要配置layer(图层的数据)、name(图层名称)、style(图层样式)。

- time(Number)

动画循环时间。

- loop(Number)

动画循环次数,-1是无限循环。

- callFunc(Function)

动画每一帧回调方法

返回值:null

ui.Legend(data,style,type,onClick)

图例的构造方法。

方法参数:

- ui(ui)

调用者:ui对象。

- data(Object)

图例的组成样式数据。

- style(Object)

在地图上的位置,数据为对象。right:距离右侧的位置,bottom:距离下面的位置,width:宽(无则自适应),height:高(无则自适应)

- type(String)

图例的类型:continue或者classify。默认是continue类型,classify就是continue中step=1的特殊情况。

- onClick(Function)

点击回调方法。

返回值:ui.Legend

代码:

// 划定数据范围-陕北区域
var geometry = pie.Geometry.Polygon([[[109.7, 38.8], [110.3, 38.8], [110.3, 38.4], [109.7, 38.4], [109.7, 38.8]]], null);
var roi = pie.FeatureCollection(pie.Feature(geometry));
Map.addLayer(roi, { color: "ff00ffff", fillColor: "00000000" }, "roi", true);  //加载显示ROI图层
Map.centerObject(geometry, 9);  //定义地图显示中心及显示层级
// 指定年份数据的荒漠化指数Albedo指数提取
function processImage(year, roi) {var id = "LC08/01/T1";var l8Col = pie.ImageCollection(id).filterBounds(roi)  //按范围过滤影像.filterDate(year + "-04-01", year + "-10-01")  //按日期过滤影像.select(["B4", "B5", "BQA"])  //选择影像的B4、B5和BQA波段.map(function (image) {   //map函数针对ImageCollection中的每个Image进行循环计算。var b4 = image.select("B4");var b5 = image.select("B5");//归一化植被指数计算var ndvi = (b5.subtract(b4)).divide(b5.add(b4));  //ndvi计算,ndvi=(b4-b5)/(b4+b5)//荒漠化指数Albedo=aNDVI+b     a、b取值由实验区成图效果所定var albedo = ndvi.multiply(1.00001).add(0.000003);//QA去云var qa = image.select("BQA");var cloudMask = qa.bitwiseAnd(1 << 4).eq(0);//去云和提取植被指数<0.1区域albedo = albedo.updateMask(cloudMask).updateMask(albedo.lt(0.1));return albedo.rename("Albedo");//对图层重命名,方便后面选择,不重命名的话,select时是“B4”});//采用最大值直接融合,最后做一次裁剪var yearImg = l8Col.select("Albedo").max().clip(roi);return yearImg; //返回Image对象
}
// 2017-2019年陕北区域荒漠化指数提取及显示
var img1 = processImage(2015, geometry);
Map.addLayer(img1, { min: -1, max: 1, palette: "c7c7c7" }, "2015", false);//grey
var img2 = processImage(2016, geometry);
Map.addLayer(img1, { min: -1, max: 1, palette: "ffff00" }, "2016", false);//yellow
var img3 = processImage(2017, geometry);
Map.addLayer(img1, { min: -1, max: 1, palette: "0000ff" }, "2017", false);//blue
var img4 = processImage(2018, geometry);
Map.addLayer(img2, { min: -1, max: 1, palette: "00ff00" }, "2018", false);//green
var img5 = processImage(2019, geometry);
Map.addLayer(img3, { min: -1, max: 1, palette: "ff0000" }, "2019", false);//red
// 计算2015-2019年荒漠化面积 (Albedo<0.1定义为荒漠)
function calcArea(yearImg, roi) {var areaImage = yearImg.pixelArea().multiply(yearImg.lt(0.1));var s = areaImage.reduceRegion(pie.Reducer.sum(), roi, 30);return s;
}
// 陕北地区2015-2019年荒漠化面积变化多图表对比
var line_options = {title: '陕北地区2015-2019年荒漠化面积变化',legend: ['荒漠面积'],xAxisName: "日期(年)",yAxisName: "荒漠面积(平方千米)",chartType: "line",yScale: 1 / 100
};
//我们这里分别建造5个面积的列表作为y轴列表
var areaValues = [   //定义数组,调用构造函数计算各个年份荒漠化面积calcArea(img1, geometry),calcArea(img2, geometry),calcArea(img3, geometry),calcArea(img4, geometry),calcArea(img5, geometry)
];//简历X轴的时间序列列表
var xSeries = [2015, 2016, 2017, 2018, 2019];   //定义数组,作为统计图x轴显示
print("2015年", areaValues[0]);
print("2016年", areaValues[1]);
print("2017年", areaValues[2]);
print("2018年", areaValues[3]);
print("2019年", areaValues[4]);//这里是为了加载不同图层的图层名称,作为我们的加载动画的结果
var layerNames = [];
layerNames.push("2015" + "");
layerNames.push("2016" + "");
layerNames.push("2017" + "");
layerNames.push("2018" + "");
layerNames.push("2019" + "");
Map.playLayersAnimation(layerNames, 2, 100); //动态显示
ChartImage(areaValues, xSeries, line_options); //显示折线图//这里我们注意Yscale的1 / 1000000
var column_options = {title: '陕北荒漠化2015-2019年面积变化',legend: ["荒漠化面积"],yAxisName: "荒漠化面积(平方千米)",xAxisName: "日期(年)",chartType: "column",yScale: 1 / 1000000
};
ChartImage(areaValues, xSeries, column_options);  //显示柱状图var data = {     //定义图例的样式数据,其类型为对象title: "年份",colors: ['#c7c7c7', '#ffff00', '#0000ff', '#00ff00', '#ff0000'],labels: ["2015", "2016", "2017", "2018", "2019"],step: 1
};var style = {  //定义图例在地图上的位置,其类型为对象top: "45%",left: "20%",width: "350px",height: "70px"
};
var legend = ui.Legend(data, style); //生成图例对象,传入图例的组成样式数据、在地图上的位置数据,数据为对象。
Map.addUI(legend);  //加载显示图例,传入图例对象

荒漠化面积结果:

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/50746.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【乌鲁木齐】基于ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升环境、生态、水文、土地、土壤、农业、大气等领域应用

【原文链接】&#xff1a;【乌鲁木齐】基于ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升环境、生态、水文、土地、土壤、农业、大气https://mp.weixin.qq.com/s?__bizMzU5NTkyMzcxNw&mid2247545692&idx1&sn1934aa8be717557c6c97c6b5e2a49151&chksmfe68f5…

自然资源(国土)部门通用坐标TXT转SHP的FME方法

一、任务来源 经常遇到提供了TXT坐标需要转成矢量&#xff0c;然后去跟其他数据做分析统计的情况&#xff0c;最典型的就是原国土资源部门&#xff08;现在的自然资源部门&#xff09;在各种系统中用到的TXT坐标格式&#xff0c;它们的本质爱基本都是相同的&#xff0c;有的根据…

电商评论文本情感分类(中文文本分类+中文词云图)(第一部分-textcnn)

电商评论文本情感分类(中文文本分类中文词云图) 第一部分 第二部分Bert部分 本项目包含&#xff1a; 1.中文文本处理 2.中文词云图绘制 3.中文词嵌入 4.基于textcnn的中文文本分类&#xff08;Test_Acc89.2000&#xff09; 5.基于bert的中文文本分类&#xff08;Test_Acc0.…

详解升讯威在线客服系统前端多国语言实现技术:原生支持葡文、印尼文、土耳其文、俄文

我在业余时间开发维护了一款免费开源的升讯威在线客服系统&#xff0c;也收获了许多用户。对我来说&#xff0c;只要能获得用户的认可&#xff0c;就是我最大的动力。 越来越多的用户向我提出需求&#xff0c;希望为访客端增加更多的界面语言&#xff0c;如葡文、印尼文、土耳其…

【NLP论文翻译】基于显著性感知主题建模的面向主题的客户服务口语对话摘要

本博客为博主论文阅读记录&#xff0c;原论文和github地址如下&#xff1a; 原论文下载&#xff1a;https://ojs.aaai.org/index.php/AAAI/article/view/17723/17530 代码&#xff1a;https://github.com/RowitZou/topic-dialog-summ 本篇博客所介绍论文为AAAI 2021论文 NLP领域…

ChatExcel 来了,太酷炫了!

点击上方“Java基基”&#xff0c;选择“设为星标” 做积极的人&#xff0c;而不是积极废人&#xff01; 每天 14:00 更新文章&#xff0c;每天掉亿点点头发... 源码精品专栏 原创 | Java 2021 超神之路&#xff0c;很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应…

本周最火AutoGPT!GitHub3.6万+标星,解决复杂任务全程无需人类插手

金磊 丰色 发自 凹非寺量子位 | 公众号 QbitAI 本周AI圈”最红炸子鸡“诞生——AutoGPT。 不仅如此&#xff0c;这款软件系统的横空出世&#xff0c;一举将AI进程推向了新高度—— 自主人工智能。 顾名思义&#xff0c;它所具备的能力主打的就是一个“自主”&#xff0c;完全不…

智慧园区如何搭乘数字孪生这列快车?

无论是2022年的火爆的元宇宙还是今年出圈的ChatGPT&#xff0c;都体现着数字技术嵌入社会生活是大趋势&#xff0c;数字孪生作为智能技术的一大亮点&#xff0c;它在智慧园区中的应用会是怎样呢&#xff1f;今天我们就来聊一聊&#xff01; &#xff08;全文3000字&#xff0c;…

超详细!简单的物联网模块esp8266接入小爱爱同学控制电器(一)——控制开关灯

简单的物联网模块esp8266接入小爱爱同学控制电器&#xff08;一&#xff09;——控制开关灯 闲来无事&#xff0c;分享一个简单使用的物联网实现系统&#xff08;小爱同学esp8266&#xff09;&#xff0c;实现手机控制开关灯小爱同学控制开关灯 1.准备材料&#xff1a; 1.1 …

想用天猫精灵、小爱同学语音控制灯、窗帘、卷帘门、投影幕……实现你的智能家居梦?用十几元钱制作一个红外射频转发器试试吧

使用场景 自从智能音箱出现以后&#xff0c;是不是想用智能音箱控制家里的电器和设备&#xff1f;但是购买接入天猫精灵和小爱同学的设备都很贵&#xff0c;比如一套普通的电动窗帘架300元左右&#xff0c;但是接入智能音箱控制的最少要700元。想尝试智能家居控制的老铁们肯定…

程序员的真实工资是多少?

众所周知&#xff0c;程序员这个圈子工资差异还是蛮大的&#xff0c;很多猿猿在一线城市少的拿8k&#xff0c;多的10k也有&#xff0c;都是凭自己的能力赚钱。 今年受疫情影响&#xff0c;不少企业开始缩减招聘名额&#xff0c;更别说涨薪了&#xff01;据统计&#xff0c;今年…

腾讯开发微信花了多少钱?程序员告诉你有多劳民伤财

微信这玩意&#xff0c;你就是照着已有的产品开发个一摸一样的&#xff0c;最少1000万。 各种功能都是程序员一行行写出来的&#xff0c;绕不过去。你觉得它简单&#xff0c;因为它设计得比较易用&#xff0c;用户觉不出它无数的功能点。 40个人的团队&#xff0c;人均薪资两万…

程序员的工资高,到底程序员的工资有多高?你不了解的程序员!

都说程序员的工资高&#xff0c;程序员工资是不是过高&#xff1f; 如果和国内和其他职业横向比较&#xff0c;是的&#xff0c;局部过高。全世界和其他程序员&#xff08;主要是美帝&#xff09;比&#xff0c;不是&#xff0c;太低。互联网是不是毒瘤&#xff1f;以后优秀的…

软件测试【月入1万如讨饭】需要多少才能算高薪呢?

小编热衷于收集整理资源&#xff0c;记录踩坑到爬坑的过程。希望能把自己所学&#xff0c;实际工作中使用的技术、学习方法、心得及踩过的一些坑&#xff0c;记录下来。也希望想做软件测试的你一样&#xff0c;通过我的分享可以少走一些弯路&#xff0c;可以形成一套自己的方法…

程序员分哪几种,分别薪资是多少

这是本文的目录 前言程序员的类别程序员的薪资一般是多少这里着重介绍一下python程序员&#xff1a;python副业介绍1、兼职处理数据2、兼职查询资料3、兼职P图 零基础Python学习资料介绍附上Python学习指南&#x1f449;Python学习路线汇总&#x1f448;&#x1f449;Python必备…

Google程序员究竟能挣多少钱?

美国知乎Quora上出了一篇名为“How Much Does Google Engineer Make&#xff1f;”的问题。 其中&#xff0c;一位匿名回答者答道&#xff0c;虽然自己在Google是个经验“尚浅”的软件工程师&#xff0c;但自己的年薪已经达到30万美金了&#xff01; 接着&#xff0c;在知乎上也…

程序员在一线城市立足,需要月入多少钱?

自从3 月 21 日&#xff0c;北京市人才落户新政“《北京市引进人才管理办法&#xff08;试行&#xff09;》”发布后&#xff0c;社会上热烈讨论&#xff0c;小编注意到网上有很多程序员盆友对此政策十分关注&#xff01; 第五条 加大科技创新人才及科技创新服务人才引进力度&…

读了几篇boosting文献的收获。。。

距离上一篇blog都3个多月了。最近也是有的懒&#xff0c;看到别人的blog层次都很高&#xff0c;总是介绍些opencv的粗浅的东西&#xff0c;总是感觉自惭形愧。所以一直野就没写啥。白驹过隙&#xff0c;3个月&#xff0c;我都转博了&#xff0c;opencv都2.4.3了&#xff0c;可是…

百度语音DuerOS对接

百度语音DuerOS对接 百度语音对接一 流程二 编码三 使用规则 百度语音对接 百度语音对接是基于云云对接的方式实现&#xff0c;主要有四个重点 1 账号授权 2 webService-发现设备 3 webService-控制设备 4 webService-属性上报 本篇值描述1和大致的流程、实际的文档可以参考官…

回顾 | 阿里数据中台建模

阿里中台的概念&#xff0c;可以说是近些年来的颇为火爆的概念。从十余年前的阿里在内部完成这一过程&#xff0c;并提出了“中台”概念&#xff1b;到后面中台概念逐步被外部接受并在2019年爆火兴起。数据中台爆火背后&#xff0c;既有传统企业转型焦虑的市场东风&#xff0c;…