数字
用于ee.Number()
在服务器上创建数字对象。例如,使用 Math.E
JavaScript 方法在服务器上创建一个常量值:
该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);
结果:
我们在运算的时候发现了虽然程序比较少,但是同样是有时间差异的,结果见下图: