APP下载

卫星星座健康状态管理文档的自动生成方法①

2022-01-05李子扬李晓辉朱家佳苑馨方李传荣

计算机系统应用 2021年12期
关键词:长轴书签星座

米 琳, 李子扬, 李晓辉, 朱家佳, 窦 帅, 张 静, 苑馨方, 李传荣

1(中国科学院 空天信息创新研究院, 北京 100094)

2(中国科学院 定量遥感信息技术重点实验室, 北京 100094)

伴随低轨大型卫星星座蓬勃发展、在轨卫星数量急剧增加, 卫星星座在轨长期管理过程中需要编制大量具有严格格式要求的健康状态管理文档. 此类文档涉及多项遥测参数的查询和计算, 关键参数之间的关联错综复杂, 文档知识难以细粒度复用, 给工程技术人员带来巨大的工作量, 需要花费大量时间编制, 因此迫切需要提出一种面向卫星星座健康状态管理文档的自动生成方法, 对其进行有效管理及智能编制.

近年来, 国内外关于文档自动生成的研究也有很多, 如王兴强等[1]提出了一种电子病历共享文档的自动生成方法, 实现了XML格式的电子病历共享文档;王兵兵[2]基于Spring Boot开发框架设计与实现了某公文文档自动生成系统; 曲明成等[3]基于工作流引擎对文档生成过程中的必要操作及文档模板进行了定义,实现了电力制造企业中某些复杂计算文档的自动化生;姜鹏等[4]提出了一种基于水利云平台的防汛文档智能生成模型.

上述文档自动生成的研究成果大多基于工作人员在运行时手动输入的内容或者是经过简单的计算公式所得数据, 替换模板内预先编辑好的标签, 从而生成所需文档, 其业务逻辑较为简单, 无法实现较为繁琐的逻辑计算以及文档中图表的绘制等复杂操作步骤. 此外,当前文档自动生成成果与方法往往针对特殊应用, 通用性有限, 在应用中需要提取的数据来源相对单一、有限, 信息量不大, 无法同时解决诸如Word、Excel等多种格式文档的自动生成问题, 难以满足卫星星座在轨长期管理过程中海量数据(以中继卫星星座为例, 每年度的数据量可达数亿条)的信息提取和健康状态管理文档的自动生成需求.

实现卫星星座健康状态管理文档的自动生成, 其问题的关键是如何设计一个能够对文档进行多样式处理、可灵活编辑、结构化查询语言自定义、图表可个性化设置、支持多种文档输出格式、通用性强的文档自动生成系统. 本文提出了一种卫星星座健康状态管理文档的自动生成方法, 通过建立数据汇总文档自动生成模型, 实现了文档编制过程中的知识复用和通用内容生成, 最终建立规范有效的文档编制流程. 目前该系统已成功应用于中继卫星星座在轨运行长期管理,提升了文档质量并缩短了编制周期.

1 模型构建与算法研究

卫星星座健康状态管理文档一般是基于数据库的基础数据, 按照一定的业务规则经过复杂的计算和统计得到的数据汇总文档. 为了更直观地展示卫星星座在轨运行状态, 部分文档要求把行、列中的数据转变为更有意义的图形, 以便决策者更快地从大量数据中发现新的现象或规律. 对于不同时期同一卫星星座相同在轨运行管控任务的数据汇总文档, 在格式和样式上基本相同, 主要工作是针对特定的日期对遥测参数进行查询、统计、处理, 以及图表绘制等. 卫星星座健康状态管理文档的自动生成方法的处理流程如图1所示.

图1 卫星星座健康状态管理文档文档自动生成流程

建立文档模板, 划分常量域与变量域, 根据实际需要对其通用格式进行自定义设置, 文档模板的格式可以为 Word、Excel、PowerPoint、PDF等, 以Word为典型代表的文档模板是本文解决的主要问题. 在此基础上, 根据模板中所包含的元素, 建立一个文档描述模型, 对变量域进行具体数据的填充, 进而导出为目标格式的文档. 为了阐述的准确性, 后文中出现的文档片段均以“某卫星某次位置保持”为例.

1.1 文档自定义模板

卫星星座健康状态管理文档中包含内容相同, 格式、样式与版式一致, 并且位置固定的区域为常量域,常量域以外的区域为变量域. 常量域与变量域中的数据既可以是文字, 也可以是图片. 对文档中的变量域进行编辑, 保留常量域, 即可生成文档模板[5]. 对于格式为Word的文档模板, 本文采用书签功能以解决文档变量域的导航问题[6,7]; 对于格式为Excel的文档模板, 本文采用行列标号作为每个数据所在位置的唯一标识.对于每个变量的实际数据显示位置, 分别插入相应的书签, 可以轻松快速地定位到所在位置. 不同名称的书签固定被解释为某一业务指标, 可以进行添加、删除或者修改, 但同一篇文档模板中不可出现重复的书签名称.

