基于GEE使用Landsat 8和Landsat 5影像计算RSEI

该博客介绍了如何利用Google Earth Engine(GEE)处理Landsat 8和Landsat 5卫星影像,计算遥感生态指数RSEI。首先,对图像进行云遮罩处理,然后计算SI、IBI和湿度指数Wet,结合MODIS地表温度数据进行标准化和主成分分析。最后,通过PCA得到RSEI并导出结果。
摘要由CSDN通过智能技术生成

一、使用2018年landsat 8影像数据计算遥感生态指数RSEI

//could masking,GEE上有现有的去云函数
function maskL8sr(image) {
  // Bit 0 - Fill
  // Bit 1 - Dilated Cloud
  // Bit 2 - Cirrus
  // Bit 3 - Cloud
  // Bit 4 - Cloud Shadow
  var qaMask = image.select('QA_PIXEL').bitwiseAnd(parseInt('11111', 2)).eq(0);
  var saturationMask = image.select('QA_RADSAT').eq(0);

  // Apply the scaling factors to the appropriate bands.
  var opticalBands = image.select('SR_B.').multiply(0.0000275).add(-0.2);
  var thermalBands = image.select('ST_B.*').multiply(0.00341802).add(149.0);

  // Replace the original bands with the scaled ones and apply the masks.
  return image.addBands(opticalBands, null, true)
      .addBands(thermalBands, null, true)
      .updateMask(qaMask)
      .updateMask(saturationMask);
}

var dataset1 = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
    .filterDate('2018-x-x', '2018-x-x')
    .filterBounds(roi)
    .filter(ee.Filter.lte('CLOUD_COVER',5))
    .sort('CLOUD_COVER')
    .map(maskL8sr)
    //.mean()
print(dataset1)

var image1=dataset1.mosaic().clip(roi)
print(image1,'maskL8sr')
//Map.addLayer(image1,{bands:["SR_B4","SR_B3","SR_B2"],gamma:1.3,max:108,min:15},'Image1');
//Map.addLayer(roi,{color:'yellow',fillColor: "00000000", width: 1},'roi');

var jrc = jrcwater18.select('b1')
var image = image1.updateMask(jrc.eq(1))
//Map.addLayer(image,{bands:["SR_B4","SR_B3","SR_B2"],gamma:1.3,max:108,min:15},'Image');
print(image,'water and cloud')

//计算SI

function SI_cal(img) {
 var blue = img.select("SR_B2");
 var red = img.select("SR_B4");
 var nir = img.select("SR_B5");
 var swir1 = img.select("SR_B6");
 var swir2 = img.select("SR_B7");
 var SI_temp =((swir1.add(red)).subtract(blue.add(nir)))
              .divide((swir1.add(red)).add(blue.add(nir)))
 //print(SI_temp);
 return SI_temp;
}

//计算IBI
function IBI_cal(img) {
 var green = img.select("SR_B3");
 var red = img.select("SR_B4");
 var nir = img.select("SR_B5");
 var swir1 = img.select("SR_B6");
 var IBI_temp =(((swir1.multiply(2.0)).divide(swir1.add(nir)))
               .subtract((nir.divide(nir.add(red))).add(green.divide(green.add(swir1)))))
               .divide((((swir1.multiply(2.0)).divide(swir1.add(nir)))
               .add((nir.divide(nir.add(red))).add(green.divide(green.add(swir1))))))
 //print(IBI_temp);
 return IBI_temp;
}

//计算湿度指数Wet

function Wet_cal(img) {
 var blue = img.select("SR_B2");
 var green = img.select("SR_B3");
 var red = img.select("SR_B4");
 var nir = img.select("SR_B5");
 var swir1 = img.select("SR_B6");
 var swir2 = img.select("SR_B7");
 var wet_temp =blue.multiply(0.1511)
              .add(green.multiply(0.1973))
              .add(red.multiply(0.3283))
              .add(nir.multiply(0.3407))
              .add(swir1.multiply(-0.7117))
              .add(swir2.multiply(-0.4559))
 //print(wet_temp);
 return wet_temp;
}

//外部导入的NDVI重采样

  • 6
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
计算20年的RSEI,您需要获取Landsat影像数据,并使用Google Earth Engine(GEE)的代码编辑器来计算。以下是一些基本的步骤: 1. 打开GEE的代码编辑器(https://code.earthengine.google.com)。 2. 输入以下代码以加载Landsat 5、7和8的表面反射率数据: ```javascript var collection5 = ee.ImageCollection('LANDSAT/LT05/C01/T1_SR'); var collection7 = ee.ImageCollection('LANDSAT/LE07/C01/T1_SR'); var collection8 = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR'); ``` 3. 使用以下代码筛选出您需要的影像: ```javascript var start_date = '1999-01-01'; var end_date = '2019-12-31'; var filteredCollection5 = collection5 .filterDate(start_date, end_date); var filteredCollection7 = collection7 .filterDate(start_date, end_date); var filteredCollection8 = collection8 .filterDate(start_date, end_date); ``` 4. 定义RSEI计算所需的参数: ```javascript var bands = ['B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7']; var solar_zenith = 'SOLAR_ZENITH_ANGLE'; var solar_azimuth = 'SOLAR_AZIMUTH_ANGLE'; var sat_zenith = 'SENSOR_ZENITH_ANGLE'; var sat_azimuth = 'SENSOR_AZIMUTH_ANGLE'; var cloud_mask = 'pixel_qa'; ``` 5. 加载RSEI计算所需的函数: ```javascript var RSEI = require('users/dmlmonteiro/RSEI:RSEI_Functions'); ``` 6. 使用以下代码计算每个影像RSEI: ```javascript var rseiCollection5 = filteredCollection5.map(function(image){ var rsei = RSEI.RSEI_From_Image(image, bands, solar_zenith, solar_azimuth, sat_zenith, sat_azimuth, cloud_mask); return image.addBands(rsei); }); var rseiCollection7 = filteredCollection7.map(function(image){ var rsei = RSEI.RSEI_From_Image(image, bands, solar_zenith, solar_azimuth, sat_zenith, sat_azimuth, cloud_mask); return image.addBands(rsei); }); var rseiCollection8 = filteredCollection8.map(function(image){ var rsei = RSEI.RSEI_From_Image(image, bands, solar_zenith, solar_azimuth, sat_zenith, sat_azimuth, cloud_mask); return image.addBands(rsei); }); ``` 7. 将计算出的RSEI导出为GeoTIFF格式的文件: ```javascript Export.image.toDrive({ image: rseiCollection5.select('RSEI').toBands(), description: 'rsei_landsat5', scale: 30, maxPixels: 1e13, region: region, folder: 'RSEI' }); Export.image.toDrive({ image: rseiCollection7.select('RSEI').toBands(), description: 'rsei_landsat7', scale: 30, maxPixels: 1e13, region: region, folder: 'RSEI' }); Export.image.toDrive({ image: rseiCollection8.select('RSEI').toBands(), description: 'rsei_landsat8', scale: 30, maxPixels: 1e13, region: region, folder: 'RSEI' }); ``` 其中,“region”是您需要处理的区域,也可以使用GEE的绘图工具来指定。此外,您还可以更改输出文件的格式和位置。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值