本文以广东省为研究区,分别计算NDBSI\WET\NDVI\LST各个指数的的计算后遥感生态指数。本文使用的影像是MODIS影像(USGS/MOD09A1/006、USGS/MOD11A2/006、USGS/MOD13A1/006)然后利用QA波段进行去云,然后通过影像集合进行影像筛选和相关去云操作,然后设定可视化参数,之后就是计算每一个指数的参数以及可视化参数。最后我们将chart图表的样式进行设定,然后导出影像。本文所需的函数

ui.Chart.array(data)

数据图表组件。

方法参数:

- ui(ui.Chart)

调用者:ui.Chart对象。

- data(Object)

图表配置信息。

返回值:ui.Chart

reduceRegion(reducer,geometry,scale)

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

方法参数:

- image(Image)

Image实例。

- reducer(Reducer)

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

- geometry(Geometry)

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

- scale(Number)

统计采样比例。

返回值:Dictionary

image(image,description,assetId,pyramidingPolicy,dimensions,region,scale,crs,crsTransform,maxPixels)

导出影像到个人存储空间。

方法参数:

- export(Export)

Export方法。

- image(Image)

要导出的影像。

- description(String, optional)

导出影像任务的描述。

- assetId(String, optional)

导出影像的存储路径。

- pyramidingPolicy(Object, optional)

金字塔规则。

- dimensions(Int, optional)

维度。

- region(Geometry, optional)

导出影像的范围。

- scale(Float, optional)

缩放比例,目前默认都是1。

- crs(Projection, optional)

投影的基准坐标参考系,暂指定为EPSG:4326或EPSG:3857参考系。

- crsTransform(List, optional)

投影坐标系变换值的列表。

- maxPixels(Long, optional)

要导出的最大像素数。

返回值:null

代码:

