时空遥感云计算平台PIE-Engine Studio的研究与应用

2022-03-09 09:43程伟钱晓明李世卫马海波刘东升刘富乾梁军龙胡举
遥感学报 2022年2期
关键词:算子计算结果分布式

程伟,钱晓明,李世卫,马海波,刘东升,刘富乾,梁军龙,胡举

航天宏图信息技术股份有限公司,北京100195

1 引言

随着对地观测技术的发展,海量遥感数据不断涌现,遥感大数据时代已经到来(李德仁等,2014;李德仁,2016;付东杰等,2021)。海量数据的存储、处理与共享对计算机性能提出了较高要求,需要大量的存储与计算资源。云计算基于“按需分配”和“共享资源”的理念,为海量遥感数据的存储、快速处理和分析提供了可能,遥感专用的云计算平台也应运而生(付东杰等,2021)。遥感云计算平台的出现直接改变了传统遥感数据的处理和分析模式(数据下载、存储和运算均在本地进行,数据处理分析依赖本地运行的专业软件或代码),降低了遥感数据的使用门槛,极大地提高了运算效率,使得全球尺度、高分辨率、长时间序列数据的快速分析和应用成为可能,已成为研究土地利用、生态、环境和气候变化等地学领域前沿问题的重要工具(董金玮等,2020)。

