来源:第三维度
作者:田全才
单位:中国电子科学研究院系统总体部
摘要:地理信息系统(Geographic Information System,GIS)是
军事仿真系统的重要组成部分。结合海军作战仿真系统的构成和功能需求,研究组件式 GIS 技术在
军事领域的应用。基于 MAPX 开发系统集成引导台,实现鹰眼导航、对象编辑功能、和图标的显示与设置。该 GIS 模块既具备专业 GIS 产品的地图功能,又可对作战仿真领域的各种功能进行扩展。
0 引言
地理信息系统(Geographic Information System GIS)是以计算机为手段,对具有地理特征的空间数据进行处理的信息系统。目前,在 GIS 的多种开发模式中,组件式 GIS 是使用广泛、高效的开发模式,其基本思想是把 GIS 按照功能模块划分为几个模块,对应完成不同的功能,各个 GIS 模块之间以及 GIS 模块与其它非 GIS 模块之间,可以方便地集成,形成最终的 GIS 应用[1]。
海军作战指挥仿真是指在
军事领域中,利用系统模型对实际系统进行实验研究的过程。
军事地理信息系统(Military Geographic Information System,MGIS)是 GIS 技术在
军事方面的应用,与预警探测、全球定位系统关系密切,并与指挥自动化系统紧密联系,形成一个多功能的统一系统,在海军作战指挥仿真中起着重要的作用。故对组件式 GIS 技术在海军作战指挥仿真系统中的应用进行研究。
1 海军作战指挥仿真系统功能结构
不同层次的海军作战指挥仿真,其最大的区别在于其模型建立与模型在系统上的运行方式不同,一般的作战仿真是建立在对作战部队及其武器装备的整体效能仿真基础上,可以反映出武器平台协同过程、指挥过程、战术运用等方面的内容[2],还可以模拟训练提高训练质量。以美军为例,20 世纪 90年代,美军成立国家仿真中心,在作战指挥、战役战术训练乃至战略训练引发一系列深刻变革。美军典型的作战仿真系统有战争综合演练场、联合仿真系统、联合战术作战训练系统等[3]。
典型的作战仿真系统含有多个节点,其基本组成元素有:人员、设备、规则、想定。以海军为例,其仿真系统结构为:战场背景系统、敌我兵力模拟器、雷达模拟器、探测模拟系统、引导模拟器、电子战模拟器等。以美海军舰载指挥系统为参考,并做适当简化,构建的仿真系统节点组成如图 1。

图1 海军作战指挥仿真系统组成图
图1 中的仿真系统包含 8 个联邦节点,通过建立指挥引导台、预警机模拟器、舰载战斗机模拟器、综合态势台等,仿真海军编队作战指挥系统。该仿真系统可以应用于演示、验证、分析海军舰艇编队对空作战指挥引导、辅助决策计算等作战过程中涉及装备间信息交互关系、运行流程、作战指挥关系等。其中,引导台配置在舰艇编队旗舰,是海军舰艇编队指挥系统的核心,其他节点作了简化处理。文献[4]对美军海上舰艇编队模式及能力有详细介绍。
根据图 1 的仿真系统节点结构,构建的软件系统有 5 个模块,其结构如图 2。各台位说明如下:
1) 仿真运行管理模块:控制整个系统的运行包括初始的想定、兵力生成、仿真结果的输出、分析等;
2) 分布式模拟器/数据库:仿真各作战节点,如战斗机、预警机、潜艇等;或存储各种数据的数据库,如综合态势台的雷达数据。可根据仿真需求增加新的节点模拟器,如电子战飞机等;
3) GIS 模块:接收仿真环境提供的各种数据并进行处理,在地图上显示用户定制的态势信息,如显示红方态势、全部态势。并提供了共同开发的通用程序的数据结构和函数接口,各仿真节点如引导台、预警机模拟器可嵌入 GIS 模块来显示态势信息;
4) 引导模块:为其他作战节点提供指挥引导的解算功能,如截击控制、引导会合、概略引导等;
5) 流程显示模块:根据仿真系统的实时运行情况,直观地显示各个作战实体的信息交互关系。

图 2 海军作战指挥仿真系统功能结构图
2 MGIS 功能与构成
一般的 GIS 系统提供基本的地图功能,但对应用于作战仿真的 MGIS,还必须有实时态势显示、鹰眼导航、航线区域编辑与显示等功能。在海军作战指挥仿真系统中,各仿真节点可以根据需要集成不同的 GIS 功能模块,以显示所需要的静态的地理部署信息、动态的仿真实体位置信息。
MGIS 包括 4 个主要功能模块,具体功能分解模块如图 3。

