一种基于云端的遥感产品生产算法的模型创建方法及装置转让专利

申请号 : CN202310772877.1

文献号 : CN116501304B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 赵利民聂云峰李家国陈兴峰刘军

申请人 : 中国科学院空天信息创新研究院

摘要 :

本发明提供一种基于云端的遥感产品生产算法的模型创建方法及装置。首先,定义S模型,包括S模型7种实体中的一种或多种;其次,利用S模型对遥感算法包括基础共性算法和模型算法进行算法标准化语义表达、粒度性划分和语义装配;再次,利用所提出的S模型对遥感算法进行算法知识包的语义构造和装配,形成遥感算法知识包文件的物理实体,支持在云端环境进行算法和数据迁移;最后,给出算法知识包文件的构造装置,通过该装置和系统对算法知识包进行创建、验证、装配、注册、注入和复用,实现复杂计算建模,并保持过程输入、输出的完整性,提供解释计算环境,提高算法模块的可移植性,提高理解和表达复杂遥感计算任务过程的效率。

权利要求 :

1.一种基于云端的遥感产品生产算法的模型创建方法,其特征在于,包括以下步骤:

步骤一,根据待建模的遥感产品生产算法的结构逻辑,结合S模型创建方法,定义和描述待建模的遥感产品生产算法的以下实体:算法知识包、计算过程、计算步骤、空间算子、基础算子、模型算子和算法执行实体;

步骤二,对步骤一中定义和描述的实体及其语义关系进行上下文语义推断和语法合规性检查,确保上述实体符合S模型创建要求;

步骤三,对步骤二中检查合规的实体进行语义装配,形成算法知识包规格文件,构建算法知识包规格文件的内部目录结构并填充相应的内容;

步骤四,将算法知识包规格文件上传到云端算法知识包数据库,进行注册和发布,形成云端S模型解释器可全局发现的算法知识包可运行实例,云端S模型解释器能够通过算法知识包的语义标识符对算法知识包可运行实例和算法知识包可运行实例包含的计算过程进行检索和下载;

步骤五,将待处理输入数据及运行配置信息注入算法知识包规格文件,生成算法知识包实例文件,其中,输入数据是遥感数据;

步骤六,云端S模型解释器读取并解析算法知识包实例文件中的算法知识包相关定义,根据获取的相关数据创建算法知识包实例和计算过程实例,进行数据参数绑定并驱动执行;

步骤一中,根据待建模的遥感产品生产算法的结构逻辑,首先创建最顶层的算法知识包实体及其原型定义文件,并在算法知识包原型定义文件中填充算法知识包语义标识符、语义描述和定义算法知识包全局变量;其次,创建一个或多个计算过程实体及其对应的计算过程定义文件,并在计算过程定义文件中填充计算过程内部语义标识符、语义描述和定义计算过程的输入参数和输出参数;接着,在计算过程定义文件中创建一个或多个计算步骤实体,包括:在计算步骤实体中填充其所引用的空间算子的全局语义标识符;填写所引用的空间算子的各个输入参数及其对应的运行时的实参值,其中空间算子包括基础算子和模型算子。

2.根据权利要求1所述的方法,其特征在于,步骤二具体包括以下步骤:

①对算法知识包实体的合规性进行检查,包括:检查算法知识包语义标识符是否存在冲突,确保其唯一性;检查算法知识包的空间算子中的全局语义标识符是否与对应的计算过程实体的内部语义标识符一致;检查算法知识包的全局变量的名称、类型和变量值是否符合S模型创建要求;

②对计算过程实体的合规性进行检查,包括:检查计算过程内部语义标识符是否存在冲突,确保其在算法知识包内部的唯一性;检查计算过程实体定义的输入参数列表和输出参数列表中每个参数的名称、类型、缺省值和语义描述是否符合S模型创建要求;检查计算过程实体内部定义的各个计算步骤之间的输入和输出参数的引用关系,推断各个计算步骤之间是否存在依赖关系,以及计算步骤之间是否存在循环依赖问题;

③对计算过程实体包含的各个计算步骤实体的合规性进行检查,包括:检查计算步骤所引用的空间算子的全局语义标识符是否存在;根据所引用空间算子的全局语义标识符获取空间算子的原型定义;根据空间算子原型定义,检查计算步骤的输入参数列表和输出参数列表中的每个参数的名称与空间算子的输入和输出参数的名称是否一致;根据空间算子原型定义,检查计算步骤的输入参数列表和输出参数列表中的参数数量与空间算子的输入和输出参数的数量是否一致;根据空间算子原型定义,检查计算步骤的输入参数列表和输出参数列表中的参数是否存在于空间算子原型定义中,并找出计算步骤实体缺失的参数;

根据空间算子原型定义,检查计算步骤的输入参数列表中每个参数的实参值是否有效,计算步骤的实参值来源于其他计算步骤的输出实参值、直接量、表达式变量、计算过程的输入参数或算法知识包中定义的全局变量;根据空间算子原型定义,检查计算步骤的输出参数列表中每个文件型输出参数的值是否有效。

3.根据权利要求2所述的方法,其特征在于,步骤三具体包括以下步骤:

①将在步骤一中创建的算法知识包原型定义文件拷贝到算法知识包压缩文件的根目录,并在算法知识包原型定义文件中登记算法知识包压缩文件的内部目录结构,内部目录结构包括:计算过程目录、输入数据目录、输出结果目录、算法程序目录和说明文档目录;

②在算法知识包的根目录下建立一个计算过程目录,该目录用于存储算法知识包中定义的所有计算过程定义文件;

③在算法知识包的根目录下建立一个输入数据目录,该目录用于存储算法知识包中计算过程在运行时所需要的各类输入数据;

④在算法知识包的根目录下建立一个输出结果目录,该目录用于存储算法知识包中计算过程及空间算子在运行时所产生的各类输出数据;

