Earth Engine 服务器对象是具有以ee
(例如ee.Image
,ee.Reducer
)开头的构造函数的对象,并且此类对象上的任何方法都是服务器功能。任何不是以这种方式构造的对象都是客户端对象。客户端对象可能来自代码编辑器(例如Map
、Chart
)或 JavaScript 语言(例如Date
、Math
、[]
、 {}
)。
为避免意外行为,请勿在脚本中混合使用客户端和服务器功能,如此处、 此处和此处讨论的那样。有关 地球引擎中客户端与服务器的深入解释,请参阅此页面和/或本教程。以下示例说明了混合客户端和服务器功能的危险:
错误— 此代码不起作用!
var table = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017');
// Won't work.
for(var i=0; i<table.size(); i++) {
print('No!');
}
能发现错误吗?请注意,这table.size()
是服务器对象上的服务器方法,不能与客户端功能(如<
条件)一起使用。
您可能希望使用 for 循环的一种情况是 UI 设置,因为代码编辑器ui
对象和方法是客户端。
好- 使用客户端功能进行 UI 设置。
var panel = ui.Panel();
for(var i=1; i<8; i++) {
panel.widgets().set(i, ui.Button('button ' + i))
}
print(panel);
ui.Panel(widgets, layout, style)
可以容纳其他小部件的小部件。使用面板构建嵌套小部件的复杂组合。
面板可以添加到 ui.root 但不能使用 print() 打印到控制台。
A widget that can hold other widgets. Use panels to construct complex combinations of nested widgets.
Panels can be added to ui.root but not printed to the console with print().
widgets (List<ui.Widget>|ui.Widget, optional):
要添加到面板的小部件列表或单个小部件。默认为空数组。
The list of widgets or a single widget to add to the panel. Defaults to an empty array.
layout (String|ui.Panel.Layout, optional):
The layout to use for this panel. If a string is passed in, it’s taken as a shortcut to the layout constructor with that name. Defaults to 'flow'.
style (Object, optional):
An object of allowed CSS styles with their values to be set for this widget. See style() documentation.
相反,map()
是一个服务器功能,客户端功能在传递给map()
. 例如:
错误— 此代码不起作用!
var table = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017');
// Error:
var foobar = table.map(function(f) {
print(f); // Can't use a client function here.
// Can't Export, either.
});
要对集合中的每个元素、集合上map()
的函数和set()
属性执行某些操作:
好- 使用map()
set()
.
var table = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017');
print(table.first());
// 集合中的每一个元素都进行这项操作
var withMoreProperties = table.map(function(f) {
// 返回set设置属性,并计算其属性值
return f.set('area_sq_meters', f.area())
});
print(withMoreProperties.first());
您还可以filter()
基于计算或现有属性和print()
结果的集合。请注意,您无法打印包含超过 5000 个元素的集合。如果您收到“累积超过 5000 个元素后集合查询中止”错误,filter()
或limit()
打印前集合。