图 3 MGIS 功能模块分解图
各功能模块的说明如下:
1) 基本的地图功能:提供了快捷工具栏,如选取对象、添加标签、鹰眼导航、绘制基本对象、放大缩小等功能按钮。
2) 态势显示:提供了按需显示功能,如显示水面目标、敌/我方目标、仿真态势等。
3) 对象编辑:针对海军作战指挥仿真应用提供的功能,如航线编辑管理、警戒线、各种区域的编辑管理(巡逻区、禁飞区、警戒区等)等。并可根据不同的对象属性设置不同的显示属性,如雷达区域的闪烁等。
4) 其它功能:包括数据交互和编程接口,用于GIS 模块与其它模块的信息交互。
在构建仿真系统的过程中,各个仿真节点可组合 GIS 提供的模块,但一般都需要包含数据交互和编程接口以方便本节点与 GIS 模块或者其它节点的信息交互。如引导台节点需要不仅集成 GIS 的态势显示模块,还要集成对象编辑功能模块,以便在地图上编辑相应区域引导舰载机巡逻、截击。
3 基于 MapX 的 MGIS 的关键技术与实现
目前,应用比较广泛的 GIS 组件有 ESRI 的MapObjects、MapInfo 公司的 MapX 等。海军作战指挥的仿真,利用 MAPX 实现了系统中 GIS 功能模块,为仿真过程中的指挥控制、作战评估等提供支持。但 MAPX 只提供了最基本的功能,在实用性上不满足需求,需要重新设计整体架构并做功能扩展。
3.1 图层结构
在海军作战指挥仿真应用中,地图操作往往是跟具体的图层直接相关的。图层控制应能控制地图的当前可操作图层以及其中的图元的属性,像线条、边线、填充颜色等。在仿真应用中,合适的图层设计对于提高显示效率非常重要,频繁读写操作的图元应该放在统一分类的图层中,如用于态势显示的运动实体加入仿真实体图层,各种航线图元加入航线图层;读写操作很少的,如作战的地理位置等,加入最下层的背景图层。根据作战仿真需要,具体设计图层结构如图 4。