⑤在算法知识包的根目录下包含一个算法程序目录,该目录用于存储可执行算法程序及其接口文件;

⑥在算法知识包的根目录下包含一个说明文档目录,该目录用于存储知识包的说明文档、使用手册、视频教程。

4.根据权利要求3所述的方法,其特征在于,步骤四具体包括以下步骤:

①将算法知识包规格文件上传到云端算法知识包数据库,以算法知识包语义标识符为键,以算法知识包规格文件为值,根据算法知识包语义描述信息建立算法知识包及空间算子注册表;

②云端S模型解释器在运行算法知识包时,如果发现存在空间算子缺失,则根据所引用空间算子的全局语义标识符,自动从云端知识包数据库下载所需空间算子对应的算法知识包规格文件,并缓存在S模型解释器本地。

5.根据权利要求4所述的方法,其特征在于,步骤五具体包括以下步骤:

①选择要运行的算法知识包规格文件和待处理的输入数据,建立算法知识包全局变量及各个计算过程的输入参数各形参与输入数据各实参之间的映射关系,生成算法知识包运行配置信息;

②读取算法知识包规格文件压缩文件根目录下的算法知识包原型定义文件,将算法知识包运行配置信息写入算法知识包原型定义文件,将输入数据存入算法知识包规格文件的输入数据目录,生成算法知识包实例文件。

6.根据权利要求5所述的方法,其特征在于,步骤六具体包括以下步骤:

①云端S模型解释器对算法知识包压缩文件进行解压缩,读取并解析算法知识包实例中的算法知识包原型定义文件,提取算法知识包内容组织数据、运行配置数据和全局变量;

②云端S模型解释器根据算法知识包内容组织数据,从计算过程目录依次读取计算过程定义文件,为每个计算过程定义文件创建对应的计算过程实例及其内部计算步骤、空间算子;

③云端S模型解释器结合运行配置数据和全局变量,完成计算过程实例的输入参数各形参与输入数据各实参的绑定;

④云端S模型解释器按序遍历算法知识包实例文件中的待运行计算过程实例,对每个计算过程实例内部的计算步骤进行遍历,根据计算步骤之间的依赖关系对计算步骤进行分组和定序,形成一系列可并行调度执行的计算步骤集合;

⑤云端S模型解释器按序遍历计算步骤集合,为每个计算步骤集合创建一个执行线程并在线程内部调用计算步骤所引用的空间算子的接口程序;

⑥算法知识包实例运行结束后,云端S模型解释器收容所有计算过程实例的输出结果并存入算法知识包实例文件的输出结果目录。

7.一种基于云端的遥感产品生产算法的模型创建装置,其特征在于,包括:

①创建模块;根据待建模的遥感产品生产算法的结构逻辑,结合S模型创建方法,定义和描述待建模的遥感产品生产算法的以下实体:算法知识包、计算过程、计算步骤、空间算子、基础算子、模型算子和算法执行实体;

②验证模块,对上述定义和描述的实体及实体之间的语义关系进行上下文语义推断和语法合规性检查,确保上述实体符合S模型创建要求;

③装配模块,对检查合规的实体进行语义装配,形成算法知识包规格文件,构建算法知识包文件内部目录结构并填充相应的内容;

④注册模块,将算法知识包规格文件上传到云端算法知识包数据库,进行注册和发布,形成云端S模型解释器可全局发现的算法知识包可运行实例,云端S模型解释器能够通过算法知识包的语义标识符对算法知识包可运行实例和算法知识包可运行实例包含的计算过程进行检索和下载;

⑤注入模块,将待处理输入数据及运行配置信息注入算法知识包规格文件,生成算法知识包实例文件,其中,输入数据是遥感数据;

⑥解释模块,云端S模型解释器读取并解析算法知识包实例文件中的算法知识包相关定义,根据获取的相关数据创建算法知识包实例和计算过程实例,进行数据参数绑定并驱动执行;

步骤一中,根据待建模的遥感产品生产算法的结构逻辑,首先创建最顶层的算法知识包实体及其原型定义文件,并在算法知识包原型定义文件中填充算法知识包语义标识符、语义描述和定义算法知识包全局变量;其次,创建一个或多个计算过程实体及其对应的计算过程定义文件,并在计算过程定义文件中填充计算过程内部语义标识符、语义描述和定义计算过程的输入参数和输出参数;接着,在计算过程定义文件中创建一个或多个计算步骤实体,包括:在计算步骤实体中填充其所引用的空间算子的全局语义标识符;填写所引用的空间算子的各个输入参数及其对应的运行时的实参值,其中空间算子包括基础算子和模型算子。

说明书 :

一种基于云端的遥感产品生产算法的模型创建方法及装置

技术领域

[0001] 本发明属于遥感算法治理技术领域,尤其涉及一种基于云端的遥感产品生产算法的模型创建方法及装置。

背景技术

