现在,您已准备好开始编写 Earth Engine JavaScript,请先将以下代码复制到代码编辑器中:
代码编辑器 (JavaScript)
// Instantiate an image with the Image constructor. var image = ee.Image('CGIAR/SRTM90_V4'); // Zoom to a location. Map.setCenter(-112.8598, 36.2841, 9); // Center on the Grand Canyon. // Display the image on the map. Map.addLayer(image);
点击代码编辑器顶部的运行按钮,您会看到地图上出现了一张非常灰暗的图片。别担心,您很快就能让它看起来更美观。如果此示例中任何部分的语法不熟悉,请务必查看 JavaScript for Earth Engine 教程。
Image Constructor
此示例中的第一个新内容是图片构造函数
ee.Image()。提供给构造函数的参数是 Earth Engine Data Catalog 中图片的字符串 ID。(请参阅代码编辑器左侧的 Docs [文档] 标签页,查看图片构造函数的所有可能参数。Docs 标签页代表有关 Earth Engine 功能的最新信息。)
如需查找影像 ID,请使用代码编辑器顶部的搜索工具在 Earth Engine Data Catalog 中进行搜索。例如,在搜索字段中输入“elevation”,然后注意系统会返回一个栅格列表。点击“SRTM Digital Elevation Data Version 4”(SRTM 数字高程数据版本 4)条目,查看有关该数据集的更多信息。数据集说明的右侧是图片 ID 字段。请注意,示例中的映像 ID 是从数据集说明中显示的映像 ID 复制的。
除了复制和粘贴图片 ID 之外,您还可以使用数据集说明中的导入按钮或搜索结果右侧的导入链接。如果您点击导入链接或按钮,系统会在脚本顶部的特殊部分(名为“导入”)中自动创建一个变量。您可以在导入部分中点击变量的名称来重命名变量。
配置地图
此示例中的第二个新部分是 Map.setCenter() 调用。此方法在 Map 对象上调用,该对象表示代码编辑器中的地图显示。此方法会将地图中心定位在给定的经度、纬度(以十进制度数表示)和缩放级别,其中缩放级别 1 表示缩小到地图显示整个地球表面。数字越大,放大程度越高。通过查看代码编辑器左侧“文档”标签页中的“地图”部分,了解 Map 对象的所有方法。
向地图添加图层
示例中的最后一行表示:使用 Map 对象的 addLayer() 方法将图片添加到代码编辑器中的地图显示。
恭喜!您已创建第一个 Earth Engine 脚本。在下一部分中,您将学习如何让该图片看起来更美观。
离题:Earth Engine 中的图片
Earth Engine 中的图像(如需了解详情,请参阅此页面)由一个或多个波段组成。影像中的每个波段都有自己的名称、像素值、像素分辨率和投影。您很快就会发现,SRTM 图像只有一个波段:“elevation”。
使用 Map.addLayer() 向地图添加图像时,Earth Engine 需要确定如何将图像波段中的值映射到显示屏上的颜色。如果将单波段图像添加到地图中,Earth Engine 默认会以灰度显示该波段,其中最小值对应黑色,最大值对应白色。
如果您未指定最小值和最大值,Earth Engine 将使用默认值。例如,您刚刚添加到地图中的图片会显示为灰度图片,其拉伸范围为数据的完整范围,即有符号 16 位整数 [-32768, 32767]。(默认情况下,float 波段会拉伸到 [0, 1],byte 波段会拉伸到 [0, 255])。
您可以通过打印图片并在控制台标签页中检查图片对象来发现图片的数据类型。例如,在前面的代码后粘贴以下代码:
代码编辑器 (JavaScript)
print('SRTM image', image);
点击“运行”后,请注意控制台中会显示一个对象。如需调查对象属性,请点击对象或属性左侧的 zippy () 将其展开。展开图片对象、“bands”属性、索引为“0”的“elevation”波段以及“elevation”波段的“data_type”属性,您会发现它是
signed int16 数据类型。
自定义图层可视化
如需更改数据的拉伸方式,您可以向 Map.addLayer() 调用提供另一个参数。具体而言,第二个参数 visParams 可让您指定要显示的最小值和最大值。如需了解要使用的值,请激活检查器标签页,然后在地图上点击,了解像素值的范围。或者,使用图层管理器以交互方式拉伸数据,然后观察与百分位数或标准差拉伸对应的最小值和最大值。假设通过此类实验,您确定数据应拉伸到 [0, 3000]。如需使用此范围显示图片,请使用:
代码编辑器 (JavaScript)
Map.addLayer(image, {min: 0, max: 3000}, 'custom visualization');
请注意,visParams 参数是一个对象,其属性指定了 min 和 max。(如需详细了解 JavaScript 对象,请参阅 JavaScript 教程或此外部参考文档)。请注意,Map.addLayer() 的第三个参数是图层管理器中显示的图层名称。结果应如图 1 所示。将鼠标悬停在右侧的图层框上,即可查看重命名该图层的效果。
如需使用调色板显示单个波段,请向 visParams 对象添加 palette 属性:
代码编辑器 (JavaScript)
Map.addLayer(image, {min: 0, max: 3000, palette: ['blue', 'green', 'red']}, 'custom palette');
结果应类似于图 2。
题外话:调色板
通过调色板,您可以为单波段图片设置配色方案。调色板是一个以英文逗号分隔的颜色字符串列表,这些字符串在可视化参数中的最大值和最小值之间进行线性插值(或根据波段类型采用默认值,如前所述)。例如,小于或等于最小值的像素将以列表中的第一个颜色显示;大于或等于最大值的像素将以列表中的最后一个颜色显示。中间颜色会线性拉伸到中间像素值。
颜色是使用 Web 标准 CSS 颜色值方案定义的(如需了解详情,请参阅此外部参考文档)。颜色可以通过名称或十六进制字符串(表示红、绿、蓝三色的组合)来指定。这三个位置中的最低值为 00(代表十进制数 0),最高值为 FF(代表十进制数 255)。字符串“000000”表示黑色,“FFFFFF”表示白色,“FF0000”表示红色,“00FF00”表示绿色,“0000FF”表示蓝色。如需了解详情,请参阅调色板部分。 如此部分所述,您可以使用样式化图层描述符进行其他拉伸。
在本教程的后面部分,您将学习如何显示多波段图像。但在此之前,请访问下一页,了解如何使用图片执行计算。