图 4 MGIS 图层结构
在 MGIS 模块中,所有的图层存储在 layers 集合中,Layer 对象由 Features 对象组成,Features 对象又是由 Feature 对象组成,Feature 对应于地图中的点、线、面以及符号等地图实体。
在仿真过程中,可通过名称或遍历来查找图层Layer 和图元 Feature,进行属性的修改或添加删除图层、图元,然后通过更新来显示态势信息。
3.2 主要功能与实现
3.2.1 鹰眼导航
鹰眼图的主要功能是在主图发生变化时,在鹰眼图上用变化的矩形框来显示当前主图显示的边界。或者是在鹰眼图上选取某个区域,在主图上显示 对 应 的 区 域 。 利 用 MapX 的 2 个 消 息 事 件DISPID_MOUSEUP,MAPX_DISPID_MAPVIEWCH ANGED,并添加映射函数来完成该功能,在事件槽中 加 入 : 主 图 视 图 变 化 事 件 :
ON_EVENT(CGISView,IDC_MAP, MAPX_DISPID_MAPVIEWCHANGED,OnMapViewChanged, VTS_NONE) 以 及 鹰 眼 图 的 鼠 标 事 件 :
ON_EVENT(CGISView, IDC_MAP_EAGLE, DISPID_MOUSEUP onMouseUpEagleMap, VTS_I2 VTS_I2 VTS_R4VTS_R4)
上 述 代 码 中 , CGISView 为 窗 口 视 图 类 ,IDC_MAP 为主图资源 ID,IDC_MAP_EAGLE 为鹰眼图的资源 ID。当视图发生变化时,MapX 控件发出消息,调用 OnMapViewChanged()函数进行相应的处理,所以主要代码在 OnMapViewChanged()函数中实现。
而 当 单 击 鹰 眼 中 某 个 区 域 , 会 调 用onMouseUpEagleMap 处理。具体的实现参见文献[5]。
3.2.2 对象编辑功能
MGIS 可编辑对象包括各种航线及空域,如一般航线、8 字形航线,圆形、任意多边形空域等。
实现过程是创建自定义工具,根据用户的输入来绘制、编辑、管理这些对象。以绘制一般航线为例,使用自定义的工具时,先在事件槽加入 MapX 的事件 MAPX_DISPID_POLYTOOLUSED,在相应的函数中实现绘制。具体的实现是:
添加自定义工具事件:ON_EVENT(CGISView,IDC_MAP,MAPX_DISPID_POLYTOOLUSED,PolyTool, VTS_I2 VTS_I4 VTS_DISPATCHVTS_BOOL VTS_BOOL VTS_PBOOL)
然后,在 PolyTool 函数中实现绘制:
void CGISView::PolyTool(short ToolNum,long Flags,LPDISPATCH Points, BOOL Shift, BOOL Ctrl, BOOL*EnableDefault){
if(Flags==miPolyToolEnd) {// 用户双击结束绘制
if(ToolNum==CUSTOM_POLYGON_TOOL){
//绘制航线代码
}
}
}
最后,在相应的一般航线工具按钮函数中添加工具的创建和激活代码。文献[6]详细说明了各种动态复杂符号的绘制。
3.2.3 图标的显示与设置
在 GIS 模块接收外部数据后,GIS 将根据数据显示仿真对象的属性。功能包括:仿真对象在图层中的显示、旋转方向及大小的设置、更新显示以及更新频率的设置。故符号标绘是 MGIS 必须具备的基本功能。MapX 在符号标绘方面支持位图、矢量图和 TTF 图 3 种符号的标绘,其中,但位图符号和矢量图符号不支持旋转。
分析 MapX 内部数据结构和 TrueType 字体符号的调用机制基础上,结合 TrueType 字体文件的结构,在作战仿真系统中采用了扩充 TrueType 字体符号库的方法。
首先根据
军事应用的具体需求定制符合要求的TrueType 字体符号库,再导入到系统的字体文件夹下(有关 MAPX 的字体扩展可以参考文献[7])。TTF字体库开发并安装后,在程序中使用的代码如下:
//设置位置:Ftr0 为该图层的对象 feature 名称Ftr0.SetPoint(pt0);
//图层样式设置
CMapXStyle style;
style.CreateDispatch(style.GetClsid());//设置为 TTF 符号
style.SetSymbolType(miSymbolTypeTrueTypeFont);//符号颜色,可以用来标示红蓝方,表示敌我属性
style.SetSymbolFontColor((unsigned long)
RGB(255,0,0));//构造 CY 结构,设置对象大小,60 000 大小相当于
18 //号字体
CY a;
a.int64=100000;
style.GetSymbolFont().SetSize(a);//设置旋转角度,用于显示动态目标的运动方向。
其中,//angle 为角度
style.SetSymbolFontRotation(angle);//设置字体名称,JBFH 为已经开发并安装的字体库
style.GetSymbolFont().SetName("JBFH");//设置 TTF 符号的值,用于在字体库中查找与仿真对 象对应的字体符号
style.SetSymbolCharacter(75);//将已有的 style 设置给 feature
Ftr0.SetStyle(style);
Ftr0.SetKeyValue("aircraft");
Layer.AddFeature(Ftr0);
可见,显示图标的一般步骤,是得到仿真对象的 feature,构造显示 style,对其 feature 的 style 进行设置,最后使用 SetStyle()函数将已有的 style 设置到 feature 中。
3.3 海军作战指挥仿真系统实现效果图
利用 MGIS 模块集成的引导台的界面如图 5。在左侧的信息面板上,用于显示敌/我目标,目标的详细信息,如位置信息、类型等,及各航线空域信息;右侧界面包含鹰眼窗口和主界面视图。在仿真运行时,主界面直观的显示当前的仿真实体以及航线空域,左侧信息面板显示仿真对象的引导、交战、状态等信息。其他包含 GIS 模块的节点如综合态势台界面与引导台由于其节点功能不同而略有差别。

图 5 海军作战指挥仿真系统界面
4 结束语
该 GIS 模块既具备专业 GIS 产品的地图功能,又有作战仿真领域的各种扩展功能,并可根据实际需要选择或添加相应的功能模块,提高了系统的适用性和效率。
参考文献:
[1] 陈正江, 汤国安, 任晓东. 地理信息系统设计与开发[M]. 北京: 科学出版社, 2005: 3-35.
[2] 胡晓峰, 海军作战指挥仿真: 概念、现状与发展[J]. 测控技术, 2000, 12(7): 1-4.
[3] 王 小 非 . 海 上 网 络 战 [M]. 北 京 : 国 防 工 业 出 版 社 ,2006.
[4] 吴永杰, 周玉兰. 海上舰艇编队系统[M]. 国防工业出版社, 1999: 19-97.
[5] 胡鸣凯, 谢玲, 基于 MapX 控件的鹰眼图实现方法[J].现代电子技术, 2005, 9(7): 109-113.
[6] 赵周, 陈敏, 等. 动态军标符号的实现方法研究[J]. 计算机工程与设计, 2007, 17(28): 3023-3025.
[7] 朱开玉, 宋国辉, 燕存良, 等. CAPP 系统中动态创建TrueType字体的研究[J]. 计算机工程, 2006, 32(8): 20-22.
[8] 黄志坚. 基于GIS/GPS/北斗系统的地形(地理)专修室[J].四川兵工学报, 2009(4): 135-137.