[0002] 全球卫星遥感生产的海量遥感产品,在服务地球系统科学研究和国家战略等方面发挥了巨大效能。面对持续增长的应用需求,为更好发挥遥感产品服务国家经济社会的功能和价值,迫切需要进一步提高遥感产品生产的效率和质量。
[0003] 遥感产品生产算法包括辐射校正、几何校正、影像镶嵌、波段配准、投影变换、像元尺度转换及波段计算等基础共性算法和集成各种基础算法与物理模型的复杂模型算法等两类算法。遥感产品生产算法的计算流程十分复杂,目前尚未有统一的模型对遥感产品生产算法进行统一描述和封装并执行。
[0004] 长期以来,在遥感产品生产、应用部门和广大遥感用户的持续努力下,产生了大量具有应用价值的遥感产品生产算法,这些算法往往与特定的卫星和载荷相关,使用IDL、Python、C++、Fortran、C、JAVA等不同编程语言进行实现,运行环境多样且复杂,导致算法的可共享性、可移植性和可复用性较差,不利于遥感领域算法和模型的共享与传播,对遥感产品生产的业务化运行造成了巨大挑战。因此,如何对遥感算法进行有效治理成为遥感应用领域亟待解决的关键技术难题。
[0005] 现有遥感算法治理存在以下问题:
[0006] (1)算法接口标准化缺失
[0007] 各种遥感算法和模型的开发语言各异,接口形式和调用方式不同,算法的运行环境多样,缺乏统一的算法描述标准。
[0008] (2)算法粒度划分不合理
[0009] 遥感算法往往根据应用需求进行实现,部分算法功能单一,而部分大型算法则包含大量重复共性功能,且上述共性功能往往由不同用户采用不同编程语言进行实现,性能差异很大,一方面影响算法的稳定性,另一方面导致相似功能的重复编码。
[0010] (3)算法建模缺乏语义表达
[0011] 大型算法可借助计算流程建模工具,通过组合若干细粒度算法予以实现,但由于现有可视化建模工具缺乏语义组织和语义装配能力,一方面导致算法建模效率低下,另一方面导致复杂算法模型难以理解和复用,从而形成知识壁垒。
[0012] (4)计算效率低
[0013] 大型遥感产品生产算法往往涉及几十甚至上百个计算步骤,因而粒度较大,此外由于大型算法缺乏良好的语义构造,进一步限制了算法在云边环境下的迁移能力,因而难以有效协同多个计算节点并行执行计算任务,从而导致大型遥感算法计算效率较低。

发明内容

