2. 中国科学院 沈阳计算技术研究所, 沈阳 110168
2. Shenyang Institute of Computing Technology, Chinese Academy of Sciences, Shenyang 110168, China
态势是时间和空间中的环境以及事件, 首先在军事领域被提出. 在20世纪80年代, 美国空军提出了态势感知的概念, 90年代态势感知的概念开始普及. 态势感知包含感知, 理解和预测三层含义. 态势显示就是将态势感知的内容显示出来. 态势可视化系统是战场仿真系统的重要组成部分, 可以为决策、分析和训练人员提供丰富的作战过程信息, 是观测战场对象的有效手段, 是战场仿真系统控制和反馈的重要依据. 如今除军事领域外, 态势可视化系统已经应用在消防、救灾、网络安全等诸多领域.
最初的态势可视化系统都是在HLA体系下构建的, 与仿真联邦绑定, 一方面使得态势可视化系统可以在HLA体系内复用, 另一方面也限制了态势可视化系统在其他领域的灵活运用[1]. 随着GIS和三维引擎技术的发展, 基于GIS和三维引擎的态势可视化系统也变得越来越多, GIS和三维引擎逐渐成为态势可视化的通用技术. 王赛君等研究了基于GIS的态势可视化系统的关键技术[2]. 江波等研究了基于Unity的态势可视化系统的关键技术[3]. 基于GIS的态势可视化系统是二维态势可视化系统, 具有宏观性好, 整体性强的优点. 基于Unity的态势可视化系统是三维态势可视化系统, 具有场景真实, 显示直观的优点. 显然, 如果一个态势可视化系统要同时具备以上两种优点, 则需要系统既有二维显示部分, 又有三维显示部分. 如果二维与三维显示部分零散地加入到态势可视化系统中, 则会面临系统的二三维显示内容难以互相对应, 认知不协调的问题. 当前的主流二三维联动可视化系统研究集中于扩展某一平台的功能, 即单独的使用GIS或Unity完成二三维联动显示, 而不涉及GIS和Unity的跨平台联动. 这种方案的优点是系统构建简单, 可以依赖平台内部的联动机制, 缺点是使用GIS进行三维显示和使用Unity进行二维显示在功能和扩展性上都要受到限制.
本文结合了基于GIS的二维显示技术和基于Unity的三维显示技术, 将二三维显示功能集成到一个态势可视化系统之中, 同时研究了跨平台的二三维显示部分的联动机制, 使得分别基于GIS和Unity的二三维显示部分可以联动, 即二维和三维显示部分显示的态势一致. 本文设计并实现了一个二三维联动的态势可视化系统, 将系统整合到战场仿真系统中. 经测试, 系统能够完成态势显示任务, 系统同时具备了宏观性好和显示直观的优点.
1 态势显示关键技术目前已有的态势可视化系统中, 二维显示部分的主流技术是GIS, 三维显示部分的主流技术是Unity. 对于二三维联动的态势可视化系统的研究则集中于扩展某一平台的功能, 即单独使用GIS或Unity完成二三维显示, 不涉及跨平台的联动. 本文的二三维显示部分参考和集成了现有的主流技术, 联动部分的技术则涉及坐标变换、消息中间件、实体二三维模型管理、AAR存档等技术.
1.1 二维显示技术GIS(地理信息系统)是结合了地理学与地图学, 用于输入、存储、查询、分析和显示地理数据的计算机系统. 在科学调查、资源管理、财产管理、发展规划、绘图和路线规划等领域已经得到了广泛的应用. 本文采用GIS作为二维显示部分的技术平台.
市面上有多家公司开发的多种GIS套件, 应用最广泛的是美国Esri公司的ArcGIS和中国超图公司的SuperMap. SuperMap是超图集团打造的专业的地理信息系统产品系列, 包括云GIS服务器、在线GIS平台、边缘GIS服务器、组件GIS、桌面GIS、Web端GIS、移动GIS等. 本文使用了其中的桌面GIS制作地图, 用了云GIS服务器作为后台提供地图服务, 用了Web端GIS作为二维显示客户端的插件加载和显示地图.
1.2 三维显示技术Unity是一款跨平台的三维引擎, 由丹麦Unity公司开发, 支持包括Linux、Windows、Android在内的27个平台. 它最初被应用在游戏领域, 而今也被广泛的应用于虚拟仿真、汽车、建筑、电影动漫等诸多领域. 随着越来越多的工业项目选用了它, Unity已经把自己定义为交互式内容创作引擎. Unity是一个整合了编辑器、编译器的完整三维引擎, 开发语言是C#. Unity还支持地形编辑、脚本控制、网络功能、物理仿真等特性. 本文使用Unity开发系统的三维显示客户端.
1.3 坐标变换地球是三维空间中的球体, 而地图是二维空间中的平面, 所以需要找到一种方法, 能够将三维的球体映射到一个二维的平面上. 在GIS系统中常用的映射方式是墨卡托投影. 墨卡托投影的原理是将地球近似的看作一个球体, 用一个与地球同直径的圆柱沿自转轴方向套住地球. 当一条从地心出发的直线穿过地表与圆柱表面相交, 则直线与地表相交的点, 在圆柱上的投影, 就是直线与圆柱表面的交点, 之后将圆柱展开就得到了一个平面, 如图1所示.
墨卡托投影在高纬度时失真较大, 根据国际航道测量组织的规定, 墨卡托投影的适用范围在南北纬80度之下的地区[4]. 对于南北纬70度之上的在高纬度地区, 可以采用极方位立体投影[4,5]. 本文研究的态势可视化系统是某战场仿真系统的一个子系统, 该战场仿真系统的仿真范围的最高纬度不超过60度, 同时考虑到我国国土的纬度范围在北纬3到54度之间, 所以本文采用了墨卡托投影[6]. 由于本文系统不涉及高纬度地图投影, 所以应用范围局限在中低纬度地区, 即南北纬70度之间.
从战场仿真系统发送给态势可视化系统的实体坐标是基于经纬度的WGS48坐标, 所以要经过变化, 得到在墨卡托投影的二维地图中的坐标[7]. 坐标变换公式如下:
$ x = \lambda - {\lambda _0} $ | (1) |
$ y = \ln (\tan (\phi ) + \sec (\phi )) $ | (2) |
其中, λ是地球经线(λ0是地球的中央经线), φ是地球纬线, x和y为经过变换后的在墨卡托投影的地图中的坐标. 从墨卡托投影坐标变换为WGS48坐标是以上变换的逆变换, 坐标变换公式如下:
$ \lambda = x + {\lambda _0} $ | (3) |
$ \phi = 2{\tan ^{ - 1}}(\sinh (y)) $ | (4) |
消息中间件是为了简化应用程序的通信、输入输出的开发而设计的一种软件基础设施. 消息中间件具有低耦合、可靠投递、广播、流量控制、最终一致等功能, 已经成为程序间通信的核心手段[8]. 常见的消息中间件有ActiveMQ、RabbitMQ、ZeroMQ、Kafka、RocketMQ等.
其中ActiveMQ是由Apache推出的开源的、高性能、易伸缩、多协议、支持集群、可插拔、消息持久化的消息中间件; RabbitMQ是由erlang开发的AMPQ的开源实现之一; ZeroMQ本质上是一个可嵌入网络通讯库的、轻量的、快速的消息队列; Kafka发源于LinkedIn, 后来成为Apache项目, 是一个快速的、可扩展的、高吞吐、可容错的分布式发布订阅消息系统; RocketMQ由MetaQ演进而来, 是阿里开源的消息中间件, 应用在淘宝项目中.
以上消息中间件中ActiveMQ、RabbitMQ、Kafka、RocketMQ等消息中间件功能强大, 支持协议全面, 复杂度也更高, 适用于大型系统. ZeroMQ灵活快速, 但功能过于简单. 本文选用了Nsq消息中间件. Nsq是由golang开发的轻量级消息中间件, 具有性能高、支持动态扩展、能消除单点故障等优点. Nsq的架构如图2.
Nsq的工作过程是, 客户端通过http向nsqlookupd查询可用的nsqd地址, 然后与nsqd建立连接. nsqd负责维护话题和频道, 实现以下功能:
1) 话题是接收外部消息的单位, 外部消息源推送消息给话题, 话题将消息推送给它之下的每一个频道. 频道将消息推送给它之下的消费者, 如果有复数个消费者则随机选择一个.
2) 如果话题下不存在频道, 则话题会将消息缓存到队列中. 如果频道下不存在消费者, 则频道会将消息缓存到队列中. 话题和频道都拥有独立的缓存队列.
3) 保证缓存队列中的消息至少会被消费一次, 即使nsqd退出, 也会将队列中的消息存到磁盘上, 当nsqd再次运行时保证消息被消费.
4) Nsq可以限定资源占用, 通过配置nsqd中每个话题和频道在内存中缓存的消息数量, 可以限制内存占用, 一旦超出, 消息将被缓存到磁盘中.
Nsq的工作流程如图3所示.
1.5 二三维模型管理
二维和三维显示部分是联动的, 所以场景中的实体需要有二维和三维两种模型, 并且一一对应. 基于单一平台的二三维联动显示系统中主要采用两种实现方式[9,10]. 一种方式是将模型统一存储为二维格式, 在二维显示子系统中直接加载二维模型, 在三维显示子系统中先对二维模型进行升维运算, 得到三维模型再加载[9]. 也可以存储三维模型, 在二维显示部分中通过对三维模型进行降维运算, 得到二维模型[10]. 这种方式在存储上一致性好, 模型维度统一, 只需要存储在一个存储系统中, 修改方便, 但需要客户端对模型进行实时处理. 另一种方式是将二维和三维显示部分的模型分开存储, 同一个实体的模型分为二维和三维两部分, 分别存储在两个存储系统中[11]. 这种存储方式提高了客户端加载模型的速度, 但是提高了系统中存储部分和其他部分的耦合度, 不利于系统维护和升级. 本文结合了以上两种方式, 提出了一种新的实体模型存储方案, 如图4所示.
以实体为单位将模型在文件系统中的路径存储在关系数据库中, 实体的模型分为二维和三维两种存储在文件系统中, API网关对外提供稳定的服务. 外部访问者只能连接到API网关, 而不能连接到数据库或文件系统. 外部访问者向API网关提供实体名称并表明需要二维或三维模型, API网关访问数据库得到对应模型的路径, 到路径取得模型发送给对应的外部访问者.
二三维模型管理的模型访问算法描述如下:
算法1. 二三维模型访问算法
1) 外部访问者向数据库API网关提出访问模型的需求, 需求中描述模型的名字以及模型类型是二维还是三维的.
2) 数据库API网关根据模型名和模型类型查询关系数据库, 得到模型在文件系统中的存储位置.
3) 如果对应模型名和类型的存储位置记录存在, 数据库API网关从文件系统中对应位置取得模型, 返回给外部调用者.
4) 如果存储位置记录不存在返回错误提示“模型不存在”给外部调用者.
二三维模型管理的模型存储算法描述如下:
算法2. 二三维模型存储算法
1) 外部访问者向数据库API网关提出存储模型的需求, 需求中描述模型的名字以及模型的类型是二维还是三维的.
2) 数据库API网关根据模型名和模型类型查询关系数据库, 得到模型在文件系统中的存储位置.
3) 如果对应模型名和类型的存储位置记录存在, 数据库API网关删除对应位置的模型, 向外部调用者发送存储准备完成信号, 外部访问者将模型传送给数据库API网关, 数据库API网关将模型存储在对应位置.
4) 如果存储位置记录不存在, 数据库API网关根据模型名和模型类型进行哈希运算, 得到存储模型文件的路径, 在关系数据库中新建模型名, 模型类型和对应的存储目录记录.
5) 返回第3步.
模型文件是非结构化数据, 通常存储非结构化数据的方法是将数据以二进制的方式存储到关系数据库. 然而关系数据库在存储大段二进制数据时负载过大, 效率并不高. Hadoop是一个分布式系统基础架构, 被设计用来解决大数据的存储和运算, 也面临存储大量文件的问题, 为解决这个问题Hadoop开发了分布式文件存储系统HDFS[12]. 本文参考了HDFS的设计思想, 用哈希路径存储文件, 将模型文件存储在文件系统中, 将文件的路径存储到关系数据库. 但与HDFS不同, 本文的数据量在GB级, 因此没有采用分布式架构.
本文采用单台服务器作为数据库和文件系统服务器, 虽然与集群式服务器相比, 单台服务器数据库的读写性能和网络带宽可能成为系统瓶颈, 但方便数据的统一管理和维护. 而且战场仿真系统对存储部分的性能要求不高, 经测试, 采用单台服务器可以满足负载.
1.6 AAR存档系统AAR(After Action Review)存档技术起源于美国陆军军事行动后的过程化分析, 是辅助用户量化信息, 进行定性分析的工具[13]. AAR系统包括数据收集, 数据分析/筛选, 数据反馈三个部分. 态势可视化系统是战场仿真系统的子系统, AAR存档系统是态势可视化系统的组成部分之一. AAR存档系统能够获得战场仿真系统运行时产生的过程数据, 然后过滤和按照时间顺序存储这些数据, 其中一些关键数据作为关键帧, 需要加上时间戳.
本文使用AAR存档系统对战场仿真系统的仿真过程进行记录. 当需要回放仿真过程时, AAR存档系统将存储的数据按照顺序发送给态势可视化系统, 进行战场仿真的回放.
2 二三维联动的态势可视化系统架构系统主要由浏览器、Unity客户端、SuperMap iServer、数据库API网关、ARP存档系统、消息中间件、关系数据库和文件系统等七个模块组成, 模块之间通过以太网连接. 整体架构如图5所示.
1) 浏览器: 浏览器是二维显示部分的客户端, 从SuperMap iServer读取地图, 从数据库API网关得到实体的二维模型, 从消息中间件得到仿真过程数据, 最终将仿真信息显示出来. 用户在二维客户端发出的指令也发送给消息中间件.
2) Unity客户端: Unity客户端是三维显示部分的客户端, 地图和地形数据存储在本地, 从消息中间件得到想定数据和仿真过程数据, 从数据库API网关得到实体的三维模型, 最终将仿真信息显示出来. 用户发出的指令同样发送给消息中间件.
3) SuperMap iServer: SuperMap iServer为二维显示部分的客户端提供地图服务, 将地图以瓦片的形式存储在关系数据库中, 当客户端访问地图的时候根据不同比例尺取出不同分辨率的瓦片地图.
4) 数据库API网关: 数据库API网关对实体的二维和三维模型进行统一管理. 数据库API网关屏蔽了外界对数据库和文件系统的直接访问, 提供一套稳定的, 包含读取和存储功能的服务接口. 读取模型时, 外部访问者通过接口描述需要的实体模型, 包括实体名称和模型类型, 数据库API网关则将对应的模型返回给外部访问者. 存储模型时, 外部访问者同样描述实体模型, 并提交具体模型. 数据库API网关自动完成存储任务.
5) AAR存档系统: AAR存档系统的功能是仿真进行时记录仿真过程以及仿真结束时进行回放, 有两种工作模式. 第一种模式是战场仿真系统进行仿真时, AAR存档系统从消息中间件得到仿真的过程数据, 记录下整个仿真过程存到关系数据库中. 第二种模式是仿真结束后, AAR存档系统按照顺序将记录的仿真过程数据重新发送给消息中间件, 由消息中间件转发给二维和三维显示部分, 重现仿真过程.
6) 消息中间件: 消息中间件负责在不同部分之间传递消息. 在仿真进行时主要有两大功能, 第一种是从战场仿真系统得到仿真过程数据, 转发给AAR存档系统和二三维显示部分. 第二种是接收从二三维显示部分传来的用户指令, 转发给包括二三维显示部分在内的所有其他部分, 以保证二维和三维显示部分联动. 在仿真回放时, 则只接收AAR存档系统传来的消息转发给二三维显示部分.
7) 关系数据库和文件系统: 关系数据库和文件服务器提供数据库服务和负责文件的存储. 其中文件系统受限于单个目录的最大文件数, 所以在存储文件时需要划分子目录, 用文件名进行哈希运算, 根据哈希值将文件存储在不同的子目录中.
3 系统测试态势可视化系统是战场仿真系统的一个子系统, 战场仿真系统会实时的将仿真过程数据发送到态势可视化子系统. 态势可视化系统首先根据想定初始化态势, 然后根据仿真过程数据实时改变和显示当前态势, 同时也存储仿真过程数据. 态势可视化系统中二维和三维显示部分保持联动, 即显示的态势一致, 在二维或三维显示部分中都可以发出指令给战场仿真系统. 仿真结束后可以回放战场仿真的过程.
经测试, 态势可视化子系统满足战场仿真系统的可视化要求, 能够实时显示战场态势, 以及将用户指令反馈到战场仿真系统. 显示的态势与战场仿真系统的态势一致, 且二维和三维显示部分显示的态势一致, 即二三维是联动的. 二维和三维显示部分测试结果如图6和图7所示.
4 结论与展望
二三维联动的态势可视化系统同时具有二维显示的宏观性好和三维显示的显示直观等优点. 本文研究了二维显示技术、三维显示技术、坐标变换、消息中间件、实体二三维模型管理和AAR存档等关键技术, 设计并实现了一种二三维联动的态势可视化系统. 该系统二维和三维显示部分之间通过消息中间件联动. 实体的二三维模型由数据库API网关统一管理, WGS48经纬度坐标和墨卡托投影坐标经由公式互相转换. 系统通过AAR存档系统实现仿真过程的记录和回放.
随着显示技术的进步, 未来的态势可视化不局限于二维和三维显示, 还可能加入虚拟现实和增强现实显示的部分. 随着战争复杂性的升级, 战争类型和战争领域也会扩张, 比如网络战, 舆论战, 经济战. 在未来态势可视化系统的设计和实现中也要适应和支持新的战争类型和领域.
[1] |
陈彬, 王全民, 龚建兴, 等. 作战模拟态势显示中的通用性技术研究. 国防科技大学学报, 2009, 31(6): 115-120. DOI:10.3969/j.issn.1001-2486.2009.06.022 |
[2] |
王赛君, 史志娜, 许映秋, 等. 基于GIS的应急指挥态势显示系统关键技术研究. 第四届中国指挥控制大会论文集. 北京. 2016.
|
[3] |
江波, 程健庆, 朱伟. 基于Unity3D的海战场三维态势实时显示系统设计与实现. 指挥控制与仿真, 2018, 40(2): 106-109. DOI:10.3969/j.issn.1673-3819.2018.02.020 |
[4] |
The International Hydrographic Organization. Regulations of the IHO for International (INT) Charts and Chart Specifications of the IHO. Edition4.8.0, Monaco, 2018.
|
[5] |
Chen C, Shao FB, Hou PL, et al. Direct transformations formulae between polar Gauss and stereographic projections. Applied Mechanics and Materials, 2015, 744-746: 1689-1694. DOI:10.4028/www.scientific.net/AMM.744-746 |
[6] |
温朝江, 卞鸿巍, 陈志红, 等. 墨卡托投影在极区航海图编制中的可用性研究. 海洋测绘, 2014, 34(3): 56-59. DOI:10.3969/j.issn.1671-3044.2014.03.015 |
[7] |
王瑞, 李厚朴. 基于地球椭球模型的符号形式的航迹计算法. 测绘学报, 2010, 39(2): 151-155. |
[8] |
徐晶, 许炜. 消息中间件综述. 计算机工程, 2005, 31(16): 73-76. DOI:10.3969/j.issn.1000-3428.2005.16.029 |
[9] |
刘方涛, 王鑫, 俞蔚. 二三维联动战场可视化系统的研究与实现. 计算机工程与应用, 2014, 50(7): 247-250. DOI:10.3778/j.issn.1002-8331.1204-0732 |
[10] |
王新量, 李风光, 祝若鑫. 基于混合三维数据模型的二、三维联动研究. 测绘工程, 2014, 23(4): 33-36, 44. DOI:10.3969/j.issn.1006-7949.2014.04.008 |
[11] |
刘聪元, 李焕. 基于GOCAD平台二、三维联动技术的三维地质建模方法研究. 资源环境与工程, 2016, 30(3): 259-261, 274. |
[12] |
Liu CT. An improved HDFS for small file. Proceedings of the 18th International Conference on Advanced Communication Technology. Pyeongchang, South Korea. 2016. 474-477.
|
[13] |
刘帅锋, 廉东本, 孙咏. AAR存档的研究与应用. 计算机系统应用, 2013, 22(2): 206-209. DOI:10.3969/j.issn.1003-3254.2013.02.052 |