独立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
相关产品推荐
相关产品推荐

