1.首先进行“去云”函数的准备

//landsat5、7 EVI指数计算
// SR数据去云
function rmCloud(image) {  var cloudShadowBitMask = (1 << 3);  var cloudsBitMask = (1 << 5);  var qa = image.select("pixel_qa");  var mask = qa.bitwiseAnd(cloudShadowBitMask).eq(0)  .and(qa.bitwiseAnd(cloudsBitMask).eq(0));  return image.updateMask(mask);
} 

以上这一步都是最简单的操作,对于处理landsat-sr系列数据都基本用到。

2.数据的选择

//这是我自己的行政矢量边界,这回用的是山西省界var hh= ee.FeatureCollection("users/bqt2000204051/shanxijie");//这部分代码是进行数据的选择和EVI指数的遍历计算,我进行的是年统计var image= ee.ImageCollection("LANDSAT/LT05/C01/T1_SR").filterBounds(hh).filterDate("1986-1-1","1987-1-1").map(rmCloud).map(function(image) {var evi = image.expression(  '2.5 * ((NIR - RED) / (NIR + 6 * RED - 7.5 * BLUE + 1))', {  'NIR': image.select('B4'),  'RED': image.select('B3'),  'BLUE': image.select('B1')
});
return image.addBands(evi.rename('EVI')).clip(hh);
})
;
print("image",image);
Map.centerObject(hh, 3);//在这里进行自己影像的选择,这里选择第一张影像,另外,裁剪自己的边界。
var scol_clip1 =image.first().clip(hh);//其他指数可以参照一下函数
//NDVI
function NDVI(image) {  return image.addBands(  image.normalizedDifference(["B5", "B4"])  .rename("NDVI"));
}  //NDWI
function NDWI(image) {  return image.addBands(  image.normalizedDifference(["B3", "B5"])  .rename("NDWI"));
}  //NDBI
function NDBI(image) {  return image.addBands(  image.normalizedDifference(["B6", "B5"])  .rename("NDBI"));
}  

以上部分各指数的计算过程我就不一一解释了,因为指数就是波段运算的结果,自己进行公式表达就行了。

3.数据的归一化处理函数

function normalization(image,region,scale){
var mean_std = image.reduceRegion({reducer: ee.Reducer.mean().combine(ee.Reducer.stdDev(),null, true),geometry: region,scale: scale,maxPixels: 10e9,// tileScale: 16
});
// use unit scale to normalize the pixel values
var unitScale = ee.ImageCollection.fromImages(image.bandNames().map(function(name){name = ee.String(name);var band = image.select(name);var mean=ee.Number(mean_std.get(name.cat('_mean')));var std=ee.Number(mean_std.get(name.cat('_stdDev')));var max=mean.add(std.multiply(3));var min=mean.subtract(std.multiply(3));var band1=ee.Image(min).multiply(band.lt(min)).add(ee.Image(max).multiply(band.gt(max))).add(band.multiply(ee.Image(1).subtract(band.lt(min)).subtract(band.gt(max))));var result_band=band1.subtract(min).divide(max.subtract(min));return result_band;
})).toBands().rename(image.bandNames());return unitScale;
}

这一段代码来自Pyrs大神:(2条消息) Google Earth Engine笔记-影像归一化与异常值去除_Pyrs的博客-CSDN博客主要思路是通过计算均值、标准差和在3倍标准差之内的误差来剔除异常值。

3.数据的归一化处理函数

//归一化前的结果
var before_chart=ui.Chart.image.histogram(scol_clip.select(["B4","EVI"]), hh, 1000);
print(before_chart);
//让影像进行归一化函数处理后的结果
var normal_image=normalization(scol_clip,hh,1000)
print(normal_image)
//归一化后的结果
var after_chart=ui.Chart.image.histogram(normal_image.select(["B4","EVI"]), hh, 1000)
print(after_chart)

这里有一点问题,在于=ui.Chart.image.histogram()中1000代表的是像素值:

scale (Number, optional):

The pixel scale used when applying the histogram reducer, in meters.

当你的运行范围超出了最大计算量的时候,选择把自己的像素值调大,可以解决这个问题!

以上是归一化前的统计量,为了和EVI波段明显对比,我使用了一个B4波段作为参照!

这是归一化后的统计量分布图!

4.数据的下载和导出

Export.image.toDrive({image:normal_image.select("EVI"),description: '1986_shanxi_EVI_sr',folder: 'hulunbeier',scale: 1000,region:hh
});Map.addLayer(image, {},'EVI');

