Google Earth Engine IDW插值:mean与stdDev返回空值问题排查
问题原因分析
属性名称不匹配:在采样后的
map处理环节,你把原图像的precipitation属性重命名为了prec(代码行:return ee.Feature(ee.Geometry.Point([lon, lat]), {prec: prec});),但后续调用reduceColumns计算统计量时,指定的selectors是['precipitation']——这个属性在最终的samples集合里根本不存在,导致reducer无法获取有效数据计算均值和标准差,最终返回空值。参数类型潜在问题:即使修复了属性名称,
stats.get('mean')和stats.get('stdDev')返回的是未完成计算的服务器端对象,直接传递给inverseDistance可能引发异步计算异常,需要用ee.Number()包装确保为数值类型。
修复后的关键代码片段
// 采样时保持属性名与原图像一致,避免后续匹配错误 var samples = precipitation.addBands(ee.Image.pixelLonLat()) .sample({ region: cairu, scale: 5566, numPixels: 16, projection: 'EPSG:4326' }).map(function(sample){ var lat = sample.get('latitude'); var lon = sample.get('longitude'); var prec = sample.get('precipitation'); return ee.Feature(ee.Geometry.Point([lon, lat]), {precipitation: prec}); }); // 使用正确的属性名计算统计量 var stats = samples.reduceColumns({ reducer: combinedReducer, selectors: ['precipitation'] }); // 用ee.Number()包装,确保传递给IDW的是有效数值类型 var meanVal = ee.Number(stats.get('mean')); var stdDevVal = ee.Number(stats.get('stdDev')); var interpolated = samples.inverseDistance({ range: 5e3, propertyName: 'precipitation', mean: meanVal, stdDev: stdDevVal, gamma: 0.3 });
内容的提问来源于stack exchange,提问作者Murillo AL Costa
相关产品推荐
相关产品推荐

