Google Earth Engine(GEE)——利用归一化建筑指数NDBI(不透水层)提取建筑物

问题:

有粉丝问到,如何进行建筑物的提取,其实这里有两个方法,一个是有一个数据集可以直接获取建筑物的轮廓,具体内容可以看我之前的文章:

(2条消息) Google Earth Engine ——高分辨率 50 厘米卫星图像的建筑物轮廓数据集_此星光明的博客-CSDN博客

 

归一化建筑指数:

NDBI是查勇等在杨山提出的仿归一化植被指数基础上提出的, 它可以较为准确地反映建筑用地信息, 数值越大表明建筑用地比例越高, 建筑密度越高。计算公式如下: 

 式中,RNIR、RMIR分别为图像的近红外、中红外的反射辐射值,对应OLI数据的5波段、6波段。

NDBI图像颜色越深,代表值越大,表明建筑用地比例越高,建筑密度越高,通过目视解译,不断调整NDBI阈值,直到找到合适的阈值,提取建设用地,调整阈值后获得不透水面分布 。

 这里是GEE中oli的数据

 代码:

//加载矢量数据
var hh= ee.FeatureCollection("users/bqt2000204051/huanghe_shp");

//Landsat5/7/8 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);  
} 


//进行归一化指数计算
function ndv_LANDSAT_8(image) {
              var ndbi = image.normalizedDifference(['B6', 'B5']);
  return image.addBands(ndbi.rename('NDBI'));
}


//视觉参数:
var visParam = {
 min: -0.1,
 max: 0.9,
 palette: 'FFFFFF, CE7E45, DF923D, F1B555, FCD163, 99B718, 74A901, 66A000, 529400,' +
   '3E8601, 207401, 056201, 004C00, 023B01, 012E01, 011D01, 011301'
};

//加载影像//这里可以加载Landsat、sentinel等影像,根据自己的需求自己去探寻
  var l8Col= ee.ImageCollection("LANDSAT/LC08/C01/T1_SR")
          .filterBounds(hh)
          .filterDate("2015-1-1", "2016-1-1")  
          .map(rmCloud).map(ndv_LANDSAT_8);

  var scol_clip =l8Col.qualityMosaic('NDBI').clip(hh);
print("scol_clip",scol_clip);

Map.addLayer(scol_clip.select("NDBI"), visParam,'NDBI');
//下载影像
Export.image.toDrive({
  image: scol_clip,
  description: '2011_sr',
  folder: 'training02',
  scale: 1000,
  region:hh
});

 

猜你喜欢

转载自blog.csdn.net/qq_31988139/article/details/122204192
今日推荐