臧义华 梁佳 吴亚非
摘 要:战场态势图成为信息化战争中各类指挥控制系统的核心。为提升参谋作战标图速度及绘制效果,提出以基本标号为基础设计含义丰富的组合标号方法。将设计的组合标号作为一个整体保存入库,绘制时通过基本标号进行绘制、属性修改等操作,一次性完成军标复杂含义符号绘制。实际应用表明,该设计可解决由于态势标绘中军用符号不可随时增加而无法满足需求的难题,使态势图标绘效率提高30%。
关键词:态势标绘;标号重用;组合调整;撤销/恢复
DOI:10. 11907/rjdk. 201486 开放科学(资源服务)标识码(OSID):
中图分类号:TP319文献标识码:A 文章编号:1672-7800(2020)007-0122-05
Symbols Reuse Design of Situation Plotting System
ZANG Yi-hua, LIANG Jia, WU Ya-fei
(North China Institute of Computing Technology, Beijing 100083,China)
Abstract:The battlefield situation plotting in information warfare has become the core of all kinds of accusation systems, and the content that needs to be plotted is rich. However, the military requirements for the interoperability of the situation map lead to the military symbol not being able to increase by itself. This paper proposes a combination label with rich meaning based on the basic label, and then saves the designed combination label as a whole into the library. When drawing, the complex meaning military standard symbol is drawn at one time through the operations of basic label drawing and attribute modification. The difficulty that military symbols cannot be added at any time in situation mapping, and at the same time improves the efficiency of the staff plots. The application of the design in actual engineering can increase the efficiency of plotting situation by 30%.
Key Words:situation plotting system; symbol reuse; adjust combined symbol; undo/redo
0 引言
随着计算机技术和通信技术的飞速发展,军事作战指挥与控制逐步向信息化与网络化方向发展,军用图形处理系统服务于作战指挥自动化和战场环境数字化建设,提供战场空间和时间态势认知的信息系统。态势标绘系统以地理信息系统为平台,使用点、线、面符号和其它矢量符号,标绘各种对象,生成战场态势图[1]。信息化战争中,战场态势图已经成为各类指挥控制系统核心,标号则是态势标绘的基础。军队标号是一种部队作战指挥、作战模拟和其它军事活动中常用的队列图形符号[2-[3]。现代社会随时会出现新需求,但军用标号库修改需要各级审批,不可能随时修改;如果各部门自行增加标号必然导致生成的态势图在其它环境无法打开。同时,复杂的信息无法通过一个符号准确表达其含义,解决这类问题以往主要通过参谋对标绘软件多个符号进行拼接、组合,但再次用到时又需要花费同等时间完成。《基于算法组合模型的军标符号设计与实现》[4]一文,采用基于算法的图元组合方案对军标符号进行描述,提高军标符号库开放性;《动态军标符号实现方法研究》[5]探讨军标符号控制点生成问题,本质上解决的是军标符号绘制问题,但上述方法未涉及态势标绘系统生成态势图互操作问题。本文以基本标号为基础,设计含义丰富的组合标号,在提升标绘效率的同时保证态势图互操作:首先将生成的复杂有意义的组合符号保存到重用标号库,然后从标号面板直接选择标绘,通过鼠标点击方式选中需要修改的基本标号,进行有针对性的修改。标绘重用标号需要绘制各个基本标号、修改形状、编辑属性等多个步骤,本文采用一次撤销任意多个操作步骤方式,将绘制重用标号过程组合为一个整体,一次撤销。
1 标号重用基本思想
态势标绘时如果没有需要的标号,会通过调整多个基本图形形状、颜色、填充等形成一个新的图形。如标绘一个心形,但标号库中没有此标号,可通过圆弧、折线等基本图形形成一个心形,如图1所示。这个新的图形一段时间内可能经常会用到,如果每次都重新調整不仅要花费很多时间,并且调整效果不佳,将新形成的图形保存到重用标号库就可很好地解决这个问题。
基本标号指标号库中已有标号包括点状标号、线状标号等,如CDrawDot、CDrawLine等[6]。组合标号是将标绘的多个基本标号组合为一个整体作为新的标号,如CDrawCombo,可与标号库已经存在的点标号、线标号一样进行标绘、移动、缩放等操作。图形对象模型如图2所示,CDrawCombo记录参与组合的所有标号,已经参与组合的标号不再作为一个独立标号保存在标号链表中[7]。
标号基类CDrawObj负责记录对象公共属性如标号代码、类型等,同时定义一些基本操作,如检查是否选中、目标移动、缩放等,CDrawDot、CDrawLine、CDrawCombo根据各种类型特点处理标号属性与操作。工具基类(CDrawTool)定义一些虚函数,如OnLButtonDown, OnMouseMove, OnLButtonDblClk等,这些函数在其子类中按照具体标号类型进行处理,CDotTool、CLineTool、CComboTool充当对应标号对象的类工厂角色, 由它创建对应类型标号对象,分别用于绘制对应类型,CSelectTool用于编辑已经绘制的标号,如标号选中、移动、缩放等操作[8]。
2 标号重用设计
标号重用设计步骤:①绘制多个图形对象,调整属性、位置、形状等,形成一个具有意义且以后可多次使用的图形;②将多个标号组合为一个组合标号;③输入一个名称,将该组合标号保存到重用标号库;④通过标绘面板或查找方式找到已经保存的重用标号进行标绘;⑤如果重用标号需要微调则选中该组合进行调整,可调整组合中图形对象的属性。
XML(可扩展标记语言)用于标记电子文件使其具有结构性的标记语言,可用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML简单,易于在任何应用程序中读写数据,所以重用标号库采用XML文件格式[9]。
2.1 重用标号保存
重用标号库中保存的信息要能满足复原该组合标号,并能方便查找,因此需要将图形对象外接矩形的宽高、属性、相对定位点、组合标号名称标识、各个基本标号的所有信息保存到库中,同时还需要将组合标号的快照保存为图片以便在标绘面板快速显示。保存信息流程如下:①根据输入的重用符号名称,判断该名称符号是否已经存在,如果存在直接返回,不存在则保存组合对象名称;②保存重用符号外接矩形的宽、高;③依次保存重用符号中各个基本图形对象编码、类型等基本信息,并保存基本图形对象的相对位置信息,即以组合标号外接矩形的中心点为原点,计算各图形对象的定位点与中心点偏差,同时保存基本图形对象的属性信息,如颜色、线型、线宽等。
态势标绘时标号要与具体地理位置相结合,但此时需要使用屏幕坐标,否则标绘的重用符号会受地图显示比例尺影响。
2.2 标号绘制
重用标号绘制时,可通过标号面板或对话框查找方式确定要绘制的组合标号,根据组合标号名称查找重用标号库中组合标号信息。首先读取组合标号信息,增加一个CDrawCombo组合对象,然后读取重用标号库中组合对象的宽、高,按照绘制尺寸要求计算比例Scale,再读取重用标号库中的数据,根据类型、编码增加CDrawDot/CDrawLine对象,根据给定位置点和比例Scale计算基本标号在屏幕绘制的位置点、尺寸,最后修改基本图形对象属性,绘制出与保存属性一致的组合标号。
2.3 组合调整
绘制的组合对象有时不能满足要求,原因有二:①组合对象尺寸与标号库中的不一致,可通过整体缩放组合对象方式使其与其它标号尺寸一致;②需要修改组合对象中部分要素属性,如原本绘制为红色的图形对象需要修改为绿色,但其它属性不变,这时可通过选中组合对象需要调整的部分进行修改[10-11]。组合标号调整流程如图3所示。
此外,绘制组合对象随时可取消组合,组合中的子图形对象与从标号库中直接绘制的标号同等使用,可在此基础上增加、删除、调整图形对象,然后再次组合为新的组合标号。如果只需要在组合对象中增加部分图形对象,则可不取消组合,直接绘制需要添加的图形对象,然后再次组合即可。
2.4 重用标号库维护
军用态势标号库不可能随着需求的变化随时增加,但其表达的含义灵活多变。标号重用功能应用场合很多,重用组合对象也会不断变化,需要对重用标号库进行维护。重用标号库中不满足要求的组合对象分为两种:①以后不再需要此种标号;②需要在原有组合对象中增加、调整部分图形对象。 对于不再需要的组合对象可通过名称查找该对象,删除即可。在已经保存的组合对象中增加、修改子图形对象时,要考虑标号绘制、调整的方便性,采用先在绘图区绘制、调整组合对象,然后根据需要再绘制需要增加的图形对象方法。调整图形对象属性,将组合对象和新增加的图形对象重新组合,替换重用标号库中的标号。
3 关键技术研究
由于系统每一步操作都可有效记录,因而有进行Undo /Redo操作的基础。将组合标号作为一个整体在数据管理中已经作了多个操作,如增加一个组合对象,绘制各个基本图形对象,然后将这个图形对象加入到组合对象中,在Undo /Redo中操作等。但这些操作是任意的,不可能先定义好再完成,因此本文采用自定义任意步骤撤销恢复方式[13]。
3.1 数据模型
Undo/Redo操作按照Command模式思想设计, 即把每一个可能执行的操作命令当作对象看待,在每次操作时,不但要对图形对象的数据集合进行操作,还要把相应操作的命令名称和相关数据进行记录和管理。为实现标号重用的一次性撤销任意步骤操作,需要增加一个类CMultiCommond,将一次性撤销的操作记录到该类中,使用CCommandHistory记录所有命令[14]。Undo/Redo数据模型如图4所示。
CCommand基类定义了命令类基本方法,采用虚函数定義,即各个具体操作命令类需要根据自身功能对这些成员函数进行重载。GetName()获得命令名称,GetUndoCommand()获得该命令执行Undo操作时对应命令类对象指针; GetRedoCommand()获得该命令执行Redo操作时对应命令类对象指针, Execute()执行该命令[15]。
CMultiCommond类除了重载CCommand基类基本方法外,还需要增加AddCommand()方法,用于将命令添加到该对象中,SetName()用来设置多步动作名称。
此外,一次撤销/恢复任意步操作设计可在其它方面应用,如态势标绘软件一般都会针对特定需求开发一些快速标图功能,按照用户需要设置标号样式,需要很多操作步骤才能完成,过去实现这些功能时不提供Undo/Redo,或者要很多次才能完成撤销功能。但如果采用一次撤销/恢复任意步操作设计即可实现一步操作一步撤销,操作方式统一,用户使用方便。
5 结语
本文以基本标号为基础设计了含义丰富的组合标号,在提升标绘效率的同时保证了态势图的互操作,对于需要严格遵循标准而又有新使用需求的系统设计具有一定的借鉴意义,设计的撤销/恢复方法可实现任意步骤撤销,提高了效率。但本系统实现控制逻辑复杂,后续将进一步研究简化方案。
参考文献:
[1] 高亚飞,卜凡亮.?基于WebGIS的警务辅助模块的设计与实现[J].?现代计算机(专业版),2018,33(6):159-135.
[2] 娄世平,杨玉永,刘瑞峰,等. 分布式地震应急救援态势标绘系统[J].?地震地磁观测与研究,2017,16(5):95-103.
[3] 李立夏,夏学知,涂葵.??舰载指控中协同态势标绘系统的研究与设计[J]. 計算机工程,2010,25(16):91-98.
[4] 黄森,岳春生,奚玲. 基于算法组合模型的军标符号的设计与实现[J]. 信息工程大学学报,2012,13(6):749-752,762.
[5] 赵周,陈敏,汤晓安,等. 动态军标符号的实现方法研究[J]. 计算机工程与设计,2007,42(12):3023-3025.
[6] 柳杨,郭蕊. 移动终端实时态势综合标绘系统的设计与实现[J].?大众科技,2017,16(3):58-63.
[7] 金鑫. 基于AutoCAD二次开发的新型军事标图系统构架研究[C]. 中国指挥与控制学会第五届中国指挥控制大会论文集,2017:168-173.
[8] 李鹏飞,周杨,许继伟,等. ?双模三维环境下的态势标绘技术研究[J]. ?测绘科学技术学报,2016,15(2):31-39.
[9] JIANG H W,CHE X J,GAO Z H,et al. Design and realization of 3D irregular military symbols based on B-Spline[C]. Changchun:The 5th International Conference on Frontier of Computer Science and Technology, 2010:515-517.
[10] 何利明. 二维军标生成与态势标绘技术研究[D]. 武汉:华中科技大学,2015.
[11] 吴亚非,臧义华. 态势标绘软件跨平台设计与实现[J]. 计算机与现代化,2015,14(12):74-77.
[12] 朱振华,汪宁,李超. 基于Raphael态势标绘的研究与实现[J]. 测绘与空间地理信息,2019,42(6):85-89.
[13] 赵高长. 多步无限撤销及恢复算法与实现[J]. 西安科技大学学报,2009,29(4):500-504.
[14] KARL LEIBINGER,MEDIZINTECHNIK GMBH.Bone implant for the reconstruction of an osseous defect and for guiding a marking and/or processing tool for transferring required osteotomy situations[M]. Medical Patent Business Week,2020.
[15] KAREL JAKUBEC,MAREK POLáK,MARTIN NE ASKY,et al. Undo/redo operations in complex environments[M]. ?Procedia Computer Science,2014.
[16] YUAN C, HE F Z, XU B,et al. A multi-user selective undo/redo approach for collaborative CAD systems[J]. Journal of Computational Design and Engineering,2014,45 (2):1504-1522.
(责任编辑:杜能钢)