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

独立Web应用中Google Earth JavaScript API等效于print()的方法

在独立JS/HTML应用中替代GEE云端编辑器print()的方法

在Google Earth Engine云端编辑器里,print()会自动处理服务器端对象的异步请求并打印实际值,但独立应用中,GEE对象(比如ee.Number、ee.Dictionary)都是服务器端引用,直接用console.log或JSON.stringify只能输出客户端包装对象的描述,无法拿到实际计算结果。

要获取真实数值,必须用GEE对象的evaluate()方法——这是专门用于异步获取服务器端计算结果的API,用法如下:

方法1:直接对结果字典调用evaluate

针对你的代码中的stats(一个ee.Dictionary对象),可以通过evaluate()获取完整的结果对象,再提取对应字段:

var chirps = ee.ImageCollection('UCSB-CHG/CHIRPS/PENTAD');

var year = 2017;
var startDate = ee.Date.fromYMD(year, 1, 1);
var endDate = startDate.advance(1, 'year');
var filtered = chirps
  .filter(ee.Filter.date(startDate, endDate));
var total = filtered.reduce(ee.Reducer.sum());

var bangalore = ee.FeatureCollection("users/ujavalgandhi/public/bangalore_boundary");
var stats = total.reduceRegion({
  reducer: ee.Reducer.mean(),
  geometry: bangalore,
  scale: 5000,
})

// 用evaluate异步获取实际结果
stats.evaluate(function(result) {
  console.log(result.precipitation_sum + ' mm'); // 输出1336.52 mm
}, function(error) {
  console.error('请求失败:', error); // 可选:处理错误情况
});

方法2:针对单个数值调用evaluate

如果只需要precipitation_sum字段,可以直接对该ee.Number对象调用evaluate():

stats.get('precipitation_sum').evaluate(function(value) {
  console.log(value + ' mm'); // 输出1336.52 mm
});

关键说明

  • evaluate()是异步操作:所有依赖该结果的代码必须放在回调函数内部,或者用Promise包装后使用async/await语法。
  • 确保已正确初始化GEE API:独立应用中需要先加载GEE脚本并完成认证,比如:
    <script src="https://code.earthengine.google.com/client.js"></script>
    <script>
      ee.initialize(function() {
        // 在这里执行你的GEE代码
      });
    </script>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 17:04:58