/*** @Name    :   广东省遥感生态指数研究* @Author  :   广州大学张三的组* @Source  :   航天宏图第四届 “航天宏图杯”PIE软件二次开发大赛云开发组三等奖获奖作品* @Description :  1、计算LST、NDVI、WET、NDBSI等数据并且将其导出*/var featureCollection0 = pie.FeatureCollection("NGCC/CHINA_PROVINCE_BOUNDARY");
var gd = featureCollection0.filter(pie.Filter.eq("name", "广东省")).first().geometry();//在地图上显示广东省区域矢量图
Map.addLayer(gd, { color: "ffff00ff", fillColor: "00000000" }, "广东省行政区划")
Map.centerObject(gd, 5)//导入所需数据集
var MOD09A1 = pie.ImageCollection("USGS/MOD09A1/006");
var MOD11A2 = pie.ImageCollection("USGS/MOD11A2/006");
var MOD13A1 = pie.ImageCollection("USGS/MOD13A1/006");//构建云掩膜函数
function cloudfree_mod09a1(image) {var qa = image.select('sur_refl_state_500m')var cloudState0 = 1 << 0;var cloudState1 = 1 << 1;var cloudShadowState = 1 << 2;var cirrusState8 = 1 << 8;var cirrusState9 = 1 << 9;var mask = qa.bitwiseAnd(cloudState0).eq(0).and(qa.bitwiseAnd(cloudState1).eq(0)).and(qa.bitwiseAnd(cloudShadowState).eq(0)) // No cloud shadow.and(qa.bitwiseAnd(cirrusState8).eq(0)).and(qa.bitwiseAnd(cirrusState9).eq(0)) // No cirrusreturn image.updateMask(mask)
}//筛选09A1影像准备真色彩波段验证云掩膜
var recentimage = MOD09A1.filterDate("2020-11-01", "2020-12-30").filterBounds(gd).select(["sur_refl_b01", "sur_refl_b03", "sur_refl_b04", "sur_refl_b06", "sur_refl_state_500m"]).map(cloudfree_mod09a1).mosaic().clip(gd);
var visParam = {min: -100,max: 3000,bands: ["sur_refl_b01", "sur_refl_b04", "sur_refl_b03"]
}//构建水体指数函数
function MNDWI(img) {var blue = img.select("sur_refl_b03")var green = img.select("sur_refl_b04");var swir1 = img.select("sur_refl_b06");var swir2 = img.select("sur_refl_b07");var nir = img.select("sur_refl_b02");var mndwi = green.subtract(swir1).divide(green.add(swir1)).rename(mndwi)var aweinsh = blue.add(green.multiply(2.5)).subtract(nir.add(swir1).multiply(1.5)).subtract(swir2.multiply(0.25)).rename(aweinsh);var awei = green.subtract(swir1).multiply(4).subtract(nir.multiply(0.25).add(swir2.multiply(2.75))).rename(awei);var ndwi = green.subtract(nir).divide(green.add(nir)).rename(ndwi);return mndwi
}//以阈值为0创建水体掩膜
var WaterMask = MNDWI(recentimage).lt(0);
//对影像进行水体掩膜运算
var wa = recentimage.updateMask(WaterMask);
//影像可视化渲染
Map.addLayer(wa, visParam, "ss")//筛选时间地区,水体掩膜处理
var LST = MOD11A2.filterDate("2020-12-01", "2020-12-30").filterBounds(gd).select('LST_Day_1km').mean().clip(gd).multiply(0.02).subtract(273.15).rename('lst').updateMask(WaterMask)
//计算热度指数最大值
var maxLst = pie.Number(LST.reduceRegion(pie.Reducer.max(), gd, 1000).get('lst'))
//计算热度指数平均值
var aveLst = pie.Number(LST.reduceRegion(pie.Reducer.mean(), gd, 1000).get('lst'))
//计算热度指数最小值
var minLst = pie.Number(LST.reduceRegion(pie.Reducer.min(), gd, 1000).get('lst'))
//通过最大最小值计算归一化热度指数平均值
var noraveLst = aveLst.subtract(minLst).divide(maxLst.subtract(minLst)) var LSTVis = {min: 4.6,max: 27.5,palette: ['040274', '040281', '0502a3', '0502b8', '0502ce', '0502e6','0602ff', '235cb1', '307ef3', '269db1', '30c8e2', '32d3ef','3be285', '3ff38f', '86e26f', '3ae237', 'b5e22e', 'd6e21f','fff705', 'ffd611', 'ffb613', 'ff8b13', 'ff6e08', 'ff500d','ff0000', 'de0101', 'c21301', 'a71001', '911003']
};
//热度指数可视化渲染
Map.addLayer(LST, LSTVis, 'LST'); var NDVI = MOD13A1.filterDate("2020-12-01", "2020-12-30").filterBounds(gd).select('NDVI').mean().clip(gd).multiply(0.0001).rename('ndvi');
//计算绿度指数最大值
var maxNDVI = pie.Number(NDVI.reduceRegion(pie.Reducer.max(), gd, 500).get('ndvi'))
//计算绿度指数平均值
var aveNDVI = pie.Number(NDVI.reduceRegion(pie.Reducer.mean(), gd, 500).get('ndvi'))
//计算绿度指数最小值
var minNDVI = pie.Number(NDVI.reduceRegion(pie.Reducer.min(), gd, 500).get('ndvi'))
//通过最大最小值计算归一化植被指数平均值
var noraveNDVI = aveNDVI.subtract(minNDVI).divide(maxNDVI.subtract(minNDVI)) var ndviVis = {min: -0.19,max: 0.9,palette: ['FFFFFF', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718', '74A901','66A000', '529400', '3E8601', '207401', '056201', '004C00', '023B01','012E01', '011D01', '011301'],
};
//绿度指数可视化渲染
Map.addLayer(NDVI, ndviVis, "ndvi") //筛选影像,去云处理,水体掩膜处理var srIMG0 = MOD09A1.filterDate("2020-11-01", "2020-12-30").filterBounds(gd).select(["sur_refl_b01", "sur_refl_b02", "sur_refl_b03", "sur_refl_b04","sur_refl_b05", "sur_refl_b06", "sur_refl_b07", "sur_refl_state_500m"]).map(cloudfree_mod09a1).mosaic().clip(gd).updateMask(WaterMask);var WET = srIMG0.select("sur_refl_b01").multiply(0.1147) //红波段.add(srIMG0.select("sur_refl_b02").multiply(0.2489)) //近红外波段1.add(srIMG0.select("sur_refl_b03").multiply(0.2408)) //蓝波段.add(srIMG0.select("sur_refl_b04").multiply(0.3132)) //绿波段.add(srIMG0.select("sur_refl_b05").multiply(-0.3122)) //近红外波段2.add(srIMG0.select("sur_refl_b06").multiply(-0.6416)) //短波红外1.add(srIMG0.select("sur_refl_b07").multiply(-0.5087)) //短波红外2.multiply(0.0001).rename("wet")
//计算湿度指数
var maxWET = pie.Number(WET.reduceRegion(pie.Reducer.max(), gd, 500).get('wet')) //计算湿度指数最大值
var aveWET = pie.Number(WET.reduceRegion(pie.Reducer.mean(), gd, 500).get('wet')) //计算湿度指数平均值
var minWET = pie.Number(WET.reduceRegion(pie.Reducer.min(), gd, 500).get('wet')) //计算湿度指数最小值
var noraveWET = aveWET.subtract(minWET).divide(maxWET.subtract(minWET)) //通过最大最小值计算归一化湿度指数平均值var wetVis = {min: -0.3,max: 0.01,palette: ['040274', '040281', '0502a3', '0502b8', '0502ce', '0502e6','0602ff', '235cb1', '307ef3', '269db1', '30c8e2', '32d3ef','3be285', '3ff38f', '86e26f', '3ae237', 'b5e22e', 'd6e21f','fff705', 'ffd611', 'ffb613', 'ff8b13', 'ff6e08', 'ff500d','ff0000', 'de0101', 'c21301', 'a71001', '911003']
}
Map.addLayer(WET, wetVis, "wet") //湿度指数可视化渲染var sswir1 = srIMG0.select("sur_refl_b06");
var rred = srIMG0.select("sur_refl_b01");
var nnir1 = srIMG0.select("sur_refl_b02");
var bblue = srIMG0.select("sur_refl_b03");
var ggreen = srIMG0.select("sur_refl_b04");
var si = sswir1.add(rred).subtract(nnir1.add(bblue)).divide(sswir1.add(rred).add(nnir1.add(bblue)));
//计算干度指数分量裸土指数
var ibi = sswir1.multiply(2).divide(sswir1.add(nnir1)).subtract(nnir1.divide(nnir1.add(rred)).add(ggreen.divide(ggreen.add(sswir1)))).divide(sswir1.multiply(2).divide(sswir1.add(nnir1)).add(nnir1.divide(nnir1.add(rred)).add(ggreen.divide(ggreen.add(sswir1)))));
//计算干度指数分量城市建筑指数
var NDBSI = si.add(ibi).divide(2).rename('ndbsi');
var maxNDBSI = pie.Number(NDBSI.reduceRegion(pie.Reducer.max(), gd, 500).get('ndbsi')) //计算干度指数最大值
var aveNDBSI = pie.Number(NDBSI.reduceRegion(pie.Reducer.mean(), gd, 500).get('ndbsi')) //计算干度指数平均值
var minNDBSI = pie.Number(NDBSI.reduceRegion(pie.Reducer.min(), gd, 500).get('ndbsi')) //计算干度指数最小值
var noraveNDBSI = aveNDBSI.subtract(minNDBSI).divide(maxNDBSI.subtract(minNDBSI)) //通过最大最小值计算归一化干度指数平均值var ndbsiVis = {min: -0.3,max: 0.01,palette: ['040274', '040281', '0502a3', '0502b8', '0502ce', '0502e6','0602ff', '235cb1', '307ef3', '269db1', '30c8e2', '32d3ef','3be285', '3ff38f', '86e26f', '3ae237', 'b5e22e', 'd6e21f','fff705', 'ffd611', 'ffb613', 'ff8b13', 'ff6e08', 'ff500d','ff0000', 'de0101', 'c21301', 'a71001', '911003']
}Map.addLayer(NDBSI, ndbsiVis, "ndbsi") //干度指数可视化渲染var index = LST.addBands(NDVI).addBands(WET).addBands(NDBSI)var bar_options = {title: "广东省RSEI分量归一化平均值",legend: ["2020年12月"],yAxis: ["LST", "NDVI", "WET", "NDBSI"],xAxisName: "指数值",yAxisName: "指数",series: [[0.577, 0.729, 0.728, 0.321]],chartType: "bar",
};//调用绘制方法,输出图表显示在结果面板中
var chart = ui.Chart.array(bar_options);
chart.setStyle({ width: "380px" });
print(chart);Export.image({image: index,description: "index",assetId: "result",region: gd,scale: 500
});

