MGIS中军标符号库的设计与应用研究

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MGIS中军标符号库的设计与应用研究
作者:梅霞郝建新汤晓安李欢
来源:《现代电子技术》2008年第02期
摘要:军标符号库的设计与实现是军事地理信息系统建设的一项重要基础性工作,是军事指挥自动化的必然要求。

基于面向对象的思想进行军标符号的图元设计;实现军标符号库的数据库构建与数据管理;提出并实现基于动态链接库封装的TreeView军标可视化方法及接
口,增强了系统的可移植性。

关键词:军标符号库;MGIS;面向对象;军事标图
中图分类号:TP319 文献标识码:A 文章编号:1004-373X(2008)02-101-03
(School of Electronics Science and Engineering,National University of Defense Technology,Changsha,410073,China)
Abstract:Design and realization of military symbol database is an important basic task of military geographical information system construction.It is the inevitable requirement of military commander automation.The paper carries out the graphical element design for military symbols based on the object-oriented design method,having realized the construction of military symbol database and data administration.It proposes and achieves the encapsulation of TreeView military symbol visualization method and interface with DLL dynamic link library technique,which increases the
Keywords:military symbol database;MGIS;object-oriented;
1 引言
军事标图[1]是在地图或其他专用底图上以规定的符号、文字和颜色标绘军事情况的作业。

军事标图是传输军事信息的一种特有语言,是为指挥员展示战场态势的一种重要手段。


着计算机技术的应用,如何利用计算机技术加快军事标图流程逐渐成为军队信息化建设中高度关注的问题。

而军标数据库的构建及应用作为军事标图系统最基础的核心内容,具有重要和迫切的研究意义。

由于军事领域是一个非常特殊的领域,国外计算机软件公司的通用标图软件不能直接用于该领域。

目前,国内某些指挥自动化系统中已有军标库管理的功能。

但有的只适用于软件开发人员对军标库进行管理,有的最终用户虽能对军标库进行管理,但从功能和操作上还不尽人意,严重影响着软件的实用化程度。

随着现代化战争科技化水平越来越高,综合性越来越强,制作一个军标数据符合国家标准、符号制作功能强大、管理方式灵活、系统移植性强、操作方
便的军标符号编辑系统是军事指挥自动化的必然要求。

本文针对上述需求,依据GJB840-90和GJB872-91 2个国家军用标准[2],基于VC++ 6.0开发平台,运用面向对象的思想进行军标符号的图元设计;构建了军标数据库模型,采用ADO数据访问技术对Access军标符号库进行数据管理;提出了基于动态链接库的树状列表视图(TreeView)应用方法。

具有重要的应用价值。

2 军标符号的图元设计
军标符号数据量巨大,不同的军标符号有不同的结构特点和构图规律。

这里采用图元法[3]绘制军标。

根据面向对象的数据模型[4]抽象出11个图元类:Bezier曲线、闭合Bezier曲线、直线、折线、多边形、椭圆、矩形、圆、圆弧、圆角矩形、文本。

同时将这些类的共同属性结构和操作方法归结成1个更高层次、更具一般性的类[CD2]图元类(CUnit)。

图元集合构成了所有符号的图形基础。

1个符号就是一个或多个图元集合的组合。

这样当绘制军标时,通过符号编辑器中提供的图元绘制工具可以方便、快捷地添加和修改军标符号,彻底摆脱程序的编写过程,便于以后的大规模应用。

3 军标符号库的组织结构
3.1 符号库的管理
为了满足军标符号种类繁多、形态各异的要求,设计了三级管理模式,实现军标符号分类管理。

符号编码是识别符号的惟一标准,目前我国对于符号的编码没有统一的标准,而国家军用标准中的军标符号也未进行编码,因此军标符号库系统采用自定义编码。

为了实现编码的跨
平台使用,符号编码定义为一级分类2位;二级分类4位;三级分类6位。

编码数字依次反映了符号的分类和制作顺序:一级分类编码按照分类顺序依次编码;二级分类编码前2位为所属的一级分类编码,后2位代表分类顺序;三级分类编码前4位为所属的二级分类编码,后2位代表符号制作顺序。

