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

数字

用于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 对象,其中对象的键是方法参数的名称,值是方法的参数。 

代码:

// 数字类型
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);

结果:

 

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


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

此星光明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值