0 前言
地理信息系统(GIS) 在国民经济各领域已得到广泛地应用,ArcInfo是美国ESRI公司开发的GIS平台软件, ArcInfo凭借其强大的数据采集存储、图形编辑、信息检索、地理分析等功能广泛应用于城市规划、测绘、国土信息资源管理、海图制作等各个业。ArcInfo包括ArcMap 、ArcCatalog 和ArcToolbox 三个应用程序,其中ArcMap 提供了一体化的地图绘制、显示、编辑、输出的集成环境,具有强大的制图编辑功能。用ArcMap编制地图,首先要获得数字形式的地图数据,即对已有地图进行数字化或把地面测量中测得的点输入计算机,连接形成各类图形要素,并对数据进行符号化和地图注记的放置,然后按照应用的需要,制作出一幅完整的电子地图,ArcMap 为用户编制电子地图提供了丰富的功能和途径,目前已成为嵌入式电子海图制作领域应用最为广泛的工具之一。
1 ArcMap 软件功能的二次开发
用ArcMap制作的电子海图可直接用于工控机设计的船舶电子海图显示系统,但是在嵌入式电子海图显示系统中,为了充分发挥嵌入式处理器的优点,提高显示海图的速度与效率,需要将制作好的电子海图转换为特殊的二进制文件格式。为了方便制作非标格式嵌入式电子海图文件,可对ArcMap软件进行了定制功能的二次开发。利用该工具可在电子海图修改或制作中方便并提高输入速度,使用该工具可进行一次性将点线面输入时所有的参数录入。在完成修改后可使用该工具输出三个文本文件,分别是点数据文本文件(point.dat)、面数据文本文件(polygON.dat)、线数据文本文件(polyline.dat)。图1为定制功能中命令栏中经二次开发产生的菜单工具功能选择窗口图。
2 嵌入式电子海图的制作与数据导出
嵌入式电子海图的制作流程为:首先打开已有海图或新建电子海图,然后修改或创建点、线、面数据,最后保存海图文件,保存文件名为*.mxd,然后利用专用开发工具导出点数据文本文件(point.dat)、面数据文本文件(polygon.dat)、线数据文本文件(polyline.dat)共三个文件。三个文本文件再利用专用软件生成为一个二进制的文件即可写入嵌入式电子海图中的存储器,供处理器调用显示海图。图2为用ArcMap软件制作舟山海域海图时的操作窗口图。
3 嵌入式电子海图数据的显示
嵌入式电子海图显示系统使用前需要通过计算机的超级终端拷入处理主程序及至少5个文件才能运行,5个文件是国标汉字库文件、logo图片文件、文本文件(港口介绍等)、图片文件(航行对景图片)。首次拷入文件时需对Nand flash进行格式化,以后如有图片文件更新等操作,可用DOS命令进行删除或建立。
(1)logo图片(PCX格式)的显示方法
在嵌入式电子海图显示系统中,开机后会显示一幅开机图片,由于嵌入式电子海图系统中内存较小,CPU 处理速度有限,对现有计算机流行的图片格式进行比较后,嵌入式电子海图系统中选择了PCX 图片格式作为开机显示图片。PCX 格式比BMP 格式占有存储容量小,比JPG 格式图片解压时占有CPU 资源也少得多。显示PCX 图片的过程如下:
读取 PCX 文件头(读出图片文件的大小、判断是否是PCX 图片、颜色位数等)
读调色板(读取图片的颜色信息)
解压图片数据(图片数据恢复)
设置调色板(设置嵌入式海图系统中的调色板与显示图片调色板一致)
显示开机画面
以下是标准PCX 格式图片的文件头:
typedef STruct stPcxHead
{ //PCX 文件头数据结构,共128 字节
int8 Signature; //PCX 文件标志,始终是0AH
int8 Version; //版本号
int8 Encoding; //压缩标志,始终是1,表示有限行程编码
int8 BitsPerPixel; //每像素所占位数
int16 XMin,YMin; //图像左上角坐标
int16 XMax,YMax; //图像右下角坐标
int16 HRes,VRes; //存储此PCX 文件的图形模式分辨率
int8 Palette[48]; //16 色DAC 调色板
int8 Reserved1; //保留
int8 ColorPlaneNum; //颜色平面数
int16 BytesPerLine; //每行字节数
int16 PaletteType; //DAC 调色板类型
int8 Reserved2[58]; //全为零
}stPcxHead;
(2) 嵌入式电子海图数据的显示方法
电子海图数据的实时显示是系统的核心程序。该程序根据给出的中心点位置(通常为GPS 给出的船位点坐标)及显示比例范围参数,确定需要显示的空间数据范围,并从海图文件中找出符合显示范围的数据,从海图文件中读出图层分层控制信息以实现电子海图的分层显示控制,最后按各类实体对应的符号要素代码绘制相应的图形符号在内存中快速完成海图的绘制。电子海图显示程序流程为:1、根据中心(船位)经纬度及显示比例参数,计算出显示数据块的大小;2、从海图文件中找出符合显示块范围的所有点、线、面数据;3、将要显示的点、线、面数据按类型及属性在显示缓存中按对应的位置、图案颜色、中文标注进行画图;4、显示涮新屏幕;5、按操作命令选择显示要素,重新计算显示数据块。
嵌入式电子海图显示系统中使用了16M 字节的内存空间,电子海图数据一般在10MB左右,剩下4MB 中用于显示缓存作图的为480KB,这是按800*600 点显示屏幕计算的容量。剩下的空间用于程序计算及汉字库、文本等数据的存放。由于显示缓存只有一块,因此在每次显示范围发行变化时,都要从内存中将海图数据重新读算一遍,再重新进行画图。这在海图移动操作中会影响涮新的速度,使用大容量位图缓冲内存技术可提高海图在移动或漫游时的涮新速度。图4 为嵌入式电子海图显示效果图。
4 小结
嵌入式电子海图仪中海图数据使用自定义数据格式,海图数据格式与处理显示方案自成一体,海图数据按点、线、面类型分类,并且按一定的规律连续存储,有利于知识产权的保护,也可大大减小文件数据的容量。缺点是数据文件的交换性较差,不适合全球性网络式的应用模式。