目前国际上主流的遥感云计算平台以国外机构或公司研发的平台为主,如美国的谷歌地球引擎GEE(https://earthengine.google.com/[2021-04-29])(Moore 和Hansen,2011)、美国航空航天局的NEX(NASA Earth Exchange)(https://www.nasa.gov/nex/[2021-04-29])(Nemani 等,2010)、笛卡儿实验室的Descartes Labs(https://www.descarteslabs.com/[2021-04-29])、亚马逊的AWS(Amazon Web Services)(https://aws.amazon.com/cn/earth/[2021-04-29])、澳大利亚的数据立方体Data Cube(https://www.opendatacube.org/[2021-04-29])以及德国的CODE-DE(Copernicus Data and Exploitation Platform-DE)(https://code-de.org/[2021-04-29])。国内遥感云计算平台的建设也在快速推进中,如中国科学院的地球大数据挖掘分析系统EarthDataMiner(http://earthdataminer.casearth.cn/[2021-04-29])(Liu等,2020a),多家科技公司如阿里巴巴集团控股有限公司、深圳市腾讯计算机系统有限公司、北京市商汤科技开发有限公司、航天宏图信息技术股份有限公司等也相继投入到遥感云计算平台的研发中。

在这些平台中,以GEE(Gorelick 等,2017)的应用最为广泛,在土地覆被/土地利用(Bastin等,2017;Ceccherini 等,2020;Finer 等,2018;Hansen 等,2013,2020;Qin 等,2019)、植被(Bastin 等,2019;Bogard 等,2019;Laskin 等,2019;Liu等,2020b;Myers-Smith 等,2020)、动物(Giezendanner 等,2020;Hendershot 等,2020;Joshi 等,2016)、气候变化(Chudley 等,2019;Ryan 等,2019;Tuckett 等,2019;Venter 等,2020)、城市(Liu 等,2020c)、农业(Burke 和Lobell,2017)、灾害(Walter 等,2019)、人类社会经济活动(Watmough 等,2019;Weiss 等,2018;Wu 等,2020;Yeh 等,2020)等地球科学领域中已得到典型应用。

GEE 历经近10 a 发展,技术较为成熟,全球用户达数百万,在此领域已处于垄断地位。然而美国政府于2020-01在出口管制条例上增加了“专门用于自动分析地理空间图像的软件”(Bureau of Industry and Security,Commerce,2020),提高了从美国向除加拿大之外的国家出口这些软件的限制,而GEE 正符合这个限制条件,可能会被限制使用。目前,GEE 已提高了注册门槛,国内新用户正常使用该平台越来越难,并且使用过程及处理结果的下载受网络情况影响较大。同时由于GEE 没有接入高分、风云等国产卫星数据,限制了国产遥感数据在云计算平台上的应用。此外,国内的遥感云计算平台目前主要以可视化和数据服务为主,不能满足遥感行业对集数据、算力和技术于一体的遥感云计算平台的迫切需要。在这样的背景下,航天宏图针对大数据时代遥感应用在国内面临的问题,自主研发PIE-Engine Studio 时空遥感云计算平台,构建共享数据、算法和计算资源的开放环境,实现遥感数据的按需获取以及海量数据的快速处理,以应对遥感大数据时代对信息高效、服务快速的迫切需求,加速推进中国遥感云计算平台的发展进程。

2 PIE-Engine Studio系统架构

PIE-Engine Studio 是一套基于容器云技术构建的面向地球科学领域的时空遥感云计算平台,其内部包含自动管理的弹性大数据环境,集成了多源遥感数据处理、分布式资源调度、实时计算、批量计算和深度学习框架等技术。作为构建在云计算之上的地理空间数据分析和计算平台,PIEEngine Studio 通过结合海量遥感数据及计算资源,可供用户在任意尺度上研究算法模型并采取交互式编程验证,实现快速探索地表特征,发现变化和趋势,为地球科学领域的研究提供开放的数据与弹性算力支持。

PIE-Engine Studio 的系统架构如图1所示,平台提供了JavaScript 和Python 两种版本的API,使用时在Web 开发编辑器(JavaScript)或者Jupyter Notebook(Python)中编写脚本,来处理分析各种影像、矢量数据。在API 库的支持下,RESTful API接口负责前端和后台的通信,既可将前端脚本发送给后台,又可将后台计算结果返回给前端显示,也可将处理结果加载到第三方应用程序中进行展示或进一步分析。分布式数据计算服务负责对脚本进行编译,对计算过程进行优化,对计算计划进行执行并将计算结果通过API接口返回,完成海量数据的分布式计算。平台提供的分布式数据计算服务分为两种:(1)实时计算服务,主要负责将计算结果实时显示到前端地图界面或者输出窗口;(2)异步计算服务,主要负责将数据以任务的形式导出。计算服务的执行依赖于平台分布式存储的多源遥感数据以及对这些遥感数据进行处理的算子库。分布式数据存储与访问服务负责多源数据的存储与访问,包括以瓦片形式存储的影像数据、矢量要素数据、元数据以及用户个人数据。遥感数据处理分析算子库则包括了常用的遥感影像处理分析算法,通过这些算子,可以进行简单的数据处理以及复杂的图像运算。

图1 PIE-Engine Studio遥感云计算平台系统架构Fig.1 The system architecture diagram of PIE-Engine Studio

通过平台主页(https://engine.piesat.cn/enginestudio/[2021-09-01])可进入编程界面,并查看数据资源、示例代码和文档教程等入门资源。平台也配备了免费的资源配额以上传个人数据或保存计算结果(250 GB存储空间,6000个文件),亦可根据需要对计算结果进行下载(60 GB/月免费下载流量)。另外,为保证计算资源的均衡分配,每次计算最多可免费调用2000 景影像,导出结果大小限制为1010个像素。

3 分布式数据存储与访问

3.1 数据资源

截止到2021-09,平台已上传总数据量接近3.4 PB,包括国内外100 多种公共数据集(表1),近900 万景影像,并以7 TB/日数据量持续更新。这些数据集涵盖了地球科学领域研究中常用的卫星影像以及气候、高程、土壤、土地覆盖、人口等数据产品,还包括了全球国家、中国省/市/县行政区划等基础矢量数据。所有数据经过投影转换、格式转换等预处理,可随时导入到代码编辑器中进行处理与分析。同时,用户可在资源目录中上传个人数据,并根据需要与其他用户分享。平台数据集访问地址为https://engine.piesat.cn/enginestudio/dataset[2021-09-01]。

表1 PIE-Engine Studio常用公共数据集Table 1 Frequently used datasets in the PIE-Engine Studio data catalog

3.2 分布式数据存储

分布式数据存储首先要解决分布在国内外的海量多源遥感数据入库问题。对于国外免费遥感卫星数据,通过建立在AWS 上的中转服务集群将数据实时同步到国内云数据中心;国内的遥感数据则直接传输到云数据中心。数据入库流程如图2所示,首先对分布在云端的海量遥感数据根据数据集名称、时间以及入库区域等信息进行筛选,生成需要入库的任务清单;之后将任务清单分配到不同的节点上并行执行,对任务清单中的每一条数据标识其状态信息,根据此标识采用分布式锁的抢占式任务调度方式保证入库数据的唯一性;最后将数据存储到云数据中心。

图2 分布式数据接入流程Fig.2 The access process of distributed data

续表

为支持海量遥感影像数据快速显示及高效计算,对影像数据建立影像金字塔。通过对影像重采样,建立一系列不同分辨率的影像图层,对每个图层分别进行切片处理得到影像瓦片,每个瓦片是大小为256×256像素的无损压缩数据块,并按照全球统一编码规则进行编码。对编码后的瓦片采用瓦片映射技术,构建瓦片之间的关联关系,然后采用公有云的对象存储技术,实现影像金字塔瓦片数据的分布式存储。

3.3 分布式数据访问

为影像建立了金字塔之后,基于云原生分布式数据库构建影像数据集索引,便于通过脚本查询和过滤所需的影像。平台依据前端脚本代码传入的影像ID、当前交互区域的可见范围、当前地图的缩放级别等参数筛选出对应的影像瓦片,然后对这些瓦片进行处理。采用这种分块瓦片计算的处理方式,执行过程耗时短,效率高。由于获取的是多个单张瓦片,所以也便于将后台计算服务做分布式部署,通过分布式操作使得对海量数据的实时计算更为高效。

此外,为使用户轻松搜索并获取自己想要的数据,平台把相同传感器拍摄的同一类型的数据组合在一起,成为数据集(collection)的形式(如:Landsat 8 TOA 数据集)。该种方式提供了快速过滤和排序功能,用户可以很容易地搜索数百万张单独的影像,以选择特定空间、时间或其他条件的数据。例如,可以轻松地从Landsat 8 TOA数据集中查询华北区域2020年云量小于10%的数据并显示在地图界面上。

4 遥感数据处理算子

PIE-Engine Studio 提供了针对数值、数组/矩阵、影像、矢量、集合、列表、字典等多种对象类型的操作,包含机器学习分类算法和部分卫星的专用算法如气溶胶光学厚度反演、PM 2.5 反演、海表温度提取、舰船检测等,共计300 多个算子,支持JavaScript 和Python 两种语言的访问方式,具体算子如表2所示。

表2 PIE-Engine Studio支持的算子Table 2 PIE-Engine Studio function summary

续表

上述算子根据复杂度的不同可分为简单算子和复杂算子,其中简单算子是指仅通过单块影像计算的算法,如波段运算或拉伸显示等。复杂算子是指需要统计整体影像的算法,如统计极值、直方图或计算面积等。

一个算子由类型、名称和参数列表3 部分组成,其中类型用来标识是简单算子(Simple)还是复杂算子(Complex),名称即该算子的函数名,参数列表指该算子的参数信息。比如执行影像加法运算的算子:addImage(imageA,imageB),其类型为Simple,名称为addImage,包含两个参数,分别为imageA和imageB。

使用时既可单独调用某个算子实现相应的功能,如用算子Image加载指定的影像:var image=pie.Image("LC08/01/T1/LC08_121031_20170101"),又可通过对这些算子进行组合调用,来实现复杂的数据查询、计算、分析和显示等功能。如算子Image和算子select结合可实现对特定影像的波段筛选功能:var image = pie.Image("LC08/01/T1/LC08_121031_20170101").select("B1");

平台所有算子均采用C++语言实现,具有较高的计算效率。随着遥感数据的扩展和用户需求的不断丰富,会对新的算子提出需求,为此平台支持多语言的算子扩展机制,包括JavaScript、Python和C++。

5 分布式数据计算

PIE-Engine Studio 运行的概略流程是:首先在前端编写动态脚本(JavaScript/Python),描述遥感影像的计算过程;点击运行按钮,这些JavaScript/Python 代码自动构建初步的链式结构调用语法树(即树结构的调用依赖关系);然后通过后台的计算过程优化以过滤无效计算内容,生成并缓存所需数据结果的执行计划;接着通过调度中心将计算任务分配给多个节点上的计算服务;最终通过特定的前端请求或者算子(print、addLayer、Export)触发实际的计算,以分布式方式完成计算流程,得到可视化图层或者结果文件返回给前端界面。这一流程如图3所示。

图3 PIE-Engine Studio遥感云计算平台计算流程Fig.3 The calculation flow of PIE-Engine Studio

5.1 计算脚本编译

PIE-Engine Studio 的执行是脚本驱动的,脚本是在Web 编辑器中编写或者通过RESTful API 接口提交的文本内容,因此需要转换为与后台算子库匹配的C++计算指令才可在众多服务器上并行执行。为达到这一目的,平台设计了一套链式结构调用语法树以实现脚本语言的编译,语法树中的节点是数据对象或者预定义的算子,后期的计算过程优化和计算计划生成均依赖这个树结构。

PIE-Engine Studio 接收到动态脚本后,首先识别计算的最终目标对象,对于没有计算目标的脚本(如仅操作前端UI 部件)则直接终止整个计算过程;对于计算目标明确的脚本,则执行计算脚本编译的任务,生成链式结构调用语法树,并通过触发计算的算子确定输出结果的形式。

(1)单个算子的编译。单个算子的编译是通过前端脚本代码对单个算子进行构造,获取算子的类型、名称以及参数列表,实现该算子的语法树描述信息。

(2)组合算子的编译。对于链式调用的组合算子,首先前端通过算子类型、名称和参数列表对每个算子进行构造,得到相应的语法树描述信息;然后根据算子链式调用顺序把前一个算子的描述信息作为后一个算子的输入参数,依次类推构建组合算子的语法树描述信息。

5.2 计算过程优化

为实现海量遥感数据批量处理,PIE-Engine Studio 计算逻辑十分复杂,为提高运算效率,对计算过程进行优化尤为重要。首先平台根据语法树的计算目标,构建计算执行路径的有向无环图DAG(Directed Acyclic Graph),关于DAG 的构建过程可参考Gorelick 等(2017)的描述。然后采用多种技术对DAG 进行优化,主要包括:通过计算路径剪枝,移除不必要的计算过程;通过谓词下推,把对影像的过滤条件尽可能下推至靠近数据源的位置,从源头减少计算所需的数据量;通过重复对象合并,将不同计算分支上的相同对象合并,避免重复计算。在代码层次实现这些优化,可有效提高平台执行速度和资源利用效率。最后根据优化后的DAG 生成计算计划并缓存等待调用。

5.3 计算计划执行

(1)计算任务解析。计算计划生成后需要转换为可执行的C++调用函数才可与后台算子库匹配,从而根据算子名称调用算子库中对应算子执行相应的计算。计算服务通过解析语法树中每个变量包含的表达式,获取表达式对应的具体内容,然后通过递归方式逐步获取变量最终的C++调用函数。

解析单个算子的过程是通过算子的语法树描述信息,解析出算子类型、名称和参数列表,从而构建该算子的调用函数。解析链式调用的组合算子则先识别各个算子的嵌套关系。通过解析外部算子的参数,判断该算子的参数是值还是其他算子的描述信息。如果是值则对该参数直接赋值,如果是其他算子的描述信息则按照单个算子的解析过程构建该算子的C++调用函数。

PIE-Engine Studio 采用的是按需计算,也就是明确调用了上下文时程序才开始进行计算。例如只有在将计算结果进行输出(print、Export)或者添加到交互地图上(addLayer)时,计算服务才会依据前端传入的影像ID、当前交互区域的可见范围、当前地图的缩放级别等,查找所有对应的瓦片,根据计算计划动态计算当前可见区域对应的结果。或者如果计算结果是另外一个计算过程的输入,计算服务会对计算结果自动重新采样,使得两者可以正常运算,整个过程完全不需要用户控制分辨率。

在处理缓存问题上,平台为节省计算资源,对已经计算过的对象限时缓存(5 min),如果需要计算的对象存在缓存则直接提取计算结果替换对象的整个计算过程。这种方式既避免了重复计算降低效率,又避免了长期无人访问的无效缓存占用存储空间。

(2)计算任务调度。平台针对不同级别的任务提供了不同的调度策略,主要有轮询调度(Round Robin)、资源利用均衡、请求数均衡3 种策略。其中轮询调度算法的主要思想是把用户每次提交的任务请求,依次分配到内部的所有服务器中,不关心每台服务器的当前连接数和响应速度。其他两种方式的目标分别是在各个计算服务器的计算资源和请求数之间取得平衡。当计算节点接收到调度的计算请求后,根据请求中的脚本唯一标识到缓存中检索对应的执行计划并完成实际的计算。

(3)并行计算策略。实时计算任务执行时,其总执行计划与算子进行绑定,实现多线程、并行IO 的计算方式。针对复杂度不同的算子,采取的并行计算策略也不一样。对于简单算子,仅通过单块影像即可计算,采用直接计算的方式;对于复杂算子,即需要统计整体影像的算法,采用MapReduce计算的方式;对于更复杂的运算,比如滤波运算,需要先对单块影像的边界进行扩充,再采用MapReduce的计算方式。

5.4 计算结果返回

对于实时计算服务,直接将后台计算结果返回前端地图界面显示,同时将需要输出的结果显示在输出窗口中。

对于异步计算服务,则生成相关导出任务,然后在后台异步执行直到任务导出结束,相关结果会根据用户的设置导出到云盘或资源目录中。

6 应用案例

PIE-Engine Studio和GEE都属于遥感云计算平台,两者在设计理念、开发方式、提供的服务等方面具有高度相似性,作为中国自主研发的遥感云计算平台,为在算力上与GEE 作对比,采用Landsat 8 TOA 数据集,以整体计算中国区域生长季植被指数均值为例来展示PIE-Engine Studio(以下简称本平台)的数据处理能力。2020-05—2020-08,全国共有3366景Landsat 8 TOA数据,数据总量约3 TB。计算流程为:(1)加载Landsat 8 TOA 数据集;(2)做去云处理;(3)计算归一化植被指数NDVI;(4)影像镶嵌裁剪得到中国区域生长季植被指数均值。对比结果归纳如表3所示。

表3 PIE-Engine Studio和GEE计算结果对比Table 3 Comparison of results calculated by Pie-Engine Studio and GEE

6.1 计算时间的对比

在计算时间上,GEE 需要0.5 min 左右,而本平台则需1—2 min,主要原因是GEE 背靠谷歌公司,具有强大的后台计算服务做支撑;而本平台囿于现阶段在公有云上的投入,可供调用的计算服务有限,因此在计算资源上与GEE 存在差距,导致目前本平台的计算时间比GEE稍长。

6.2 计算结果的对比

为进一步比较本平台与GEE 的计算结果,以北京市为研究区,将两个平台2020年生长季NDVI的计算结果均以30 m 分辨率导出,GEE 的导出任务执行时间为6 min,而本平台则需9 min。计算结果的空间分布分别如图4(a)、图4(b)所示,二者差值如图4(c)所示。

图4 2020年北京市生长季NDVI均值空间分布Fig.4 The spatial distribution of mean NDVI in Beijing in 2020

从空间分布上看,本平台计算结果与GEE 在空间分布上趋势一致,最大最小值也较为接近;在大部分区域,二值差值较小,仅在建筑密集区差值波动较大。造成这种现象的原因主要有两个:

(1)两个平台存储Landsat 8 TOA 时采用的数据类型不同。GEE 采用的是Float32 数据类型,而本平台为减少存储量及方便数据压缩,采用的是Int16 类型(比例因子为0.0001)。数据类型的不同导致同一像素的数据精度不同,由波段运算得到的结果存在差别,但由图4可以看出,这种细微差别对计算结果的空间分布趋势未造成较大影响。

(2)两个平台导出的数据在相同位置处存在像素错位。本平台在内部统一采用Web Mercator(EPSG:3857)投影,在导出时,根据前端设置的分辨率,对导出数据最接近该分辨率的瓦片级别进行重采样,然后进行导出。在GEE 中可对导出的数据进行坐标系设置,默认为WGS1984(EPSG:4326)地理坐标系,当将导出分辨率设置为30 m时,在此坐标系下实际导出的数据分辨率比30 m要大(0.00026949459°≈33.78523056294 m);当设置为EPSG:3857时,实际导出的数据分辨率为30 m。但由于重采样的原因,两个平台导出的数据在相同位置处存在错位,像素值也不相同。这种错位在建筑区比较明显(图4(c)),原因是建筑区像素间值差别较大,错位带来的影响也就大;而在边远山区,下垫面比较均一,像素位置不重合带来的影响较小。

分别统计两个平台导出结果及二者差值的直方图,结果如图5所示。可以看出两个平台导出结果的直方图分布趋势比较一致,分别有67.87%(本平台)和67.72%(GEE)的值分布在(0.48,0.77)。从两个平台计算结果差值的直方图(图5(c))上可以看出,95.33%的值都集中在(-0.13,0.13),因此从整体上看,本平台的计算结果较为可信。

图5 2020年北京市生长季NDVI均值空间分布的直方图Fig.5 The histogram of spatial distribution of mean NDVI in Beijing in 2020

此外,在导出时间方面,由于两个平台导出文件的数据类型并不相同,本平台默认导出的类型是Float64 类型,GEE 是Float32 类型。理论上Float64 类型占用的空间是Float32 的2 倍,但由于本平台未对导出数据进行压缩,实际数据大小约为GEE 的4 倍。因此除服务器资源的限制外,本平台导出的文件较大也会导致导出时间延长。

7 结论

在遥感大数据时代背景下,基于共享、开放的中国自主遥感云计算平台PIE-Engine Studio 的研究与开发,将有助于推进中国遥感云计算平台的进展,提升国际影响力。与国外相比,目前中国的遥感云计算平台尚处于起步阶段,在数据、计算资源、算子、应用领域及智能化等方面尚存在不足,未来会进一步加大公有云的投入,扩充计算资源;继续研发新的算子,完善平台功能;持续入库卫星数据,丰富数据资源;加强院校合作,拓展应用领域;融合深度学习技术,提高智能化水平。但将国产卫星数据纳入遥感云计算平台,会让更多的用户参与和使用中国数据,推动国产卫星数据在云计算平台上的应用,在国内地球科学领域研究中将发挥重要作用,使得中国遥感云计算平台具有独特优势。随着云计算技术的发展以及人类进一步认识地球的需要,遥感云计算平台将得到更多的应用和发展,为更深入理解地学规律,实现人类社会可持续发展提供强大的科学支撑。

猜你喜欢
算子计算结果分布式
居民分布式储能系统对电网削峰填谷效果分析
Domestication or Foreignization:A Cultural Choice
基于Paxos的分布式一致性算法的实现与优化
QK空间上的叠加算子
趣味选路
扇面等式
求离散型随机变量的分布列的几种思维方式
逼近论中的收敛性估计
谈数据的变化对方差、标准差的影响