PIE-Engine APP:广东省生态遥感指数研究相关推荐

  1. 广东省生态土壤所孙蔚旻团队FEMS: 砷锑污染土壤剖面的微生物世界

    广东省生态土壤所孙蔚旻团队FEMS: 砷锑污染土壤剖面的微生物世界 第一作者:徐锐 通讯作者:孙蔚旻 通讯单位:广东省生态环境与土壤研究所 论文DOI: https://doi.org/10.1093 ...

  2. 使用PIE engine免费快速下载全球12.5m的DEM影像

    下载高程数据,一共就四个个步骤: 1.注册PIE engine 2.加载范围文件; 3.加载高程数据文件; 4.导出DEM文件; 引言 在这之前,我先说明一下,为什么要使用PIE engine来下载D ...

  3. Google Earth Engine APP——在线计算Landsat 和 sentinel数据的23类植被指数的应用

    今天给大家介绍一款google earth engine app,VICAL: VEGETATION INDICES CALCULATOR 是一款可以在线计算Landsat 和 sentinel 系列 ...

  4. 气溶胶反演输入转化错误_余涛-气溶胶遥感反演研究20150714.ppt

    余涛-气溶胶遥感反演研究20150714 * * * * * * * * * * * * * * * * * * * * * * * * * * * 2 由于薄云与厚云的光谱特性有差异,故将云检测分为 ...

  5. QGIS基于多期哨兵2影像遥感指数阈值法提取冬小麦分布(1)-数据预处理

    本文演示使用QGIS基于NDVI遥感指数阈值法结合决策树提取冬小麦种植面积的过程,总体思路为:根据研究区域冬小麦生长周期特点,选择关键生长期多期遥感影像,计算NDVI指数,并根据NDVI提取关键地类, ...

  6. QGIS基于多期哨兵2影像遥感指数阈值法提取冬小麦分布(3)-NDVI阈值

    本文继续介绍使用QGIS基于多期哨兵2影像遥感指数阈值法提取冬小麦分布,本文为教程的第三部分:NDVI阈值选择和冬小麦种植面积提取.所使用的示范数据下载地址为: 链接: https://pan.bai ...

  7. 部分常见遥感指数(RSEI)原理与计算方法,以及效果比较

    目录 前言 指数使用前需知 遥感指数 植被指数 归一化植被指数NDVI 归一化差值山地植被指数NDMVI 增强型植被指数EVI 比值植被指数SR/植被指数RVI 差值植被指数DVI 调节土壤的植被指数 ...

  8. GEE系列:第6单元 在 Google 地球引擎中构建各种遥感指数

    GEE从入门到实战的10个系列单元: GEE系列:第1单元 Google地球引擎简介 GEE系列:第2单元 探索数据集 GEE系列:​第3单元 栅格遥感影像波段特征及渲染可视化 GEE系列:第4单元 ...

  9. Google Earth Engine APP ——制作上传GIF动图并添加全球矢量位置

    上一次我们降到了关于一个非常实用的在线GIF图的影像,上一篇的文章可以看这个 (1288条消息) Google Earth Engine APP-- 一个不用写代码可以直接下载相应区域的1984-20 ...

