如何在Google Earth Engine中获取栅格统计表格(类似R的freq(raster)功能)
Google Earth Engine 分类栅格像素值频次统计方案
GEE 没有直接对应 R 中freq(raster)的封装函数,可以通过ee.Image.reduceRegion结合频率直方图 reducer 实现,核心调用ee.Reducer.frequencyHistogram()即可返回每个唯一像素值对应的计数,完全匹配freq的功能需求。
实现代码示例
// 示例:统计MODIS土地覆盖产品的分类值频次,可替换为自定义分类栅格 var classifiedImg = ee.Image('MODIS/061/MCD12Q1/2021_01_01').select('LC_Type1'); // 定义统计区域,这里用栅格自身地理范围做示例,可替换为自定义ROI var statsRegion = classifiedImg.geometry(); // 执行频次统计 var freqStats = classifiedImg.reduceRegion({ reducer: ee.Reducer.frequencyHistogram(), geometry: statsRegion, scale: 500, // 对应栅格原生分辨率,可按需调整 maxPixels: 1e13 // 数值根据统计范围大小调整,避免像素超限报错 }); // 打印统计结果 print('分类值频次统计结果', freqStats.get('LC_Type1'));
结果说明
- 输出为字典格式,键为分类像素值,值为对应像素出现的总次数,和R中
freq(raster)返回的结果结构完全匹配 - 如果需要统计多波段的频次,可对每个波段单独调用该方法,或者使用
ee.Reducer.frequencyHistogram().repeat()适配多波段输入
常见问题处理
- 若出现像素超限报错:适当调大
scale参数降低统计分辨率,或者拆分统计区域分批计算后再合并结果 - 若栅格是浮点型分类值:可先通过
ee.Image.round()转为整型后再统计,避免浮点精度问题导致同一分类被拆分为多个值
内容的提问来源于stack exchange,提问作者Ezra
相关产品推荐
相关产品推荐