3.2 符号库的存储机制
目前许多GIS软件的符号制作系统都采用文件管理方式,索引方法也采用文件索引。

这种方式无论是符号的共享还是数据的统一管理都存在缺陷。

而数据库对数据的管理具有持久性、有效性和共享性的特点,极大地减少了数据的冗余,消除了数据不一致的隐患,提高了存储和查询效率[5]。

因此军标符号库采用Access数据库进行符号存储。

图1用E-R模型描述了军标数据库的数据模型。

E-R模型映射到关系数据库定义时,一个实体类型对应一张表,每张表采用主键索引。

3.3 符号库的数据管理
军标符号库的数据管理是指数据库中符号的建立、修改、删除、显示和查询等多种功能。

这里军标符号库利用外接Access数据库强大的数据管理功能,采用ADO数据访问方法对数据库进行访问和维护。

下面详细介绍军标数据库数据管理部分的实现:
(1) 数据库连接:创建一个ADO的连接类,包含了基本的连接、断开数据库,记录查询等操作。

main attribute:
ConnectionDatabase()[JY]//连接数据库
[JY]//传入查询字符串;执行查询,返回结果集指针
GetRecordSet(参数:
[JY]//传入SQL语句;执行SQL语句
ExecuteSQL(参数:
ExitConnect()[JY]//断开数据库连接
(2) 表维护:为军标库每一张表创建1个类,包含对表的插入、删除、更新等基本操作。

下面以军标一级分类表类为例:
main attribute:
[JY]//传入一级军标ID和名称;向军标一级分类表中插入新记录
InsertRecord(参数1:MS_ID;参数2: MS_Name)
[JY]//传入一级军标ID;更新军标一级分类表中记录
UpdateRecord(参数:MS_ID)
[JY]//传入一级军标ID;删除军标一级分类表中记录
DeleteRecord(参数:MS_ID)
Load_Record()[JY]//批量读取表中记录
[JY]//传入军标一级分类ID;判断是否存在相同记录
IsSameRecord(参数:
(3) 军标查询:提供根据军标名称和军标属性2种方式查询,支持精确和模糊查询。

如图2所示:
(4) 军标管理:完成军标的新增、修改、删除操作。

下面以新增军标为例,如图3所示:
3.4 符号库中军标对象的访问
这里开发的军标符号库系统中的军标是以自定义的文件格式存储的,有特定的序列化方式,在数据库中以OLE对象的方式存储成二进制流。

数据库处理图像文件这种大型的二进制数据,在ADO2.5版本以前,是利用ADO的Field对象中的GetChunk和AppendChunk两种方法实现文件的存取。

但是用这2个函数来实现大型二进制数据在数据库中的存取非常繁琐。

在ADO2.5版本以后添加了Stream对象,可以用来实现大型文件的存取。

通过他可以更容易地操作数据库中的大型二进制数据[6]。

本文采用这种方法,实现步骤如下:
存储文件到军标数据库:
Step 1:定义Recordset指针和Stream指针,并生成实例;
Step 2:打开Recordset对象,根据查询要求,获得满足条件的军标记录集;
Step 3:打开Stream对象,并从临时文件中读取需要的军标文件;
Step 4:把文件存储到数据库中对应的军标记录的军标对象字段;
Step 5:关闭Stream对象和Recordset对象,退出数据库连接;
读取军标对象到临时文件夹:
Step 1~2:步骤同上;
Step 3:打开Stream对象,从满足条件的军标记录的军标对象字段中取得数据并存储到临时文件夹;
Step 4:关闭Stream对象和Recordset对象,退出数据库连接。

4 军标符号库的应用与扩展
4.1 军标符号库对专用军标库的支持
本文中的军标符号库中的军标是以国家颁布的军用标准为基础的。

但是,各个军事领域都有自己专有的军标符号,因此军标符号库也考虑到对专用军标库的支持,实现多套符号系统的
编辑和管理。

处理步骤如下:
Step 1:将专用军标数据库拷贝到指定的文件目录下;
Step 2:检查用户输入,在文件目录下搜索与用户输入相同的数据库名,返回搜索结果;
Step 3:若未找到相应数据库,提示用户错误信息;若找到此数据库,通过
ADOConnection类的ConnectionDatabase方法连接此数据库。

4.2 军标符号库TreeView结构的实现
军标符号库实现了军标符号的编辑与存储,是军标符号的管理系统。

他与辅助指挥系统、战场态势标绘系统等军事指挥系统相结合,是现代化军事指挥和仿真模拟训练的必然要求和趋势。

但是目前国内开发的许多军标符号库系统没有对相关系统支持的接口,造成系统集成困难,可移植性差。

为了改善这种情况,将军标符号库与战场态势标绘系统相结合;考虑到今后系统的应用与扩展,为了增加程序的灵活性、可维护性以及代码的可重用性;利用动态链接库封装TreeView结构的军标符号库,在应用程序中只要调用动态库中的函数即可执行相应的功能。

(1) 创建MSDBTreeView类
类包含多个树页面,每个树页面对应军标一级分类表中的一个一级军标。

然后在每个树页面中添加此军标名称下属的子结点名称。

类结构定义如下:
main fields:
字符串 TreeViewID [JY]//区分各个树页面的标志
main attribute:
//传入树页面标志和TreeView控件指针;向树页面中添加军标节点名称
AddtoTree(参数1: TreeViewID;参数
//传入选中TreeView节点名称;从数据库中读取节点军标记录,显示军标对象
ShowMSObject(参数:
CreateTreeView( )[JY]//读取数据库,生成树状目录
(2) TreeView结构的军标符号库的封装
动态链接库(DLL)是共享函数库的可执行文件。

将上面实现的TreeView结构的军标符号库封装成1个函数库,制作成DLL,他包含了全局数据、编译过的函数和资源。

使用 DLL 有助于促进代码的模块化、代码重用、内存的有效使用和减少所占用的磁盘空间,为今后的软件开发提供了便利条件。

因此,使用动态链接库封装TreeView结构的军标符号库大大增强了系统
的可移植性,方便了其他系统共享符号库信息。

5 实验结果及分析
图4显示了战场态势标绘系统集成军标编辑系统的综合效果图。

图左的红色方框为TreeView结构的军标符号库。

通过左上角菜单“军标”→“连接数据库”,可以选择需要连接的数据库名,确认后在TreeView中显示其军标结构。

选中军标名称可在右面的态势图中绘制军标。

系统界面操作简单,标绘信息清晰。

采用动态链接库封装TreeView结构的军标符号库的应用策略,便于军标符号库的移植和与相关系统的集成。

6 结语
本文对MGIS中军标符号库的图元设计和组织结构进行讨论。

基于面向对象的数据模型,采用图元法绘制军标,方便了军标绘制,易于系统的大规模应用。

运用ADO访问Access数据库的方法代替传统的文件管理方式实现
对军标符号库的管理,提高了数据存储和查询的效率。

同时考虑到军标符号库的今后扩展应用,方便与其他系统的符号共享,增加系统的灵活性,提出了用动态链接库的方式封装TreeView结构的军标符号库。

以上思想已应用于这里的MGIS符号编辑系统和战场态势标绘系统。

实践证明,获得了较好的结果。

参考文献
[1]蒋定定,赵友庚.军事标图系统的自动化设计[J].兵工自动化,2004,23(3):15-
[2]李兵,叶海建,方金云,等.图元法符号库的设计思想研究[J].计算机工程与应
用,2005(17):36-
[3]王永明,林行刚.军用电子地图系统[CD2]一种引人注目的多媒体信息系统[J].小型微型计算机系统,1995,16(8):12-
[4]刘云华,唐兰兰.面向对象思想的GIS地理数据库设计初探[J].测绘与空间地理信息,2006,29(2):61-
[5]鞠时光.对象关系型数据库管理系统的开发技术[M].北京:科学出版社,
[6]电脑编程技巧与维护杂志社.Visual C++编程技巧典型案例解析[CD2]图形图像处理与数据库篇[M].北京:中国电力出版社,
[7]孙伟,贾丹平,伞宏力.基于VC++6.0视图-文档模式下的串口通讯系统的研究[J].现代电子技术,2006,29(22):88-89,95.
注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。

相关文档
最新文档