利用GEE(Google Earth Engine)在线处理NDVI、EVI、SAVI、NDMI等指数归一化教程!相关推荐

  1. GEE(Google Earth Engine) 最基础代码学习笔记二 —— JavaScript 语言

    GEE(Google Earth Engine) 学习笔记二 Javascript 语言 1. 注释 print('Hello World!'); 如果要注释,则在代码前面加//,比如: // pri ...

  2. GEE(Google earth engine)中的Landsat影像的选择和去云(附代码)

    1.获取校正过的Landsat 影像 在这里可以看到GEE提供的全部Landsat数据:Landsat Collections in Earth Engine  |  Earth Engine Dat ...

  3. GEE (Google Earth Engine)高阶学习一 影像分割

    影像分割就是把影像分成若干个特定.具有独特性质区域的技术和过程,是面向对象分类的重要基础. 下面介绍几种GEE中自带的影像分割的算法.具体的算法原理,在这里不多介绍,主要还是展示算法的应用. 使用例子 ...

  4. GEE Google Earth Engine 上传矢量shp数据报错

    在GEE上传以下矢量文件: 但是出错了 : Asset name: projects/earthengine-legacy/assets/users/........../Province_CJLY ...

  5. GEE(Google Earth Engine)学习——常用筛选器Filter操作

    目录 一.筛选器Filter (1)关系比较型筛选器 (2)差值筛选器 (3)字符筛选器 (4)详细时间筛选 (5)筛选器叠加筛选 二.Join配合Filter进行两数据集联合筛选 (1)仅保留左侧数 ...

  6. Google Earth Engine (GEE) ——Google Earth Engine 和modi的关系

    如引言中所述,雪盖的全球尺度映射有几个要求.由于积雪可能是一种短暂的土地覆盖状态,因此需要较高的时间分辨率来捕捉积雪的变化.此外,空间分辨率越高越好: 与具有 20 km 2像素的雪盖地图相比,30 ...

  7. Google Earth Engine(GEE)——关于NDVI_NDWI_NDBI指数波段运算公式函数的集成和优化(1)

    之前写过一篇文章是关于各种指数进行计算的文章,链接如下: (230条消息) 利用GEE(Google Earth Engine)在线处理NDVI.EVI.SAVI.NDMI等指数归一化教程!_此星光明 ...

  8. Google Earth Engine(GEE)计算NDVI、EVI、NDBI等指数并相关性分析

    Google Earth Engine(GEE)计算NDVI.EVI.NDBI等指数并相关性分析 NDVI为归一化植被指数.EVI为增强植被指数,据GEE官方介绍NDTI为归一化热差指数,用于区分城市 ...

  9. Google Earth Engine(GEE)——Landsat 8TI/TOA/SR影像对比分析区别和去云即NDVI计算

    1简介 2背景 3在 Google Earth Engine 中使用 Landsat 8 进行预处理 3.1预处理级别示例. 3.2大气顶(TOA) 3.3表面反射率(SR) 3.4 Landsat ...

最新文章

  1. 基于小波变换实现图像增强
  2. CSS How to align a div center
  3. mysql创建表的时候,字段尽量不要为NULL
  4. C++ Primer 5th笔记(chap 16 模板和泛型编程)模板类型别名
  5. 將軍苑 - 收藏集 - 掘金
  6. PHP,Mysql-根据一个给定经纬度的点,进行附近地点查询–合理利用算法,效率提高2125倍...
  7. 一篇文章带你熟悉 TCP/IP 协议(网络协议篇二)
  8. 加载的图片还会有未来吗?
  9. python01_Python编码环境安装与基本语法
  10. python中breakpoint什么意思_it/breakpoint是什么意思
  11. protocol buffer安装及使用(非常详细)
  12. secureCRT 下载使用
  13. 如何在MapGIS中打开卫星影像
  14. 计算机图形学---简单光照明模型知识汇总
  15. oracle 字符串中数字转中文大写,金额钱数转中文大写
  16. mysql rds 定时执行_如何使用脚本自动备份阿里云rds数据库
  17. git命令出现fatal: Unable to create 'xxx/.git/index:File exists.问题
  18. oracle维护服务 oracle解决方案 oracle售后服务
  19. 何海涛算法面试题感悟之五:查找最…
  20. 人工神经网络研究综述,人工神经网络分析方法

热门文章

  1. 用影片《记忆碎片》解释Java注解的工作原理
  2. cpu锁频(cpu锁频软件)
  3. iOS App崩溃日志分析
  4. linux键盘鼠标不能使用的办法
  5. HTML、CSS——制作手机充电特效
  6. DEFCON CHINABCTF的一些随笔
  7. 删除stale状态远端分支
  8. powershell脚本设置电脑分辨率
  9. 数字通信理论在空时编码估计中的应用
  10. 门禁服务器故障怎样修复,门禁系统出故障的几种解决方法