本文我们采用欧空局的ESA数据为例,以成都市为研究范例(全球尺度只需要按行政或者区块进行分区处理即可),提取细碎化耕地。首先,我们根据ESA的数据,提取耕地的分布情况,代码如下:
// 过滤感兴趣区域(ROI),选择城市为成都的数据
var roi = table.filter(ee.Filter.eq('city', 'chengdu'));
// 加载数据集,并筛选出目标类别为40的区域,裁剪到ROI
var dataset = ESA.first().eq(40).clip(roi);
Map.addLayer(dataset, {palette: ['#d68121', '#42d60c']}, 'Landcover', false);
显示结果如下(蓝色为耕地,橙色为非耕地):
接下来,我们只需要利用GEE的connectedPixelCount函数,就可以实现对于细碎化耕地的提取,connectedPixelCount函数的解析如下:
函数简介
connectedPixelCount
是 Google Earth Engine(GEE)中用于计算每个像素所在连通区域中像素数量的函数。它通过分析图像中每个像素与其相邻像素的连通性,返回一个单波段图像,其中每个像素的值是其所在连通区域的像素总数。
参数说明
返回值
这里,我们假设小于30个像元的耕地为细碎化耕地,利用
connectedPixelCount函数
代码如下:
var connectedSize = dataset.connectedPixelCount(30, true);
var filteredClassified = dataset.updateMask(connectedSize.lt(30));
Map.addLayer(roi)
Map.addLayer(filteredClassified, {palette: ['#d68121', '#d63000']}, 'Filtered Classified Image');
显示结果如下(
红色为提取后的细碎化耕地,绿色为非细碎化耕地,橙色为非耕地,放大后呈现细节
):