[0014] 为解决上述问题,本发明提出一种基于云端的遥感产品生产算法的模型创建方法及装置。其中,一种基于云端的遥感产品生产算法的模型创建方法,具体包括以下步骤:
[0015] 步骤一,根据待建模的遥感产品生产算法的结构逻辑,结合S模型创建方法,定义和描述待建模的遥感产品生产算法的以下一种或多种实体:算法知识包、计算过程、计算步骤、空间算子、基础算子、模型算子和算法执行实体;
[0016] 步骤二,对步骤一中定义和描述的实体及其语义关系进行上下文语义推断和语法合规性检查,确保上述实体符合S模型创建要求;
[0017] 步骤三,对步骤二中检查合规的实体进行语义装配,形成算法知识包规格文件,构建算法知识包规格文件的内部目录结构并填充相应的内容;
[0018] 步骤四,将算法知识包规格文件上传到云端算法知识包数据库,进行注册和发布,形成云端S模型解释器可全局发现的算法知识包可运行实例,云端S模型解释器能够通过算法知识包的语义标识符对算法知识包可运行实例和算法知识包可运行实例包含的计算过程进行检索和下载;
[0019] 步骤五,将待处理输入数据及运行配置信息注入算法知识包规格文件,生成算法知识包实例文件,其中,输入数据是遥感数据;
[0020] 步骤六,云端S模型解释器读取并解析算法知识包实例文件中的算法知识包相关定义,根据获取的相关数据创建算法知识包实例和计算过程实例,进行数据参数绑定并驱动执行。
[0021] 进一步,步骤一中,根据待建模的遥感产品生产算法的结构逻辑,首先创建最顶层的算法知识包实体及其原型定义文件,并在算法知识包原型定义文件中填充算法知识包语义标识符、语义描述和定义算法知识包全局变量;其次,创建一个或多个计算过程实体及其对应的计算过程定义文件,并在计算过程定义文件中填充计算过程内部语义标识符、语义描述和定义计算过程的输入参数和输出参数;接着,在计算过程定义文件创建一个或多个计算步骤实体,包括:在计算步骤实体中填充其所引用的空间算子的全局语义标识符;填写所引用的空间算子的各个输入参数及其对应的运行时的实参值,其中空间算子包括基础算子和模型算子。
[0022] 进一步,步骤二具体包括以下步骤:
[0023] ①对算法知识包实体的合规性进行检查,包括:检查算法知识包语义标识符是否存在冲突,确保其唯一性;检查算法知识包的空间算子中的全局语义标识符是否与对应的计算过程实体的内部语义标识符一致;检查算法知识包的全局变量的名称、类型和变量值是否符合S模型创建方法;
[0024] ②对计算过程实体的合规性进行检查,包括:检查计算过程内部语义标识符是否存在冲突,确保其在算法知识包内部的唯一性;检查计算过程实体定义的输入参数列表和输出参数列表中每个参数的名称、类型、缺省值和语义描述是否符合S模型创建方法;检查计算过程实体内部定义的各个计算步骤之间的输入和输出参数的引用关系,推断各个计算步骤之间是否存在依赖关系,以及步骤之间是否存在循环依赖问题;
[0025] ③对计算过程实体包含的各个计算步骤实体的合规性进行检查,包括:检查计算步骤所引用的空间算子的全局语义标识符是否存在;根据所引用空间算子的全局语义标识符获取空间算子的原型定义;根据空间算子原型定义,检查计算步骤的输入参数列表和输出参数列表中的每个参数的名称与空间算子的输入和输出参数的名称是否一致;根据空间算子原型定义,检查计算步骤的输入参数列表和输出参数列表中的参数数量与空间算子的输入和输出参数的数量是否一致;根据空间算子原型定义,检查计算步骤的输入参数列表和输出参数列表中的参数是否存在于空间算子原型定义中,找出计算步骤实体缺失的参数;根据空间算子原型定义,检查计算步骤的输入参数列表中每个参数的实参值是否有效,计算步骤的实参值来源于其他计算步骤的输出实参值、直接量、表达式变量、计算过程的输入参数或算法知识包中定义的全局变量;根据空间算子原型定义,检查计算步骤的输出参数列表中每个文件型输出参数的值是否有效。
[0026] 进一步,步骤三具体包括以下步骤:
[0027] ①将在步骤一中创建的算法知识包原型定义文件拷贝到算法知识包压缩文件的根目录,并在算法知识包原型定义文件中登记算法知识包压缩文件的内部目录结构,目录结构包括:计算过程目录、输入数据目录、输出结果目录、算法程序目录和说明文档目录;
[0028] ②在算法知识包的根目录下建立一个计算过程目录,该目录用于存储算法知识包中定义的所有计算过程定义文件;
[0029] ③在算法知识包的根目录下建立一个输入数据目录,该目录用于存储算法知识包中计算过程在运行时所需要的各类输入数据;
[0030] ④在算法知识包的根目录下建立一个输出结果目录,该目录用于存储算法知识包中计算过程及空间算子在运行时所产生的各类输出数据;
[0031] ⑤在算法知识包的根目录下包含一个算法程序目录,该目录用于存储可执行算法程序及其接口文件;
[0032] ⑥在算法知识包的根目录下包含一个说明文档目录,该目录用于存储知识包的说明文档、使用手册、视频教程。
[0033] 进一步,步骤四具体包括以下步骤:
[0034] ①将算法知识包规格文件上传到云端算法知识包数据库,以算法知识包语义标识符为键,以算法知识包规格文件为值,根据算法知识包语义描述信息建立算法知识包及空间算子注册表;
[0035] ②云端S模型解释器在运行算法知识包时,如果发现存在空间算子缺失,则根据所引用空间算子的全局语义标识符,自动从云端知识包数据库下载所需空间算子对应的算法知识包规格文件,并缓存在S模型解释器本地。
[0036] 进一步,步骤五具体包括以下步骤:
[0037] ①选择要运行的算法知识包规格文件和待处理的输入数据,建立算法知识包全局变量及各个计算过程的输入参数各形参与输入数据各实参之间的映射关系,生成算法知识包运行配置信息;
[0038] ②读取算法知识包规格文件压缩文件根目录下的算法知识包原型定义文件,将算法知识包运行配置信息写入算法知识包原型定义文件,将输入数据存入知识包规格文件的输入数据目录,生成算法知识包实例文件。
[0039] 进一步,步骤六具体包括以下步骤:
[0040] ①云端S模型解释器对算法知识包压缩文件进行解压缩,读取并解析算法知识包实例中的算法知识包原型定义文件,提取算法知识包内容组织数据、运行配置数据和全局变量;
[0041] ②云端S模型解释器根据算法知识包内容组织数据,从计算过程目录依次读取计算过程定义文件,为每个计算过程定义文件创建对应的计算过程实例及其内部计算步骤、空间算子;
[0042] ③云端S模型解释器结合运行配置数据和全局变量,完成计算过程实例的输入参数各形参与输入数据各实参的绑定;
[0043] ④云端S模型解释器按序遍历算法知识包实例文件中的待运行计算过程实例,对每个计算过程实例内部的计算步骤进行遍历,根据计算步骤之间的依赖关系对计算步骤进行分组和定序,形成一系列可并行调度执行的计算步骤集合;
[0044] ⑤云端S模型解释器按序遍历计算步骤集合,为每个计算步骤集合创建一个执行线程并在线程内部调用计算步骤所引用的空间算子的接口程序;
[0045] ⑥算法知识包实例运行结束后,云端S模型解释器收容所有计算过程实例的输出结果并存入算法知识包实例文件的输出结果目录。
[0046] 同时,本发明还提出一种基于云端的遥感产品生产算法的模型创建装置,包括:
[0047] ①创建模块;根据待建模的遥感产品生产算法的结构逻辑,结合S模型创建方法,定义和描述待建模的遥感产品生产算法的以下一种或多种实体:算法知识包、计算过程、计算步骤、空间算子、基础算子、模型算子和算法执行实体;
[0048] ②验证模块,对上述定义和描述的实体及实体之间的语义关系进行上下文语义推断和语法合规性检查,确保上述实体符合S模型创建要求;
[0049] ③装配模块,对检查合规的核心实体进行语义装配,形成算法知识包规格文件,构建算法知识包文件内部目录结构并填充相应的内容;
[0050] ④注册模块,将算法知识包规格文件上传到云端算法知识包数据库,进行注册和发布,形成云端S模型解释器可全局发现的算法知识包可运行实例,云端S模型解释器能够通过算法知识包的语义标识符对算法知识包可运行实例和算法知识包可运行实例包含的计算过程进行检索和下载;
[0051] ⑤注入模块,将待处理输入数据及运行配置信息注入算法知识包规格文件,生成算法知识包实例文件,其中,输入数据是遥感数据;
[0052] ⑥解释模块,云端S模型解释器读取并解析算法知识包实例文件中的算法知识包相关定义,根据获取的相关数据创建算法知识包实例和计算过程实例,进行数据参数绑定并驱动执行。
[0053] 本发明具有以下有益效果:
[0054] (1)本发明提出的S模型利用算法知识包、计算过程、计算步骤、空间算子、基础算子、模型算子和算法执行实体等7个核心语法构造单元的语义标识及其关联规则构成的知识网络,等效表示算法处理流程的静态和动态特性,结合算法模型参数的推理、假设、近似和边界条件等,实现基于语义知识的复杂计算过程建模,并保持过程输入、输出的完整性,为过程性知识的设计、表示和驱动提供解释计算环境,提高理解和表达复杂遥感计算任务过程的效率。并且共性功能可以由同样的计算过程实体或者空间算子以及基础算子实现,避免重复编码,提供了通用性,并提供统一标准化接口。
[0055] (2)本发明提出的遥感算法知识包,可有效支持遥感算法的粒度性划分、任务装配和解释驱动,遵循“贴近数据,移动计算”原则,将复杂遥感算法按上下文语义分片和重构,形成一系列相对独立、高度内聚,具备上下文语义感知能力的遥感算法知识包的集合,并通过将算法知识包规格文件上传到云端算法知识包数据库,进行注册和发布,形成云端S模型解释器可全局发现的知识包,形成可共享的计算过程以及空间算子或者基础算子,用户通过语义标识符可对现有的计算过程以及空间算子或者基础算子进行检索和下载,可以重复使用。同时,云端的S模型解释器采用流水线编排技术将遥感算法知识包集合映射为可移动、可并行调度执行的知识包流,从而加速遥感产品生产任务在云端和多边环境下的协同执行。
[0056] (3)本发明提出的遥感算法知识包具有良好的粒度、可移动性和上下文语义感知能力,便于在云边和多边缘节点间无缝迁移和协同计算。