为了将书签名称及对应的变量信息进行持久化存储, 本文采用了XML文件为文档变量域信息提供存取支持[8,9]. XML是W3C组织定义的计算机文档表示的标准标记元语言, 遵循清晰严格的语法, 将数据的显示样式与数据本身分离, 具有比关系模型更灵活和更强的描述能力, 因此可作为一种“数据库逻辑模型”应用于文档自动生成, 实现文档模板的可定制化.

卫星星座健康状态管理文档的变量域所包括的数据类型可归纳为以下6种: (1)直接获取的数据, 包括通过用户输入或者从外部文件直接读取的数据, 定义为Direct data; (2)通过数据库检索所得数据, 定义为Database data; (3)基于Direct data结合业务公式计算所得数据,定义为Calculated data; (4)重用Database data/Calculated data, 结合数据库搜索和业务公式进行综合计算所得数据, 定义为Complicated data; (5)增长下降类文字, 例如增加/减少, 上升/下降等, 定义为Trend word; (6)反应一定时间范围内数据变化趋势的图表, 结合业务公式计算得到的数据, 定义为Chart.

不同类型的变量对应于不同类型的书签, 所存储的变量信息也有所不同, XML文件作为与文档模板配套的辅助索引文件, 负责记录填充文档模板生成目标文档所需的关键信息, 包括数据存储索引、数据计算公式以及数据填充索引等信息. 在后续数据汇总的过程中, 根据XML文件记录的索引关系, 针对于不同的数据, 匹配相应的计算公式和函数将最终的数据填充到文档模板中生成目标文档.

XML文件存储规则如下:

(1) Direct data: 业务名称和唯一英文标识;

(2) Database data: 业务名称, 唯一英文标识, 以及需要查询的数据库字段和表单信息;

(3) Calculated data: 业务名称, 唯一英文标识, 以及该数据的计算公式;

(4) Complicated data: 业务名称, 唯一英文标识, 以及该数据的查询信息或者计算公式;

(5) Trend word: 业务名称, 唯一英文标识, 以及所参考的数据英文标识;

(6) Chart: 图表名称, 数据源, 以及坐标轴和标题等自定义信息.

1.2 文档描述模型

文档模板建立后, 要解决的关键问题是如何对文档中变量域(书签所在位置)进行数据的填充. 为了方便数据汇总文档生成过程中数据的计算, 本文建立了一个文档描述模型, 将文档模板、文档变量域、目标文档以及文档生成过程中一些必要操作用数学符号和语言进行了表述和定义[3,4].

(1) 文档模板抽象为一个二元组T(C,K), 其中,C为文档模板中的常量域部分,K为文档模板中变量域的标识(书签或者行列标记)部分,K的取值为一个六 元 组K={K1,K2,K3,···,Kn},K=<αK,βK,γK,δK,µK,σK>, 式中, αK,βK,γK,δK,µK,σK分别代表目标文档变量域6种元素(Direct data, Database data, Calculated data, Complicated data, Trend word, Chart)在文档模板中对应的变量域标识, 即数据填充索引.

(2) 目标文档为一个二元组D(C,V), 其中,C为文档中常量域部分,V为目标文档中变量域在给定输入条件下的最终取值.V的最终取值为一个六元组V={V1,V2,V3,···,Vn},V=<αV,βV,γV,δV,µV,σV>, 式中αV,βV,γV,δV,µV,σV分别代表变量域中所包含的6类元素.

以“中继卫星某次位置保持”业务文档片段为例——“2016年1月12日卫星东西位置保持, 控制卫星运行轨道点火点半长轴1214米, 熄火点半长轴1000米, 半长轴减小214米, 控制期间陀螺组件温度变化如图1所示”. 在该片段中, “2016年1月12日”、“1214”、“1000”、“减小”、“214”、“图1陀螺组件温度变化”是变量域, 对应的类型分别是 αV,βV,γV,δV,µV,σV. 在文档模板中将其分别转化为书签K1,K2,K3,K4,K5,K6, 对应的书签类型为 αK,βK,γK,δK,µK,σK. XML文件示例如图2所示.

图2 配置文件示例

图2中, 业务名称为点火点半长轴对应的数据填充索引为 σK-1, 判断该数据的数据类型为Database data,英文标识为FIREAXIS, 查询的数据库字段为Axis_Fire,查询的表单信息为Sys_Dictionary, 根据这些信息可以准确地从数据库中查询到点火点半长轴的数值.

1.3 文档书签匹配算法

