You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GEE中Sentinel-2月度合成数据分区统计报错:重复键[date]

解决GEE中Dictionary.rename: Duplicate key: [date]错误

问题场景

使用Google Earth Engine(GEE)生成湖泊区域Sentinel-2影像各波段月度平均值表格时,运行代码触发错误:

FeatureCollection (Error) Error in map(ID=0): Dictionary.rename: Duplicate key: [date].

错误原因

核心是**date属性重复定义**:

  • 生成月度合成影像时,手动给每个Image添加了date属性(w.set('date', ee.Date.fromYMD(y,m,1)))
  • 在zonalStats函数中,通过参数datetimeName: 'date'再次添加了同名的格式化日期属性
  • 后续构建属性字典时,两个date属性被重复纳入,导致重命名操作出现冲突

解决方法

方法一:移除手动添加的date属性

GEE可通过system:time_start自动解析日期,无需手动设置date属性。修改月度合成影像代码:

// monthly composite
var monthlyImages =  ee.ImageCollection.fromImages(
  years.map(function (y) {
  return months.map(function(m){
  var w = dataset.select([ 'B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'B8A', 'B11', 'B12'])
           .filter(ee.Filter.calendarRange(y, y, 'year'))
           .filter(ee.Filter.calendarRange(m, m, 'month'))
           .mean()
           .set('system:time_start',ee.Date.fromYMD(y,m,1).millis());
  return w.set('year', y)
           .set('month', m)
           .set('system:time_start',ee.Date.fromYMD(y,m,1).millis());
});
}).flatten());

方法二:修改datetimeName避免属性名冲突

若需保留原date属性,将zonalStats的datetimeName改为非重复名称:

var params = {
  reducer: ee.Reducer.mean(),
  scale: 20,
  bands: [ 'B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'B8A', 'B11', 'B12'], 
  bandsRename: ['blue', 'green', 'red', 'red_edge1', 'red_edge2', 'red_edge3', 'NIR', 'red_edge4', 'SWIR_1', 'SWIR_2'],
  datetimeName: 'formatted_date', // 修改为不重复的属性名
  datetimeFormat: 'YYYY-MM-dd'
};

额外修正:参数类型匹配

zonalStats的第二个参数要求是FeatureCollection,原代码传入的Geometry需要转换:

var SentinelStats = zonalStats(monthlyImages, ee.FeatureCollection([ee.Feature(geometry)]), params);

内容的提问来源于stack exchange,提问作者ifoxfoot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 05:13:17