利用GEE(Google Earth Engine)在线处理NDVI、EVI、SAVI、NDMI等指数归一化教程!
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等指数归一化教程!相关推荐
- GEE(Google Earth Engine) 最基础代码学习笔记二 —— JavaScript 语言
GEE(Google Earth Engine) 学习笔记二 Javascript 语言 1. 注释 print('Hello World!'); 如果要注释,则在代码前面加//,比如: // pri ...
- GEE(Google earth engine)中的Landsat影像的选择和去云(附代码)
1.获取校正过的Landsat 影像 在这里可以看到GEE提供的全部Landsat数据:Landsat Collections in Earth Engine | Earth Engine Dat ...
- GEE (Google Earth Engine)高阶学习一 影像分割
影像分割就是把影像分成若干个特定.具有独特性质区域的技术和过程,是面向对象分类的重要基础. 下面介绍几种GEE中自带的影像分割的算法.具体的算法原理,在这里不多介绍,主要还是展示算法的应用. 使用例子 ...
- GEE Google Earth Engine 上传矢量shp数据报错
在GEE上传以下矢量文件: 但是出错了 : Asset name: projects/earthengine-legacy/assets/users/........../Province_CJLY ...
- GEE(Google Earth Engine)学习——常用筛选器Filter操作
目录 一.筛选器Filter (1)关系比较型筛选器 (2)差值筛选器 (3)字符筛选器 (4)详细时间筛选 (5)筛选器叠加筛选 二.Join配合Filter进行两数据集联合筛选 (1)仅保留左侧数 ...
- Google Earth Engine (GEE) ——Google Earth Engine 和modi的关系
如引言中所述,雪盖的全球尺度映射有几个要求.由于积雪可能是一种短暂的土地覆盖状态,因此需要较高的时间分辨率来捕捉积雪的变化.此外,空间分辨率越高越好: 与具有 20 km 2像素的雪盖地图相比,30 ...
- Google Earth Engine(GEE)——关于NDVI_NDWI_NDBI指数波段运算公式函数的集成和优化(1)
之前写过一篇文章是关于各种指数进行计算的文章,链接如下: (230条消息) 利用GEE(Google Earth Engine)在线处理NDVI.EVI.SAVI.NDMI等指数归一化教程!_此星光明 ...
- Google Earth Engine(GEE)计算NDVI、EVI、NDBI等指数并相关性分析
Google Earth Engine(GEE)计算NDVI.EVI.NDBI等指数并相关性分析 NDVI为归一化植被指数.EVI为增强植被指数,据GEE官方介绍NDTI为归一化热差指数,用于区分城市 ...
- 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 ...
最新文章
- 基于小波变换实现图像增强
- CSS How to align a div center
- mysql创建表的时候,字段尽量不要为NULL
- C++ Primer 5th笔记(chap 16 模板和泛型编程)模板类型别名
- 將軍苑 - 收藏集 - 掘金
- PHP,Mysql-根据一个给定经纬度的点,进行附近地点查询–合理利用算法,效率提高2125倍...
- 一篇文章带你熟悉 TCP/IP 协议(网络协议篇二)
- 加载的图片还会有未来吗?
- python01_Python编码环境安装与基本语法
- python中breakpoint什么意思_it/breakpoint是什么意思
- protocol buffer安装及使用(非常详细)
- secureCRT 下载使用
- 如何在MapGIS中打开卫星影像
- 计算机图形学---简单光照明模型知识汇总
- oracle 字符串中数字转中文大写,金额钱数转中文大写
- mysql rds 定时执行_如何使用脚本自动备份阿里云rds数据库
- git命令出现fatal: Unable to create 'xxx/.git/index:File exists.问题
- oracle维护服务 oracle解决方案 oracle售后服务
- 何海涛算法面试题感悟之五:查找最…
- 人工神经网络研究综述,人工神经网络分析方法