前言

博主不主修遥感方向,不是专业人士,由于毕设需要使用GEE,故临时学习并做了记录,由于是博主自己钻研的,不知道有无其他更便捷的方式。若文中有错误欢迎指正。

在做毕设的时候是对武汉市所有湖泊进行分别的某项数据分析,初期的目标是对东湖进行这项分析,所以第一步就是需要把东湖提取出来。
在这里需要注意的是,由于温度等各种因素的变化,湖泊范围并不是固定的,因此我在提取东湖时是根据影像提取的实时湖泊范围。

数据

卫星影像:Landsat 8 OLI、Sentinel 2 MSI的SR(地表反射率)影像

Landsat 8

其中Landsat 8的Level-1的数据是经过几何校正和辐射定标处理过的,Level-2的数据是在Level-1级别数据的基础上经过大气校正处理得到的;Collection 1包含了自 1972 年至今从 Landsat 1-8 获取的所有 Level-1 数据。Collection 2中同时包含了Landsat 1-8 的Level-1 数据(1972年至今)和Landsat 4-8 的Level-2数据(1982年至今);T1存放的是L1TP(Level-1 Precision and Terrain)处理等级的数据,T2存放的是不满足T1标准(主要指几何校正精度)的数据,RT是实时数据,目前在役的 Landsat 7 ETM+ 和 Landsat 8 OLI/TIRS 数据,获取但尚未处理的临时数据存放在RT中。数据处理之后就会放到T1或T2中,并从RT中删除。(来源:https://zhuanlan.zhihu.com/p/400543396)

在此我采用的是Landsat 8 Level 2, Collection 2, Tier 1影像

在GEE官网中给出的引用案例如下:
https://developers.google.com/earth-engine/datasets/catalog/COPERNICUS_S2_SR_HARMONIZED

// 引用并筛选2021-05-01至2021-06-01之间的影像
var dataset = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2')
    .filterDate('2021-05-01', '2021-06-01');
    
// 为了减少存储设置了比例因子,在正常使用时,需要进行还原
// Applies scaling factors.
function applyScaleFactors(image) {
  var opticalBands = image.select('SR_B.').multiply(0.0000275).add(-0.2);
  var thermalBands = image.select('ST_B.*').multiply(0.00341802).add(149.0);
  return image.addBands(opticalBands, null, true)
              .addBands(thermalBands, null, true);
}

dataset = dataset.map(applyScaleFactors);

var visualization = {
  bands: ['SR_B4', 'SR_B3', 'SR_B2'],
  min: 0.0,
  max: 0.3,
};

Map.setCenter(-114.2579, 38.9275, 8);

Map.addLayer(dataset, visualization, 'True Color (432)');

运行结果如下(在此我进行了一定的缩放)
在这里插入图片描述

Sentinel 2

与Landsat 8相同理由,我选用的是Harmonized Sentinel-2 MSI: MultiSpectral Instrument, Level-2A影像
(由于哨兵2号对数据进行了调整,会影响2022.1.24之后的数据协调时间序列,所以将COPERNICUS/S2or COPERNICUS/S2_SR切换成了COPERNICUS/S2_HARMONIZEDand COPERNICUS/S2_SR_HARMONIZED)

官网给出的引用案例如下:
https://developers.google.com/earth-engine/datasets/catalog/COPERNICUS_S2_SR_HARMONIZED

function maskS2clouds(image) {
  var qa = image.select('QA60');

  // Bits 10 and 11 are clouds and cirrus, respectively.
  var cloudBitMask = 1 << 10;
  var cirrusBitMask = 1 << 11;

  // Both flags should be set to zero, indicating clear conditions.
  var mask = qa.bitwiseAnd(cloudBitMask).eq(0)
      .and(qa.bitwiseAnd(cirrusBitMask).eq(0));

  return image.updateMask(mask).divide(10000);
}

var dataset = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED')
                  .filterDate('2020-01-01', '2020-01-30')
                  // Pre-filter to get less cloudy granules.
                  .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE',20))
                  .map(maskS2clouds);

var visualization = {
  min: 0.0,
  max: 0.3,
  bands: ['B4', 'B3', 'B2'],
};

Map.setCenter(83.277, 17.7009, 12);

Map.addLayer(dataset.mean(), visualization, 'RGB');

在这里插入图片描述

时间

2022年1月

范围

武汉东湖

由于我们没有实时的东湖范围的table,所以我们先根据GEE提供的卫星图像绘制东湖的大致范围(一定要是根据卫星图像绘制的,根据地图绘位置偏差比较大),保存为FeatureCollection后,再通过NDWI进行掩膜提取

绘制范围如下:
在这里插入图片描述

提取水体

经过影像裁剪后(这里不赘述详细过程),利用NDWI或者MNDWI来增强水体信息,弱化其他地物的信息,便于提取研究区的水体范围

NDWI = (Green - NIR)/(Green + NIR )

MNDWI = (Green - SWIR1) / (Green + SWIR1)

本文使用NDWI来提取

计算NDWI

Landsat 8 SR的Green波段为SR_B3,NIR波段为SR_B5,使用GEE提供的归一化指数的函数(normalizedDifference)来进行计算即可:

var ndwi = Donghu_Jan.normalizedDifference(['SR_B3','SR_B5']).float().rename('NDWI'); 
var visParams1 = {min: 0, max: 1, palette: ['0000FF', 'FF0000']};
Map.addLayer(ndwi, visParams1, "Donghu_Jan_NDWI");

效果如图:
Landsat 8 SR NDWI
Sentinel 2 SR的Green波段为B3,NIR波段为B8

var ndwi = Donghu_Jan.normalizedDifference(['B3','B8']).float().rename('NDWI'); 
var visParams1 = {min: 0, max: 1, palette: ['0000FF', 'FF0000']};
Map.addLayer(ndwi, visParams1, "Donghu_Jan_NDWI");

效果如图:
Sentinel 2 SR NDWI

获取掩膜

将算出的ndwi添加到影响波段,经过updateMask,选取 ndwi>0 的即可

var Donghu_Jan = Donghu_Jan.addBands(ndwi);
var Donghu_Mask = Donghu_Jan.updateMask(ndwi.gt(0));
Map.addLayer(Donghu_Mask,vis_L8SR,'Water');

在这里插入图片描述

源代码:
Landsat 8
https://code.earthengine.google.com/9256bc33273fd6af23abd0d2235471eb

Sentinel 2
https://code.earthengine.google.com/f40367fa90e69af23264a73ff3b1ef23

P.S.
1.实际实现两种卫星大同小异
2.源代码网址可能会在之后删掉

Logo

为武汉地区的开发者提供学习、交流和合作的平台。社区聚集了众多技术爱好者和专业人士,涵盖了多个领域,包括人工智能、大数据、云计算、区块链等。社区定期举办技术分享、培训和活动,为开发者提供更多的学习和交流机会。

更多推荐