GEE:基于GEE的单个湖泊的实时水体提取(以武汉东湖为例) |
您所在的位置:网站首页 › ndwi归一化水体指数公式 › GEE:基于GEE的单个湖泊的实时水体提取(以武汉东湖为例) |
前言
博主不主修遥感方向,不是专业人士,由于毕设需要使用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)');运行结果如下(在此我进行了一定的缩放) 与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 min: 0, max: 1, palette: ['0000FF', 'FF0000']}; Map.addLayer(ndwi, visParams1, "Donghu_Jan_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.源代码网址可能会在之后删掉 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |