1、ee.Reducer.count() 获取非Nodata值的个数,以计算指定区域内的非Nodata像素的数量
2、ee.Reducer.toList() 用于将像素值列表归并到一个列表中的 reducer,会主动排除Nodata
- 下面是对ee.Reducer.count() 和ee.Reducer.toList() 测试的例子
// 选取一个影像
var image = ee.Image('LANDSAT/LC08/C01/T1_TOA/LC08_044034_20140318');
// 选择一个波段
var band = image.select('B4');
// 定义一个几何范围
var geometry = ee.Geometry.Rectangle(-122.35, 37.6, -121.8, 37.9);
var ROI_collection = band.clip(geometry);
print(ROI_collection)
// 聚合像素值到一个列表中
var pixelValuesList = ROI_collection.reduceRegion({
reducer: ee.Reducer.toList(),
geometry: ROI_collection.geometry(), // 使用裁剪后的几何范围
scale: 30
});
// 打印结果
print(pixelValuesList);
// 计算非 nodata 值的数量
var nonZeroCount = ROI_collection.reduceRegion({
reducer: ee.Reducer.count(),
geometry: ROI_collection.geometry(),
scale: 30,
bestEffort: true // 设置为 true,以处理大范围区域
});
// 提取结果
var nonZeroCountValue = nonZeroCount.get('B4');
// 打印结果
print('非 nodata 值的数量:', nonZeroCountValue);