文档描述模型的求解过程就是利用XML文件中的索引信息对所需数据进行提取、计算和填充, 以生成目标文档. 文档书签匹配算法中主要涉及到3种公式, 分别为业务公式、变量公式和算术公式.

业务公式[A]: 如文档中的“轨道半长轴改变量=熄火点轨道半长轴—点火点轨道半长轴”, 该计算公式即为业务公式.

变量公式 [B]: 将文档中特定的业务名称映射为系统变量, 如熄火点轨道半长轴FI, 点火点轨道半长轴NI, 则上述业务公式对应的变量公式为FI-NI. 特别需要指出地, 对于只有一个变量的情况, 如N,(N+2)/100也是变量公式. 用户可根据语言习惯定义系统变量, 一个变量只能固定被解释为某一个业务指标.

算术公式[X]: 变量公式在系统运行时针对特定的输入条件自动生成算术公式, 如已通过查询或者计算得到FI=1000,NI=1214 , 则FI-NI自动生成“1000-1214”.

在文档模板自定义阶段, 操作人员需要首先完成业务公式到变量公式的转化, 并根据已制定的XML文件存储规则将变量信息写入配置文件.

下面讨论文档书签匹配算法中最关键也是最复杂的步骤——变量公式到算术公式的转换. 根据上文对卫星星座健康状态管理文档中6种数据类型的描述,需要针对每类元素采用不同的公式进行求解.

(1) 直接获取的数据(Direct data), 无需进行任何计算;

(2) 数据库搜索所得数据(Database data), 需要利查询条件从数据库中进行检索, 计算函数如下:

式中,CN代表数据库字段名称,TN代表数据库表单名称,F代表选择标准, 如日期时间(直接获取的数据)等筛选条件.

变量名称数据库字段和数据库表单的部分对应关系如图3所示.

图3 变量名称与数据库字段的对应关系

以图2所示 βK-1为例, 如需计算“2016年1月12日卫星东西位置保持的点火点半长轴”, 需调用公式:Vβ=Q(Axis_Fire,Sys_Dictionary, '2016-01-12')得到执行数据库结构化查询语句(Structured Query Language,SQL): “select Axis_Fire from Sys_Dictionary where Date= to_date('2016-01-12', 'yyyy-MM-dd')”所查询的数据FIREAXIS(即目标文档中 βV类型变量对应的数据).

(3) 基于Direct data结合业务公式计算所得数据(Calculated data), 计算函数如下:

式中,VF代表求解得到Calculated data所需的变量公式,Vα代表重用的数据Direct data.

以图2所示的γK-1为例, 需要计算“某次位置保持的脉冲周期”, 获取所需的计算公式, 并依据变量唯一标识查找需要重用的数据(脉冲频率), 计算公式如下:

式中, 1 /MCPL代表求解脉冲周期MCZQ所需的变量公式, 0.4代表已直接获取的脉冲频率MCPL的数值(Direct data).

(4) 重用Database data/Calculated data, 结合数据库搜索和业务公式进行综合计算所得数据(Complicated data), 具体计算函数如下:

式中,VF代表求解Complicated data所需的变量公式,Vβ‖Vγ代表需要重用的数据Direct data/Calculated data.

以图2所示的δK-1为例, 需要计算“卫星某位置半长轴的改变量”, 首先获取点火点半长轴FIREAXIS和熄火点半长轴CUTAXIS的值, 并判断两者是否都已被获取, 如果没有, 则通过点火点半长轴和熄火点半长轴对应的唯一的英文标识符在XML文件中查找, 并匹配对应的求解算法, 得到点火点半长轴FIREAXIS和熄火点半长轴CUTAXIS的值, 然后获取计算半长轴AXISCHANGEDATA的变量公式FIREAXIS-CUTAXIS,

计算出半长轴改变量, 具体计算公式如下:

式中,FIREAXIS-CUTAXIS代表求解半长轴改变量AXISCHANGEDATA所需的变量公式, 1200代表已获取的点火点半长轴的数值, 1214代表已获取的熄火点半长轴的数值.

(5)增长下降类文字(Trend word), 计算函数如下:

式中,Vβ‖Vγ‖Vδ代表求解Trend word所参考的数据.

以图2所示的 µK-1为例, 需要判断“卫星某位置半长轴是增大还是减小”, 首先获取半长轴改变量AXISCHANGEDATA并 判 断AXISCHANGEDATA是否已获取, 如果没有, 则通过AXISCHANGEDATA变量唯一英文标识在配置文件查找, 并匹配对应的求解算法, 获得参考数据, 然后根据参考数据获得Trend word.通常情况下, 如果参考数据大于零Trend word为增大,反之则为减小. 此例中AXISCHANGEDATA=-14, Trend word对应为“减小”.

