前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Google Earth Engine(GEE)——重温对象方法的介绍和如何计算程序运行的时间?

Google Earth Engine(GEE)——重温对象方法的介绍和如何计算程序运行的时间?

作者头像
此星光明
发布2024-02-02 12:35:13
1640
发布2024-02-02 12:35:13
举报

数字

用于ee.Number()在服务器上创建数字对象。例如,使用 Math.EJavaScript 方法在服务器上创建一个常量值:

ee.String()ee.Number()方法 构造。构造函数接受其参数(可能还有其他参数),将其放入容器中,然后将容器及其内容作为可以在代码中操作的 Earth Engine 对象返回。任何以 开头的构造函数都会ee 返回一个 Earth Engine 对象。

Earth Engine 对象上的方法

请注意,一旦创建了地球引擎对象,就必须使用地球引擎方法来处理它。在此示例中,您不能使用 JavaScript Math.log() 来处理该 Earth Engine 对象。您必须使用为 定义的等效方法 ee.Number

log()是一个ee.Number对象的方法。(使用代码编辑器左侧的Docs选项卡查看每个 Earth Engine 对象类型的所有方法的列表,例如 ee.Number > log())。请注意,地球引擎对象的方法返回其他地球引擎对象。

列表

要将 JavaScript 列表变成ee.List服务器上的对象,您可以像数字和字符串一样将 JavaScript 文字放入容器中。Earth Engine 还提供了用于生成数字序列的服务器端便捷方法。例如:

由于ee.List对象仅存在于服务器上,因此请使用地球引擎提供的功能与它们进行交互。例如,要从列表中获取某些内容,请使用对象的get()方法ee.List

FAQ

有时,Earth Engine 不知道从方法返回的对象的类型。作为程序员,您知道value前面示例中的变量是一个数字对象。但是如果你尝试使用add() an的方法ee.Number,你会得到如下错误:

value.add 不是函数

这在get()函数中很常见,它可以返回各种地球引擎对象。要纠正它,使用ee.Number构造函数来 的结果

字典

您可以Dictionary从 JavaScript 对象构建地球引擎,就像使用字符串、数字和列表一样。在构建时,您可以使用 JavaScript 功能来初始化 Earth Engine 对象。在这种情况下, anee.Dictionary是直接从 JavaScript 文字对象构造的

一旦拥有ee.Dictionary,就必须使用 上的方法ee.Dictionary来获取值(与上一课中的 JavaScript 字典不同)。具体来说,get(key)返回与 关联的值key。由于返回的对象类型get() 可以是任何类型,如果您要对该对象执行任何操作而不是打印它,则需要将其强制转换为正确的类型。另请注意,该keys()方法返回一个ee.List.

日期

日期对象是地球引擎表示时间的方式。与前面的示例一样,区分 JavaScriptDate 对象和 Earth Engineee.Date对象很重要 。ee.Date 从字符串、JavaScriptDate或使用ee.Date类提供的静态方法 构造。(有关详细信息,请参阅文档选项卡中的日期部分 )。此示例说明从字符串或 JavaScript 日期构造日期,该日期表示自 1970 年 1 月 1 日午夜以来的毫秒数.日期对于过滤集合很有用,特别是作为filterDate()方法的参数

按名称传递参数

Earth Engine 方法的参数可以按顺序传递,例如创建一个 ee.Date从年月日开始的fromYMD()静态方法的参数,可以按年、月、日的顺序传递参数 :

或者,您可以按任何顺序按名称传递参数。虽然它可能是更多的代码,但它可以提高可读性和可重用性。要按名称传递参数,请传入一个 JavaScript 对象,其中对象的键是方法参数的名称,值是方法的参数。

代码:

代码语言:javascript
复制
// 数字类型
var serverNumber = ee.Number(Math.E);
print('e=', serverNumber);

// 使用一个内置函数对数字进行操作。
var logE = serverNumber.log();
print('log(e)=', logE);

// 创建一个列表的形式:傻瓜式
var eeList = ee.List([1, 2, 3, 4, 5]);
// 创建一个列表的形式:简单式
var sequence = ee.List.sequence(1, 5);
print('Sequence:', sequence);

// 提取列表中的值
var value = sequence.get(2);
print('Value at index 2:', value);

// 将get()的返回值转换为一个数字。转换为数字类型再做加减
print('No error:', ee.Number(value).add(3));

// 制作一个字典,按照键值的形式,如果是字符串记得加""
var dictionary = ee.Dictionary({
  e: Math.E,
  pi: Math.PI,
  phi: (1 + Math.sqrt(5)) / 2
});

// 获取字典中的值
print('Euler:', dictionary.get('e'));
print('Pi:', dictionary.get('pi'));
print('Golden ratio:', dictionary.get('phi'));

// 获取所有键和值
print('Keys: ', dictionary.keys());
print('Keys: ', dictionary.values());


// 定义时间
var date = ee.Date('2015-12-31');
print('Date:', date);

// 获取当前的时间
//这个操作可以用于我们计算程序跑代码过程中时间的长短的节点
//用来看代码运行的快慢
var now = Date.now();
print('Milliseconds since January 1, 1970', now);

// 初始化一个ee.Date对象。
var eeNow = ee.Date(now);
print('Now:', eeNow);

//定义时间格式
var aDate = ee.Date.fromYMD(2017, 1, 13);
print('aDate:', aDate);

//另一种定义时间的格式
var theDate = ee.Date.fromYMD({
  day: 13,
  month: 1,
  year: 2017
});
print('theDate:', theDate);

结果:

我们在运算的时候发现了虽然程序比较少,但是同样是有时间差异的,结果见下图:

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数字
  • Earth Engine 对象上的方法
  • 列表
  • FAQ
  • 字典
  • 日期
  • 按名称传递参数
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档