最新文章

  1. PP模块快速入门之功能简介(二)
  2. 给char*一个名份
  3. OpenCV实现幻灯片滑slides soble的实例(附完整代码)
  4. 【每日一题】8月12日题目精讲 Mr. Kitayuta, the Treasure Hunter
  5. PyTorch框架学习五——图像预处理transforms(一)
  6. jQuery中ajax请求的六种方法(三、五):$.getScript()方法
  7. sed for windows 双引号内部内容的替换
  8. 公安部身份证阅读器模块SAM通讯协议
  9. TortoiseGit功能介绍
  10. 385.迷你语法分析器
  11. moodle php代码解读_Moodle插件开发笔记
  12. 通用的流氓软件手动清理方法
  13. [C语言]——打印素数(质数)
  14. oracle c# 插入中文乱码,C#写入Oracle 中文乱码问题
  15. 【论文学习】《One-shot Voice Conversion by Separating Speaker and Content Representations with IN》
  16. var_threshold
  17. 王道408排序算法总结
  18. Jmeter 调用python3脚本
  19. LBS计算两坐标的距离
  20. html右侧下拉菜单怎么写,HTML中下拉菜单使用

热门文章

  1. Vue中的vm和VueComponent的实例对象
  2. 联想拯救者r7000p安装Linux双系统(二)
  3. VMware下安装centos6.7的步骤
  4. Python系列之Django(ORM)
  5. MT【299】对数型数列不等式
  6. android sqlite 分词,sqlite3自定义分词器
  7. 长方形与圆最近连线LISP_“认识长方形,正方形和圆”教学实录与评析
  8. UE4角色受击动画,随机播放音效
  9. 香河哪有学计算机编程,香河计算机程序设计员职业资格证书
  10. 咪蒙微信公众号已被注销 酷玩实验室因不实报道道歉