Google Earth Engine(地物分类统计)

2022-04-29 08:42:18 浏览数 (3)

Google Earth Engine(地物分类统计)

本期我们就讲一下利用GEE对遥感影像进行分类后,如何对地物类型进行统计。

本次我们还是采用MODIS官方的地物分类产品(MCD12Q1.006),空间分辨率为500m,时间分辨率为一年。这个MODIS产品中含有多个地物分类的产品。

我们选用其中一种产品,波段为LC_Type1,GEE对它的描述为:Annual International Geosphere-Biosphere Programme (IGBP) classification。

首先我们看一下这种分类产品

LC_Type1可视化

这种地物分类总共把地物分成17类,分别用从1到17的数字表示,例如波段中17就表示水体。

代码:

代码语言:javascript复制
var beijing = ee.FeatureCollection("users/boyxiaozheng/feature/beijing");
//选取2017年的地物分类产品
var img = ee.ImageCollection('MODIS/006/MCD12Q1')
                            .filterDate('2017-01-01','2017-12-31')
                            .first();
//选择LC_Type1产品
var igbpLandCover = img.select('LC_Type1');

var igbpLandCoverVis = {
  min: 1.0,
  max: 17.0,
  palette: [
    '05450a', '086a10', '54a708', '78d203', '009900', 'c6b044', 'dcd159',
    'dade48', 'fbff13', 'b6ff05', '27ff87', 'c24f44', 'a5a5a5', 'ff6d4c',
    '69fff8', 'f9ffa4', '1c0dff'
  ],
};
Map.centerObject(beijing, 6);
Map.addLayer(igbpLandCover, igbpLandCoverVis, 'IGBP Land Cover');

地物面积统计

我们已经看到这种地物分类的样子,下面我们就对地物进行统计。我们下面以北京地区为例,统计北京地区水体的面积。

大致的思路就是把非水体进行mask,然后对返回的图像(只含水体)利用reduce进行统计。我们对水体的像元个数进行统计,然后已知每个像元的面积,就可以算出水体的面积。

代码:

代码语言:javascript复制
var beijing = ee.FeatureCollection("users/boyxiaozheng/feature/beijing");
//建立一个函数,函数可以把image中不等于my_value的数值都mask掉
var mask=function(image,my_type){
  var mask=image.eq(my_type);
  var masked_image=image.updateMask(mask);
  return masked_image;
}
//选择2017年地物分类产品
var dataset = ee.ImageCollection('MODIS/006/MCD12Q1')
                                .filterDate('2017-01-01','2017-12-31');
var igbpLandCover = dataset.first().select('LC_Type1');
//调用上面写的函数,把不等于17(表示水体)的数值都mask掉
var image_17=mask(igbpLandCover,17)
//统计水体的像元个数
var countDictionary = image_17.reduceRegion({
  reducer: ee.Reducer.count(),
  geometry: beijing.geometry(),
  scale: 30,
  maxPixels: 1e9
});
//把统计结果打印出来
print(countDictionary);

var visparam = {
  min: 17.0,
  max: 17.0,
  palette: ['1c0dff']
};
Map.centerObject(beijing,10);
//显示北京矢量
Map.addLayer(beijing);
//显示北京的水体
Map.addLayer(image_17.clip(beijing), visparam);

本次我们讲了利用GEE对地物类型进行统计。大家有什么想实现的功能呢?可以随时留言交流。

0 人点赞