问题:
有粉丝问到,如何进行建筑物的提取,其实这里有两个方法,一个是有一个数据集可以直接获取建筑物的轮廓,具体内容可以看我之前的文章:
(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 });