附图说明

[0057] 图1为S模型构造;
[0058] 图2为算法知识包语法构造;
[0059] 图3为计算过程语法构造;
[0060] 图4为计算步骤语法构造;
[0061] 图5为空间算子语法构造;
[0062] 图6为算法知识包文件规格;
[0063] 图7为一种基于云端的遥感产品生产算法的模型创建方法流程图。

具体实施方式

[0064] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0065] 首先,定义S模型,包括S模型保留关键词、建模方法和基本参数类型;其次,利用所提出的S模型对遥感算法包括基础共性算法和模型算法进行算法标准化语义表达、粒度性划分和语义装配;再次,利用所提出的S模型对遥感算法进行算法知识包的语义构造和装配,形成遥感算法知识包文件的物理实体,支持在云端环境进行算法和数据迁移;最后,给出算法知识包文件的构造装置与系统,通过该装置和系统对算法知识包进行创建、验证、装配、注册、注入和复用等。
[0066] (1)S模型
[0067] 为支持遥感算法的语义标识、粒度性划分、语义装配和便于在不同计算环境下迁移和复用,本发明提出一种语义支持的遥感产品生产任务描述方法,提供一种面向遥感产品生产任务建模的领域特定模型。S模型构造如图1所示。
[0068] S模型的核心特征在于是一种实现面向遥感产品生产任务的建模构造,通过一系列可扩展语义词汇和特定语法构造来描述各种复杂遥感分析模型和遥感产品生产任务。
[0069] S模型的特征在于提供了保留关键词集合,包括算法知识包定义、计算过程定义、计算步骤定义、空间算子引用、语义标识、输入参数声明、输出结果声明、实体描述、语义标签、条件分支和循环等核心关键词。
[0070] S模型的特征在于提供了基本参数类型,包括栅格、矢量、整型、浮点、字符串、布尔、枚举、数组等8个核心参数类型。
[0071] S模型的特征在于通过上述自定义保留关键词和参数类型,用户可以依据算法计算流程的业务逻辑,定义相应的S模型基本语法构造单元,如图1所示,通过语法构造单元的语义标识及其关联规则构成的知识网络,实现基于语义知识的复杂计算过程建模,提高理解和表达复杂遥感计算任务过程的效率。
[0072] S模型的特征在于S模型基本语法构造单元,包括:算法知识包、计算过程、计算步骤、空间算子、基础算子、模型算子和算法执行实体等7个核心语法构造单元。S模型的基本构造为:
[0073] →<1个算法知识包>→
[0074] 算法知识包的特征在于:①算法知识包是一个由S模型解释器解释运行的算法知识包对象;②算法知识包是一个自我描述的可执行实体,是遥感数据和算法模型的结合体,包含:一个使用S模型定义的算法知识包原型定义文件、一个或多个使用S模型定义的计算过程文件、算法知识包的作者提供的算法执行实体及其接口文件、算法使用说明书、输入数据、计算结果和发布的可供外部用户调用或引用的公开空间算子集等内容;③算法知识包是S模型解释器解释执行的基本单位,S模型解释器通过解析算法知识包原型定义文件,构造算法知识包实例对象并解释执行;④算法知识包标识符用于唯一标识某一算法知识包,为了避免知识包标识符冲突,S模型采用“知识包创建者域名.算法知识包名”的标识模式;⑤算法知识包公开发布后作为可复用算法的提供者,其内部定义的所有计算过程均可成为可供外部用户调用的空间算子;⑥外部用户可通过“算法知识包标识符:计算过程内部标识符”构成的空间算子全局语义标识符调用算法知识包对外发布的公开空间算子集中的任意空间算子;⑦知识包公开的空间算子集为一列表,列表中存储的每个元素项为拟公开的计算过程的语义标识符。算法知识包语法构造如图2所示。
[0075] 计算过程的特征在于:①计算过程是算法知识包中使用S模型定义的可执行模型算法实体,一个算法知识包可以定义多个计算过程;②计算过程的语义标识由“算法知识包标识符:计算过程内部标识符由两部分组成,如“sys:buffer,”其中“sys”为算法知识包标识符,“buffer”为计算过程所在的算法知识包中定义的计算过程内部标识符;③计算过程可通过算法知识包发布后成为一个可供外部用户调用的空间算子,外部用户可通过引用该空间算子的全局语义标识进行计算过程的复用,并且可以复用到其他算法知识包中的计算过程定义;④计算过程必须声明其输入参数列表和输出参数列表,包括每个参数的名称、类型、描述和可选的参数默认值;⑤计算过程包括若干个计算步骤,每个计算步骤必须引用一个空间算子,既可以通过空间算子的全局语义标识进行引用,也可通过用户自定义本地标识符引用算法知识包本地定义的空间算子;⑥计算过程中定义的计算步骤之间的相互关系由参数语义推断建立计算步骤之间的依赖关系;⑦计算过程中的计算步骤定义从整体上看是顺序执行的,但也可由S模型提供的保留关键词表达条件分支和循环等执行结构;⑧为支持计算的迁移性,计算过程在执行时,依赖于算法知识包提供输入数据资源,即从算法知识包中获取要计算的数据,而计算过程的计算结果也存放在相应的算法知识包实体中。计算过程的语法构造如图3所示。
[0076] 计算步骤的特征在于:①计算步骤是计算过程中使用S模型定义的可执行算法步骤,是一种函数语句,一个计算过程可以定义多个计算步骤;②每个计算步骤必须引用一个空间算子以完成某个空间计算任务,既可以通过空间算子的全局语义标识进行引用,也可通过内部标识符引用算法知识包本地定义的空间算子;③不同的计算步骤可以引用相同的空间算子;④计算步骤必须声明其输入实参列表和输出实参列表,计算步骤的输入实参的值可来源于所属计算过程中其他计算步骤的输出实参值、直接量、表达式变量、计算过程的输入参数或算法知识包中定义的全局变量;⑤计算步骤声明的输入实参列表和输出实参列表中的参数名必须与所引用的空间算子声明的输入和输出参数名称保持一致,但参数顺序和参数类型由S模型解释器自动推断得到;⑥计算步骤之间的依赖关系,根据输入和输出参数之间的引用关系由S模型解释器自动推断得到。计算步骤的语法构造如图4所示。
[0077] 空间算子的特征在于:①空间算子是对任意遥感处理算法的语义抽象,本质上是对遥感影像及其关联数据进行某种算法任务流程处理,得到一个或多个输出结果;②空间算子具有可执行的特性,从实现的角度分为基础算子和模型算子两类算子;③空间算子定义了基础算子和模型算子的共同接口,基础算子和模型算子则具体实现了空间算子提供的接口;④空间算子的接口包括空间算子全局语义标识、空间算子语义描述、输入参数列表和输出参数列表等4项核心组成部分;⑤空间算子具有可复用性,其引用方式为通过“算法知识包标识符:空间算子内部标识符”构成的空间算子全局语义标识符进行空间算子的复用;⑥空间算子必须声明其输入参数列表和输出参数列表,包括每个参数的名称、类型、描述和可选的参数默认值。空间算子的语法构造如图5所示。
[0078] 基础算子的特征在于:①基础算子具有原子特性,是对遥感算法中共性功能的抽象和封装,是S模型解释器调度执行的最小可执行单元;②基础算子具有可执行特性,包括两个主要组成部分,算法执行实体及其算法接口文件;③算法执行实体是遥感算法的物理实体,是一个可执行程序,可以由任意编程语言进行实现;④算法接口文件是为了屏蔽不同编程语言而提供的一个遵循S模型空间算子接口规范的可执行脚本,S模型解释器通过驱动该接口文件最终实现对遥感算法物理实体的调用;⑤基础算子是具有最小粒度的空间算子,可通过与其他空间算子进行语义组织和复用,构成更加复杂的粗粒度空间算子,其引用或复用方式与空间算子相同。
[0079] 模型算子的特征在于:①模型算子具有复合特性,是通过与其他基础算子或模型算子进行语义组织和复用,形成的更加复杂的粗粒度空间算子;②模型算子是算法知识包中的计算过程通过算法知识包发布而得到的可供外部用户复用的空间算子;③模型算子是粒度较大的空间算子,可通过与其他空间算子进行语义组织和复用,构成更加复杂的粗粒度空间算子,其引用或复用方式与空间算子相同。
[0080] (2)遥感算法知识包文件规格与介质
[0081] 遥感算法知识包是S模型的最顶层语法构造单元,是S模型解释器解释执行的基本单位。S模型解释器通过解析算法知识包原型定义文件,构造算法知识包实例对象并解释执行。作为S模型解释器的输入,遥感算法知识包文件是一个具有特定规格的可移动、可共享的磁盘压缩文件。遥感算法知识包文件规格如图6所示。
[0082] 遥感算法知识包文件规格特征在于:①算法知识包的根目录下包含一个知识包原型定义文件,该文件定义了算法知识包的关键描述信息及知识包内容的组织结构,S模型解释器通过读取并解析该文件,根据获取的元数据构造知识包的可运行实例;②算法知识包的根目录下包含一个计算过程目录,该目录用于存储算法知识包中定义的所有S模型计算过程定义文件;③算法知识包的根目录下包含一个数据输入目录,该目录用于存储知识包中计算过程在运行时所需要的各类输入数据;④算法知识包的根目录下包含一个输出结果目录,该目录用于存储知识包中计算过程在运行时所产生的各类输出数据;⑤可选的,算法知识包的根目录下包含一个算法程序目录,该目录用于存储知识包创建者提供的可执行算法程序及其接口文件;⑥可选的,算法知识包的根目录下包含一个说明文档目录,该目录用于存储知识包的说明文档、使用手册、视频教程等文件。
[0083] (3)遥感算法知识包创建装置
[0084] 遥感算法知识包创建装置,包括:①创建模块,其特征在于根据遥感生产算法的结构逻辑,结合S模型创建方法,定义算法知识包、计算过程、计算步骤、空间算子、基础算子、模型算子和算法执行实体等核心实体;②验证模块,其特征在于对S模型实体及实体之间的语义关系进行上下文语义推断和语法合规性检查;③装配模块,其特征在于对创建的S模型实体、算法程序和说明文档等进行语义装配,形成算法知识包规格文件;④注册模块,其特征在于对算法知识包规格文件进行注册和发布,形成S模型解释器可全局发现的知识包可运行实例,通过语义标识符对知识包和知识包包含的计算过程进行标识和检索;⑤注入模块,其特征在于将待处理输入数据及运行配置信息注入算法知识包规格文件,生成可运行算法知识包实例;⑥解释模块,其特征在于S模型解释器读取并解析算法知识包实例中的知识包原型定义文件,根据获取的元数据创建算法知识包和计算过程等实例对象,进行数据参数绑定并驱动计算过程的执行。
[0085] 图7给出了本发明的一种基于云端的遥感产品生产算法的模型创建方法的一个实施例的流程图。所述的基于云端的遥感产品生产算法的模型创建方法,包括以下步骤:
[0086] 步骤S701,根据遥感算法的结构逻辑,结合S模型创建方法,定义和描述待建模的遥感产品生产算法的以下一种或多种实体:算法知识包、计算过程、计算步骤、空间算子、基础算子、模型算子和算法执行实体。
[0087] 在本实施例中,根据遥感生产算法的结构逻辑,首先创建最顶层的算法知识包实体及其原型定义文件,并在算法知识包定义文件中填充算法知识包语义标识符、语义描述和定义算法知识包全局变量;其次,创建一个或多个计算过程实体及其对应的计算过程定义文件,并在计算过程定义文件中填充计算过程内部语义标识符、语义描述和定义计算过程的输入参数和输出参数;接着,在计算过程定义文件创建一个或多个计算步骤实体,包括:在计算步骤实体中填充其所引用的空间算子的全局语义标识符;填写所引用空间算子的各个输入参数及其对应的运行时的实参值;可选的,填写各个文件型输出参数的输出文件名或磁盘路径。
[0088] 可选的,S模型算法知识包创建者可定义一个或多个可供本知识包内部或外部知识包调用的基础算子。创建一个基础算子,必须提供基础算子所依赖的算法执行实体并编写相应的接口文件,其中,算法执行实体包含一个接口程序文件和一个算法程序,算法程序是遥感算法的物理实体,是一个可执行程序,算法程序可以由任意编程语言进行实现;算法接口文件是为了屏蔽不同编程语言而提供的一个遵循S模型空间算子接口规范的脚本文件,S模型解释器通过驱动该接口文件最终实现对遥感算法物理实体也就是算法程序的调用。
[0089] 可选的,S模型算法知识包创建者可定义和编辑文本、视频等格式的算法说明文档,帮助算法知识包用户快速理解、掌握并使用算法知识包中公开的可复用算子集。
[0090] 可选的,S模型算法知识包创建者可提供测试用例数据,帮助算法知识包用户快速验证和学习算法知识包中公开的可复用算子集,并查看其运行结果和相关执行报告。
[0091] 步骤S702,对步骤S701中定义的实体及其语义关系进行上下文语义推断和语法合规性检查,确保上述S模型实体符合S模型创建要求。
[0092] 在本实施例中,包括以下步骤:
[0093] ①对算法知识包实体的合规性进行检查,包括:检查算法知识包语义标识符是否存在冲突,确保其唯一性;检查算法知识包声明公开的可供外部调用的空间算子集中的每个元素项是否与对应的计算过程实体的语义标识符一致;检查算法知识包声明的知识包全局变量的名称、类型和变量值是否符合S模型创建要求。
[0094] ②对计算过程实体的合规性进行检查,包括:检查计算过程内部语义标识符是否存在冲突,确保其在知识包内部的唯一性;检查计算过程实体定义的输入参数列表和输出参数列表中每个参数项的名称、类型、缺省值和语义描述是否符合S模型创建要求;检查计算过程实体内部定义的各个计算步骤之间的输入和输出参数的引用关系,推断各个计算步骤之间是否存在依赖关系,以及步骤之间是否存在循环依赖问题。
[0095] ③对计算过程实体包含的各个计算步骤实体的合规性进行检查,包括:检查计算步骤所引用的空间算子的全局语义标识符是否存在;根据所引用空间算子的全局语义标识符获取空间算子的原型定义;根据空间算子原型定义,检查计算步骤声明的输入参数列表和输出参数列表中的每个参数的名称与空间算子原型声明的输入和输出参数的名称是否一致;根据空间算子原型定义,检查计算步骤声明的输入参数列表和输出参数列表中的参数数量与空间算子原型声明的输入和输出参数的数量是否一致;根据空间算子原型定义,检查计算步骤声明的输入参数列表和输出参数列表中是否存在空间算子原型定义中声明,而计算步骤实体缺失的参数;根据空间算子原型定义,检查计算步骤声明的输入参数列表中每个参数的实参值是否有效,计算步骤的输入实参的值可来源于其他计算步骤的输出实参值、直接量、表达式变量、计算过程的输入参数或算法知识包中定义的全局变量;根据空间算子原型定义,检查计算步骤声明的输出参数列表中每个文件型输出参数的值,如文件名或磁盘路径是否有效。
[0096] ④可选的,对知识包创建者定义的基础算子的接口文件进行合规性检查。
[0097] 步骤S703,对步骤S702中检查合规的S模型实体进行语义装配,形成算法知识包规格文件。按照图6所示算法知识包文件规格,构建算法知识包文件内部目录结构并填充相应的内容,包括以下步骤:
[0098] ①将在步骤S701中创建的算法知识包原型定义文件拷贝到算法知识包压缩文件的根目录,并在算法知识包定义文件中登记知识包压缩文件的内部目录结构,目录结构包括:计算过程目录、输入数据目录、输出结果目录、算法程序目录和说明文档目录。S模型解释器通过读取知识包压缩文件根目录下的知识包原型定义文件进行解析,即可根据获取的元数据构造算法知识包顶层对象及其内部对象的可运行实例。
[0099] ②在算法知识包的根目录下建立一个计算过程目录,该目录用于存储算法知识包中定义的所有S模型计算过程定义文件。
[0100] ③在算法知识包的根目录下建立一个输入数据目录,该目录用于存储知识包中计算过程在运行时所需要的各类输入数据;可选的,知识包创建者可以在此处提供算法测试用例数据。
[0101] ④在算法知识包的根目录下建立一个输出结果目录,该目录用于存储知识包中计算过程及空间算子在运行时所产生的各类输出数据;
[0102] ⑤可选的,在算法知识包的根目录下建立一个算法程序目录,该目录用于存储算法知识包创建者提供的可执行算法程序及其接口文件;
[0103] ⑥可选的,在算法知识包的根目录下建立一个说明文档目录,该目录用于存储知识包的说明文档、使用手册、视频教程等文件。
[0104] 步骤S704,将算法知识包规格文件上传到云端算法知识包数据库,对算法知识包规格文件进行注册和发布,形成云端S模型解释器可全局发现的算法知识包可运行实例,通过语义标识符对算法知识包和知识包包含的计算过程进行检索和下载。
[0105] 在本实施例中,包括以下步骤:
[0106] ①将算法知识包规格文件上传到云端算法知识包数据库,以算法知识包全局语义标识符为键,以算法知识包规格文件为值,根据算法知识包语义描述信息建立算法知识包及空间算子注册表。
[0107] ②云端S模型解释器在运行算法知识包时,如果发现存在空间算子缺失,则根据所引用空间算子的全局标识符,自动从云端知识包数据库下载所需空间算子对应的算法知识包规格文件,并缓存在S模型解释器本地。
[0108] 步骤S705,将待处理输入数据及运行配置信息注入算法知识包规格文件,生成算法知识包实例文件,其中,输入数据是遥感数据。
[0109] 在本实施例中,包括以下步骤:
[0110] ①知识包用户选择要运行的算法知识包规格文件和待处理的输入数据,建立算法知识包全局变量及各个计算过程的输入参数等形参与输入数据等实参之间的映射关系,生成算法知识包运行配置信息;
[0111] ②读取算法知识包规格文件根目录下的知识包原型定义文件,将算法知识包运行配置信息写入知识包原型定义文件,将输入数据存入知识包规格文件的输入数据目录,生成算法知识包实例文件。
[0112] 步骤S706,云端S模型解释器读取并解析算法知识包实例文件中的相关定义,根据获取的相关数据创建算法知识包实例和计算过程实例,进行数据参数绑定并驱动计算过程的执行。
[0113] 在本实施例中,包括以下步骤:
[0114] ①云端S模型解释器对算法知识包压缩文件进行解压缩,读取并解析算法知识包实例中的知识包原型定义文件,提取算法知识包内容组织数据、运行配置数据和全局变量;
[0115] ②云端S模型解释器根据算法知识包内容组织数据,从计算过程目录依次读取计算过程定义文件,为每个计算过程定义文件创建对应的计算过程实例及其内部计算步骤、空间算子;
[0116] ③云端S模型解释器结合运行配置数据和全局变量,完成计算过程实例的输入形参与实参值的绑定;
[0117] ④云端S模型解释器按序遍历知识包实例中的待运行计算过程实例,对每个计算过程实例内部的计算步骤实体进行遍历,根据计算步骤之间的依赖关系对计算步骤进行分组和定序,形成一系列可并行调度执行的计算步骤集合。
[0118] ⑤云端S模型解释器按序遍历计算步骤集合,为每个可并行计算步骤集合创建一个执行线程并在线程内部调用计算步骤所引用的空间算子实体的接口程序;
[0119] ⑥算法知识包实例运行结束后,云端S模型解释器收容所有计算过程实例的输出结果并存入知识包实例文件的输出结果目录。
[0120] 可选的,知识包用户可在知识包定义文件的运行配置信息中指定要运行的计算过程集合。
[0121] 本申请还提供了另一种实施方式,即提供一种遥感算法知识包文件规格与介质。
[0122] 遥感算法知识包是S模型的最顶层语法构造单元,是S模型解释器解释执行的基本单位。S模型解释器通过解析算法知识包原型定义文件,构造算法知识包实例对象并解释执行。作为S模型解释器的输入,遥感算法知识包文件是一个具有特定规格的可移动、可共享的磁盘压缩文件。遥感算法知识包文件规格如图6所示。
[0123] 遥感算法知识包文件规格特征在于:①算法知识包的根目录下包含一个知识包原型定义文件,该文件定义了算法知识包的关键描述信息及知识包内容的组织结构,S模型解释器通过读取并解析该文件,根据获取的元数据构造知识包的可运行实例;②算法知识包的根目录下包含一个计算过程目录,该目录用于存储算法知识包中定义的所有S模型计算过程定义文件;③算法知识包的根目录下包含一个数据输入目录,该目录用于存储知识包中计算过程在运行时所需要的各类输入数据;④算法知识包的根目录下包含一个输出结果目录,该目录用于存储知识包中计算过程在运行时所产生的各类输出数据;⑤可选的,算法知识包的根目录下包含一个算法程序目录,该目录用于存储知识包创建者提供的可执行算法程序及其接口文件;⑥可选的,算法知识包的根目录下包含一个说明文档目录,该目录用于存储知识包的说明文档、使用手册、视频教程等文件。
[0124] 本申请还提供了另一种实施方式,即提供一种基于云端的遥感产品生产算法的模型创建装置,包括:
[0125] ①创建模块;根据待建模的遥感产品生产算法的结构逻辑,结合S模型构建方法,定义和描述待建模的遥感产品生产算法的以下一种或多种实体:算法知识包、计算过程、计算步骤、空间算子、基础算子、模型算子和算法执行实体;
[0126] ②验证模块;对定义和描述的所述实体及实体之间的语义关系进行上下文语义推断和语法合规性检查,确保上述实体符合S模型构建要求;
[0127] ③装配模块;对检查合规的实体进行语义装配,形成算法知识包规格文件,构建算法知识包文件内部目录结构并填充相应的内容;
[0128] ④注册模块;将算法知识包规格文件上传到云端算法知识包数据库,进行注册和发布,形成云端S模型解释器可全局发现的算法知识包可运行实例,云端S模型解释器能够通过算法知识包的语义标识符对算法知识包可运行实例和算法知识包可运行实例包含的计算过程进行检索和下载;
[0129] ⑤注入模块;将待处理输入数据及运行配置信息注入算法知识包规格文件,生成算法知识包实例文件,其中,输入数据是遥感数据;
[0130] ⑥解释模块;云端S模型解释器读取并解析算法知识包实例文件中的算法知识包相关定义,根据获取的输入数据创建算法知识包实例和计算过程实例,进行数据参数绑定并驱动计算过程的执行。