第37卷第5期 船海工程 SHIP&OCEAN ENGINEERING V01.37 No.5 Oct.2008 2008年1O月 文章编号:1671—7953(2008)05—0127—04 基于MapX的电子海图显示系统开发 朱恩亮,王勇,王光耀。都广斌 (西安电子科技大学电子工程学院,西安710071) 摘要:提出一种新的面向S-57国际标准电子海图的显示方案。在分析S-57等标准的基础上,对电子 海图进行解封装,建立一种Access数据库与空间二进制文件相结合的数据结构,结合MapX控件,在Delphi 平台上实现电子海图的绘制、显示与操作。该方案成功地应用于某船舶监测系统,具有良好的显示和操作效 果,达到了预期的性能指标。 关键词:ISO/IEC 8211;解封装;电子海图;MapX 中图分类号:U675.81 文献标志码:A Electronic Chart Display System Development Based on MapX ZItU En-liang,WANG Yong,WANG Guang-yao,DU Guang-bin (School of Electronic Engineering,Xidian University,Xi’an 710071,China) Abstract:A new display scenario of electronic chart orienting S-57 International standards was brought forward.Based on the analysis of corresponding standards,the electronic chart’S de-capsulation was achieved and a data structure combined Access database with binary file was built.Utilizing MapX,the electronic chart’S protraction,display and manipulation was realized on Delphi platform.The scenario had been applied to a ship monitoring system successfully and showed a better display and manipulation,it not only achieves the perspec— tive capability index,but also makes a profound effect on application of electronic chart navigation systems. Key words:ISO/IEC 8211;d capsulation;electronic chart;MapX 随着航海技术的发展,电子海图正逐渐取代 传统的纸质海图,得到愈加广泛的应用。IHO S- 57是国际海道测量组织颁布的数字化海道测量 数据传输标准,已在世界范围内得到广泛认可和 应用。为加快我国对 57国际标准电子海图的 应用和普及,开发符合S-57标准的电子海图显示 系统是当务之急。 法,本设计中利用了Delphi强大的数据库功能。 首先对ISO/IEC 821 1进行解封装并建立Access 数据库和空间信息文件,以提高查询和显示速度; 然后逐条访问数据库中的记录,利用集成的 MapX控件逐层绘制电子海图,完成显示,并实现 了放大、缩小、漫游等基本功能。 ENC中海图信息的描述采用S-57中给出的 物标分类编码系统,数据文件逻辑格式采用S-57 格式,物理存储和传输格式采用ISO/IEC 8211。 而S-57格式涉及到比较复杂的数据模型和结构, 1 ISO/IEC 821 1解封装和数据库 的建立 1.1 S-57标准的数据结构 对海图文件进行解封装,首先必须了解其封 装结构。S-57电子海图使用ISO/IEC 8211作为 其数据封装标准。ISO/IEC 8211文件的基本成 分是逻辑记录(LR),ISO/IEC 8211文件的第一 个逻辑记录叫做“数据描述记录”(DDR),它包含 该文件中实际数据的描述和逻辑结构。ISO/IEC 因此,对其进行解析并建立海图数据库,完整地导 人海图数据,是电子海图显示的重要步骤_1]。 不同于以往海图显示中建立单一数据库的方 收稿日期:2008—05—30 修回日期:2008—06—25 8211文件中的其他部分则称为“数据记录 (DR)”,其中包含了所有交换文件中的实际数据。 每一个逻辑记录(包含DDR和DR)有3个 作者简介:朱恩亮(1983一),男,硕士生。 研究方向:信号与信息处理。 E-mail:Enliangzhu@1 63.tom 基本元素:头标区、目次区和字段区。头标区包括 1 27 第5期 船海工程 第37卷 读取记录分解到每个实体的所需参数,而对于 DDR来说还包括了用于整个文件的一些描述参 数;目次区包含了确定每一个字段在字段区的标 识和定位参数。目次区由重复的目次项目组成, 包括字段标记、字段长度、字段位置等;字段区是 要解析的逻辑记录的主体。 1.2 ISO/IEC 8211解封装 本设计中利用Delphi编程,对ISO/IEC 8211进行解封装。解读时必须按照前序遍历的 顺序,从DDR中得到能解开DR数据所需的描述 信息,DR的字段区包含需转换的具体数据。其 中,固定位长的子字段按规范指定的格式以字节 单位读取,变长字段在数据结构中由无范围限定 的格式指示符规定。 矢量电子海图中图元分为3种基本类型:点、 线和面。常见的点状物标有标志地物、居民地;线 状物有河流、街道、行政界限、等高物等;面状物有 植被、街区、行政区域等。点状物用(X,Y)一对坐 标来表示;线状物用(X。,Y )、…、(X , )一系列 坐标表示;而面状物则用(x ,Y1)、(X ,Y2)、…、 (X , )、…,等一系列坐标表示。因此,解读后 的文件分为属性数据和空间信息数据两部分。 Access数据库文件见图1。 图1 由原始海图文件转化来的数据库 其中包含文件头信息、点状要素、线划、拓扑 区、水深5个数据表,分别存储文件头、点状物标、 线状物标、面状物标和水深属性信息,以及点和水 深数据的空间坐标信息,而线和面的空间坐标信息 则包含在另外一个后缀名为.xy的二进制文件_2] 中,例如CN440401长江口及附近.Xy,其数据结构 为struct(1at as double,log as double,pen as int)。 lat为纬度信息;log为经度信息;pen为抬笔信息, 如果该点为起点,则pen定义为1,否则为0,这样 定义是为方便绘图时使用。这样,面向数据传输和 】28 数据交换的原电子海图数据就被转换成了能够有 效支持电子海图显示、存储和操纵的数据。 2 电子海图的绘制、显示与操作 2.1 MapX MapX是一个基于ActiveX(OCX)技术的可 编程控件。它使用与Maplnfo Professional一致 的地图数据格式,并实现了大多数Maplnfo Pro— fessional的功能。在VB,Delphi,PowerBuilder, VC等可视化开发环境中,只需在设计阶段将 MapX控件放人窗体中,并对其进行编程,设置属 性或调用方法或相应事件,即可实现数据可视化, 专题分析,地理查询,地理编码等丰富的地图信息 系统功能。MapX定义了一个类体系,以有效地 组织地图图形元素、图层、属性数据等对象。 2.2电子海图的绘制 根据S-52等相关标准建立查找表(描述电子 海图中图元样式的文件,例如描述海岸线的线型、 线宽、线色等)。并通过访问数据库记录,调用空 间信息文件与查找表,利用MapX控件的Create— Layer、CreateRegion EraseFeature1 CreateI。ine、 CreateSymbol、AddFeature等方法来逐层绘制电 子海图,以完成电子海图的显示。 2.3区域图元的绘制 绘制区域图元,需要利用MapX的Fea— tureFactory.CreateRegion方法,对复杂的区域图 元(区域轮廓非一笔所能画成的)还需要用到 FeatureFactory.EraseFeature方法。区域图元的 绘制思想是先绘制最大的区域,然后再在此基础 上逐个擦除其所包含的各个小的区域。例如: Object.CreateRegion([Points],EStyle ̄)//绘制 最大的区域 其中,Object为FeatureFactory对象;Points 为表示用于定义区域或Rectangle对象的经纬度 点的集合;Style为定义图元外观的对象(例如:区 域边框的线型,线宽、线的颜色、区域的填充颜色 及填充样式等)。此方法返回的Feature对 象。这个的Feature对象就是所要绘制的简 单区域图元。 Object.EraseFeature(SourceFeature,Eraser— Feature)//擦除各个小的区域 其中,Object为FeatureFactory对象;SourceFea— ture为一个Feature对象,表示需要擦除的源图元; 基于MapX的电子海图显示系统开发——朱恩亮,王勇,王光耀,都广斌 同样,EraserFeature也为一个Feature对象,其表 示要从SourceFeature中擦除的那部分小的区 域。此方法通过从一图元“消除”另一个图元面 积,返回的Feature对象,这个的Fea— 2.6数据绑定 如果仅仅用上面的方法,最后得到的将是一 些不包含任何属性信息的海图,这不是用户所期 望的。这就需要利用MapX的Datasets.Add方 ture对象就是要绘制的复杂区域图元。 2.4线图元的绘制 可以利用MapX的FeatureFactory.Create— 法(数据绑定方法)来使海图中的每个图元与数据 库中的一条记录相对应,以便用户查询图元的相 关属性信息。 Line方法来绘制线图元。例如: Object.CreateI ine(EPoints],]-Style-])//绘 制线图元 其中:Object为FeatureFactory对象;Points集 合,为用于定义线的经纬度点的集合;Style为用 于定义图元的外观(包括线型、线宽、线的颜色 等)。对于特殊的线型,本文通过利用Maplnfo Line Style Editor 2.0来编辑MapX.pen文件,实 现起来比较简单,这里不再赘述。 2.5点图元的绘制 电子海图中点图元(例如:灯标、沉船、障碍物 等)的样式非常复杂,如何绘制这些复杂的点图元 是必须解决的难题,在开发过程中发现利用Tru— eType制作符号库可以非常有效地解决这一问 题。TrueType是由Apple公司最早为解决图形 系统下字体显示问题而提出的新技术,是一种矢 量化符号的描述。字体文件是整个电子海图符号 库的载体,为避免单个文件过于庞大,影响系统执 行速度,在制作字体时需要将符号分类存储_3]。 基于TrueType的文本只支持单色输出,为了显 示一个有多种颜色的复杂符号,例如:一个灯标, 则至少要用到黑色和另外一种颜色(红色、绿色、 黄色等),那么就需要把黑色部分和另外一种颜色 的部分分别制作成两个的符号,并且这两个 符号要中心对准。在绘图的时候,需要分别绘制 这两个的符号以构成完整的灯标符号。为了 不影响绘图速度,需要把构成一个完整符号的所 有符号置于同一个字体文件中。而许多复杂 的符号又具有相同的部分,因此把这些相同部分 提取出来,可以大大减少制作的工作量。在使用 字体编辑工具(例如Font Creator 5.0)来制作符 号时还需要考虑符号的相对大小及每个符号相对 于中心的偏移量等。将字体文件(*.ttf)安装 后,MapX就可以通过调用字体文件,结合查找 表,并利用FeatureFactory.CreateSymbol方法来 绘制各种各样的点图元。 2.7电子海图的海量存储、无缝拼接与多比例尺 显示 在利用MapX进行海图显示时,为了能够正 确显示各幅海图间的上下叠加关系,需要事先将 所有需要显示的海图的所有图层加入到一个Ge— oset数据集中(*.gst文件)。由于海图数据量很 大,一次载入过多图层不仅使载人速度变慢,而且 会造成电子海图对用户操作的响应变得迟缓,从 而大大了其灵活性。MapX是按地图分层的 方式进行空间数据的组织,因此,可根据当前的船 位,通过程序搜索所有海图的覆盖范围来判断是 否加载或卸载某幅海图,利用Layers.Add/Lay— ers.Remove方法可逐层加载或卸载海图图层,并 设置图层的最大最小显示尺度,以达到减少数据 量的目的,同时还能实现多幅海图的无缝拼接与 多比例尺显示。当然,在加载图层的过程中,需要 根据比例尺来调整正在加载的图层与已加载图层 的上下叠加关系。 2.8电子海图的操作 通过设置MapX的CurrentTool属性可轻松 实现电子海图的放大、缩小、漫游等功能。例如: Map1.CurrentTool:一miZoomIn;//放大海图。 在没有可被直接调用的工具时,可以使用 CreateCustomTool方法来创建自定义工具,并在 ToolUsed等事件中编写对应工具的功能代码,然 后通过设置CurrentTool属性来调用该工具 J。 3 结果及分析 图2所示的是利用本方案开发的电子海图显 示软件界面。基于全国海区电子海图,显示了长 江口及附近的电子海图。在该界面中,用户不仅 可以自由地对海图进行放大、缩小、漫游等操作, 而且也可根据实际需要,实现航线设定、偏航报 警、轨迹回放等功能。 (下转第133页) 129 面向大批量定制的船舶辅机设计制造一体化集成技术研究——陈超,唐文献 系统集成的主要任务是应用系统集成、异构 软件接口开发、PDM产品定制等。 参考文献 [1]吴锋,李怀祖,韩新民.关于大批量定制的思考 ]. 3 结束语 本文以客户化需求为目标,结合船舶辅机的 多品种、小批量生产特点,通过面向大批量定制的 船舶辅机产品模型的建立,研究船舶辅机大批量 定制的配置设计技术和变型设计技术;构建基于 PDM的船舶辅机大批量定制设计制造一体化集 成系统。基于知识驱动的船舶辅机快速配置设计 与仿真技术相结合,促进船舶辅机的仿真开发,提 工业工程与管理,2001,6(2):18—21. [2]唐文献,李莉敏,方明伦,等.支持产品创新的协同开 发平台研究与实现[J],南京理工大学学报,2004,28 (4):421-426. r 3]ALEXANDER F,GERHARD F,DIETMAR J. Conceptual modeling for configuration of mass CUS— tomizable products[,J].Artificial Intelligence in Engi— neering,2001,15(2):165—176. E4]BROWN D C Defining configuring[J].Artificial In— telligent for Engineering Design,Analysis and Manu— 高船舶辅机关键技术的自主创新能力及国产化设 备装船率。 facturing(AIEDAM),1998,12(4):301—306. (上接第129页) 提出了一种电子海图的显示方案。在Delphi平 台上嵌入MapX控件,开发出了具有较高显示速 度和较好显示效果的电子海图显示系统。并可在 此基础上实现后续开发,叠加AIS信息、雷达信 息和实现导航功能等。 参考文献 [1]孟婵媛,翟京生,陆 毅.8-57数据的组织与实现 I-J].测绘学院学报,2003,20(4):275—278. 图2 子海图显示软件界面 [2]王俊玲.电子航海图二进制数据格式转换的实现 [J].集美大学学报,2005,lO(1):42—48. E3]谭晓智,赵德鹏,王德强.符合S-52规范电子海图系 统的设计与实现[J].大连海事大学学报,2002,28 (4):51—54. 利用该方案开发的电子海图显示系统已被成 功应用于某船舶监测系统中,具有良好的显示效 果,达到了用户对系统性能指标的要求。 4 结束语 为加快电子海图在我国的应用与普及,本文 [4]杨春金,潘玲.MapX在电子海图中的应用与实现 口].船海工程,2006,35(6):116—118. 133