(6) 反应一定时间范围内数据变化趋势的图表(Chart), 计算函数如下:

式中,Vβ代表图表的数据源,AI代表从配置文件中读取的待绘制图表的属性信息(例如坐标轴、标题和图例等自定义信息).

以图2中的 σK-1为例, “中继卫星某次位置保持”需要绘制“陀螺组件温度变化曲线”. 首先进行数据库查询, 调用如下公式进行数据库检索获取数据源:

执行数据库SOL语句“select TE11, TE12, TE13,TE14 from Sys_Parameter where Time between to_timestamp ('2016-01-12 00:00:00','yyyy-MM-dd hh24:mi:ss') and to_timestamp ('2016-01-13 00:00:00','yyy-MM-dd hh24:mi:ss')”, 返回结果后调用上述公式,依据图表属性信息进行绘制, 结果如图4所示.

图4 陀螺组件温度变化曲线

待所有变量处理完毕, 调用替换函数R(K,V), 将模板中所有书签进行替换, 其中K为文档书签,V为在给定输入条件下变量的最后取值.

1.4 文档自动生成流程

文档自动生成的流程如图5所示.

图5 文档自动生成流程图

步骤1. 建立空白文档, 划分常量域和变量域, 按照上述归纳的6种类型的数据对卫星星座健康状态管理文档中的数据进行分级分类, 对变量域进行标记, 保留常量域, 生成文档模板;

步骤2. 针对不同类型的数据自定义XML文件, 记录数据存储索引、数据填充索引及数据计算公式等信息;

步骤3. 统计待填充数据, 获取书签类型, 匹配文档书签求解算法, 将变量公式转化为计算公式进行计算, 计算比完毕后, 调用替换函数, 将模板中的书签进行替换;

步骤4. 数据处理完成后, 判断文档模板中待填充的数据是否都已经处理完毕, 若处理完毕, 则直接导出目标文档, 若没有处理完毕, 则重复步骤3直到用户需要统计的数据都处理完成, 再导出目标文档.

2 系统实现与应用效果

依据上文中定义的文档描述模型、相关操作和算法, 构建卫星星座健康状态管理文档自动生成系统. 系统将相关操作、算法及各类函数封装为特定的功能模块, 最终实现了文档的智能化生成.

系统主要分为文档模板定义模块、XML文件建立模块和目标文档生成模块, 实现了程序代码与模板文档的相互独立. 在系统的开发过程中采用了Microsoft专门为Office套件开发的宏语言VBA. VBA提供了访问Office文档的接口, 包含有大量针对该类文档的函数和对象, 可以对文档中各对象的属性和状态进行识别和读取[10,11]. 目前系统可支持卫星星座月份、年鉴、地影总结、位置保持控制总结等5类文档的自动生成.以卫星某次东西控制总结为例, 首先建立卫星星座东西控制总结模板文档及其对应的XML配置文件, 然后通过界面输入获得卫星代号、控制日期和起止时间,如图6所示.

图6 文档自动生成系统运行效果图

以卫星控制时间段内参数为基础数据, 采用本文提出的文档自动生成数学模型生成《A星第20次东西控制总结》. 对比图7与图8可以发现, 自定义模板中采用书签标识的变量域在生成的文档中均填充了有效数据, 并且生成文档的字体、段落及版面格式与自定义模板保持一致, 提升了文档质量, 节省了用户自行核对文档格式的时间. 与此同时, 基于文档自动生成数学模型同步生成了配套的Excel文档, 如图9所示, 用户可以清晰浏览图表的数据源并手动修改坐标轴、标题和图例等自定义信息.

图7 自定义模板

图8 生成Word文档效果

图9 生成Excel文档效果

分别对5类文档手动和自动生成的时间进行了对比分析, 如图10所示, 可以发现该文档自动生成方法大幅缩短了编制周期, 复杂业务文档的生成耗时从3个小时缩短至10分钟.

图10 文档生成时间对比图

3 结束语

本文针对复杂卫星星座健康状态管理文档批量生成与文档中海量数据查询计算繁琐复杂的问题, 提出了一种高效简洁且通用的文档自动生成算法. 通过建立文档模板及对应的配置文件, 构建并实现了文档描述模型和自动生成算法, 进而对模板变量域进行实际数据填充, 导出为目标文档. 应用验证表明, 该方法实现了规范有效的文档编制流程, 极大地提高了文档生成工作的时效性和规范性, 大大降低了人力资源的开销, 具有很强的实用性.

猜你喜欢

长轴书签星座
透明书签
单管立式长轴多级熔盐泵的研发及应用
含裂纹容器的有限元分析
十一月书签
十一月书签
离心率在焦点三角形中的应用
贰月书签
星座
12星座之我爱洗澡
星座