前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Google Earth Engine(GEE)——在线面板实现NDVI值(点)的获取!

Google Earth Engine(GEE)——在线面板实现NDVI值(点)的获取!

作者头像
此星光明
发布2024-02-02 08:09:36
2190
发布2024-02-02 08:09:36
举报

如果您在小部件中使用地球引擎结果(例如减少的数字输出),您将需要从服务器获取值。(有关地球引擎中客户端与服务器的详细信息,请参阅 此页面)。为了避免在计算该值时挂起整个 UI,您可以使用该evaluate()函数异步获取该值。该evaluate()函数开始请求一个值,当该值准备好时调用一个回调函数来处理结果。例如,考虑一个应用程序来获取 NDVI 时间序列在某个点的平均值:

函数:

evaluate(callback)

代码语言:javascript
复制
从服务器异步检索此对象的值并将其传递给提供的回调函数。

Asynchronously retrieves the value of this object from the server and passes it to the provided callback function.

Arguments:

参数:

这个:计算对象(ComputedObject): ComputedObject 实例。

回调(功能): 形式为 function(success, failure) 的函数,在服务器返回答案时调用。如果请求成功,则成功参数包含评估结果。如果请求失败,则失败参数将包含错误消息。

this:computedobject (ComputedObject):

The ComputedObject instance.

callback (Function):

A function of the form function(success, failure), called when the server returns an answer. If the request succeeded, the success argument contains the evaluated result. If the request failed, the failure argument will contains an error message.

widgets()

代码语言:javascript
复制
返回面板中当前的小部件列表。返回面板中的列表

Returns the list of widgets currently in the panel.

Arguments:
代码语言:javascript
复制
ui.panel(ui.Panel):
ui.Panel 实例。

this:ui.panel (ui.Panel):

The ui.Panel instance.

Returns: ui.data.ActiveList<ui.Widget>

代码:

代码语言:javascript
复制
// 加载 NDVI 影像
var ndvi = ee.ImageCollection('LANDSAT/LC8_L1T_8DAY_NDVI')
    .filterDate('2014-01-01', '2015-01-01');
var vis = {min: 0, max: 1, palette: ['99c199', '006400']};
Map.addLayer(ndvi.median(), vis, 'NDVI');

// 配置地图
Map.setCenter(-94.84497, 39.01918, 8);
Map.style().set('cursor', 'crosshair');

// 创建一个面板并将其添加到地图中
var inspector = ui.Panel([ui.Label('Click to get mean NDVI')]);
Map.add(inspector);

Map.onClick(function(coords) {
  // 显示加载标签。
  inspector.widgets().set(0, ui.Label({
    value: 'Loading...',
    style: {color: 'gray'}
  }));

  // 确定平均 NDVI,一个长期运行的服务器操作。
  var point = ee.Geometry.Point(coords.lon, coords.lat);
  var meanNdvi = ndvi.reduce('mean');
  var sample = meanNdvi.sample(point, 30);
  var computedValue = sample.first().get('NDVI_mean');

  // 从服务器请求值。
  computedValue.evaluate(function(result) {
    // 当服务器返回值时,显示它。
    inspector.widgets().set(0, ui.Label({
      value: 'Mean NDVI: ' + result.toFixed(2),
    }));
  });
});

代码中有一个需要说明的:result.toFixed(3),这里指的就是你的ndvi值显示的小数位数

最终结果:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Arguments:
  • Arguments:
  • Returns: ui.data.ActiveList<ui.Widget>
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档