在前面的内容中,我们计算了增强植被指数 (EVI),以说明卫星图像上的波段运算,代码在单个图像上被调用一次。 如果我们想以相同的方式计算整个 ImageCollection 中的每个图像的 EVI,该怎么办?在这里,我们使用 Earth Engine 工作流程第二部分的关键工具,即 .map 命令。
在开始编写 EVI 功能之前,值得注意的是,在基于云的遥感过程中,在多种设置中都会遇到“Map”一词,能够区分用途非常重要。 “Map”在 Earth Engine 中可以充当动词或名词,“地图”作为名词有两种用法。 我们可能会随意提及“Map”,或更准确地说是“Map panel”; 这些术语指的是图像在代码界面中显示的位置。 第二种方式“Map”用作名词,指代地球引擎对象,该对象具有可以调用的函数。 这方面的例子是熟悉的 Map.addLayer 和 Map.setCenter。 如果打算使用该词,它将以紫色文本显示并在代码编辑器中大写。 我们在这里讨论的是使用 .map 作为动词,代表在一组上重复执行一组动作的想法。 这通常称为“mapping over the set”。
为了在整个 ImageCollection 上有效地映射一组给定的操作,需要以特定的方式设置处理。
熟悉其他编程语言的用户可能希望看到“loop”代码来执行此操作,但 Earth Engine 中的处理并不完全按照这种方式完成。 相反,我们将创建一个函数,然后将其映射到 ImageCollection。 首先,设想创建一个只接受一个参数(ee.Image)的函数。 然后,该函数被设计为对输入 ee.Image 执行一组指定的操作,然后,重要的是,返回 ee.Image 作为函数的最后一步。 当我们将该函数映射到 ImageCollection 时,如下所示