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

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

NDVI为归一化植被指数、EVI为增强植被指数,据GEE官方介绍NDTI为归一化热差指数,用于区分城市地区的人行道和屋顶、NDBI为归一化建筑物指数

用来分析城市建成区。今天来分享如何在GEE中利用landsat影像计算上述指数,并进行相关性分析。相关性分析用Pearson相关系数表示

//首先,选择研究区,以山西省为研究区

var roi = ee.FeatureCollection("users/lilei655123/shanxi");

//去云函数

function rmL8Cloud(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)

.copyProperties(image)

.copyProperties(image, ["system:time_start",'system:time_end']);

}

var star_date = '2020-07-01'//定义起始时间

var end_date = '2020-09-30'//定义终止时间

var L8_ = ee.ImageCollection("LANDSAT/LC08/C01/T1_SR").filterBounds(roi)

.filterDate(star_date, end_date)

//.filter(ee.Filter.lt('CLOUD_COVER',10))//云量设//按云量排序//云量过滤

.map(rmL8Cloud)

.median()

.clip(roi)



print(L8_)



// 加载影像

Map.addLayer(L8_,{min:0.0,max:0.4, bands:'B5,B4,B3'},'Image');

Map.centerObject(roi)

var img = L8_.select(['B2','B3', 'B4', 'B5','B6', 'B7'])

//计算NDVI

var ndvi = img.expression(

'((NIR - RED) / (NIR + RED))', {

'NIR': img.select('B5'),

'RED': img.select('B4')

}).rename('NDVI');

//计算NDTI

var ndti = img.expression(

'((SWIR1-SWIR2)/(SWIR1 + SWIR2))',{

'SWIR1': img.select('B6'),

'SWIR2': img.select('B7')

}).rename('NDTI');

//计算EVI

var evi = img.expression(

'2.5 * ((NIR - RED) / (NIR + 6 * RED - 7.5 * BLUE + 1))', {

'NIR': img.select('B5'),

'RED': img.select('B4'),

'BLUE': img.select('B2')

}).rename('EVI');

//计算NDBI

var ndbi = img.expression(

'(MIR - NIR)/(MIR + NIR)', {

'NIR': img.select('B5'),

'MIR': img.select('B6')

}).rename('NDBI');

//计算MNDWI

var mndwi = img.expression(

'(GREEN - MIR) / (GREEN + MIR)', {

'GREEN': img.select('B3'),

'MIR': img.select('B6')

}).rename('MNDWI')



//pearsonsCorrelation计算相关性系数

img = img.addBands(ndvi.rename('ndvi'))

img = img.addBands(ndti.rename('ndti'))

img = img.addBands(ndbi.rename('ndbi'))

img = img.addBands(evi.rename('evi'))

img = img.addBands(mndwi.rename('mndwi'))

var corra =img.select(["ndvi","ndti"])

// Here, sample the stack:

var sample = corra.sample({'region':roi,

'scale': 30,

'projection': 'EPSG:4326',

'numPixels':100})

// Call reducer correctly:

var correl = ee.Reducer.pearsonsCorrelation();

// Then choose two properties to see the correlation:

var reduced = sample.reduceColumns(correl, ['ndvi', 'ndti'])

print(reduced)

Map.addLayer(ndvi, {'min':0,'max':1,'palette':['#A9A9A9','00FF00']}, 'NDVI')

//导出函数

Export.image.toDrive({

image: ndvi,//

description: 'ndvi2020',//

scale: 30,//

region:roi,//

maxPixels:1e13,

fileFormat: 'GeoTIFF',

});

计算结果如下:
相关性分析结果:
在这里插入图片描述
更多内容请关注公众号:
在这里插入图片描述

  • 4
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
以下是使用Google Earth Engine获取逐日NDVI的代码示例: ```javascript // 设置ROI var roi = ee.Geometry.Rectangle([xmin, ymin, xmax, ymax]); // 设置起始和结束日期 var startDate = ee.Date('2019-01-01'); var endDate = ee.Date('2019-12-31'); // 加载MODIS数据 var modis = ee.ImageCollection('MODIS/006/MOD13A1') .filterBounds(roi) .filterDate(startDate, endDate) .select('NDVI'); // 定义函数计算每个图像的年份和日数 var addDate = function(image) { var doy = image.date().getRelative('day', 'year'); return image.addBands(doy).addBands(image.date().get('year')); }; // 对图像集应用函数 var modisWithDate = modis.map(addDate); // 定义函数计算每个年份和日数的平均NDVI值 var reduceDaily = function(imageCollection, year, doy) { var filtered = imageCollection.filter(ee.Filter.calendarRange(year, year, 'year')) .filter(ee.Filter.calendarRange(doy, doy, 'day_of_year')); return filtered.mean().set('year', year).set('doy', doy); }; // 创建一个二维数组,其中第一维表示年份,第二维表示一年中的日数 var years = ee.List.sequence(startDate.get('year'), endDate.get('year')); var days = ee.List.sequence(1, 365); // 对所有年份和日数应用reduceDaily函数 var dailyNDVI = ee.ImageCollection.fromImages(years.map(function(y){ return days.map(function(d){ return reduceDaily(modisWithDate, y, d); }); }).flatten()); // 打印输出结果 print(dailyNDVI); ``` 在上述代码中,首先定义了一个感兴趣区域(ROI),然后加载了2000年至今的MODIS NDVI数据,并对其进行了筛选。接着定义了两个函数,一个函数用于向每个图像添加年份和日数作为带宽,另一个函数用于计算每个年份和日数的平均NDVI值。最后,将所有年份和日数应用到reduceDaily函数中,生成逐日的NDVI值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

生态遥感监测笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值