一种VxWorks平台电子海图引擎处理系统转让专利

申请号 : CN201410402128.0

文献号 : CN104166715B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 漆帅刘宇卢新平吴小文吴选周密王楠邬民莺彭银辉

申请人 : 成都天奥信息科技有限公司

摘要 :

本发明公开了一种VxWorks平台电子海图引擎处理系统,包括图库管理模块、内存海图库管理模块;所述图库管理模块,包括海图文件库、海图文件管理模块、图库调度模块,还包括海图元素归类模块,面元素填充模块,显示模块,所述面元素填充模块包括面元素组第一预处理模块、多边形剪裁模块、多边形填充模块。该发明克服了以往VxWorks平台上电子海图引擎加载电子海图速率慢、显示图像速度性能低、没有完全遵循S52及S57标准带来的缺陷,大大降低运算所带来的运算芯片的计算资源消耗,提高了电子海图引擎的显示速率,降低了大量实时图形填充显示处理时的热量,具有交互显示低时延等有益效果,特别适于散热量、运算性能制约较严重的设备。

权利要求 :

1.一种VxWorks平台电子海图引擎处理系统,所述系统包括:

图库管理模块、内存海图库管理模块;

所述图库管理模块,包括海图文件库、海图文件管理模块、图库调度模块,所述海图文件库用于存储海图文件,所述海图文件管理模块用于管理所述海图文件库,

所述图库调度模块用于获取实时的屏幕显示区域信息,根据接收的实时屏幕显示区域信息更新内存中第一海图文件集,内存海图库管理模块,用于读取由所述图库调度模块更新至内存中的所述第一海图文件集、实时屏幕显示区域信息,根据实时屏幕显示区域设置显示缓冲区域,由所述显示缓冲区域从第一海图文件集中确定第一有效海图元素集,对所述第一有效海图元素集建立索引文件;

其特征在于,所述系统还包括海图元素归类模块,面元素填充模块,显示模块,所述海图元素归类模块用于将第一有效海图元素集中的海图元素分别归类至点元素组、线元素组、面元素组;

所述面元素填充模块用于将面元素组生成为面元素内存位图,所述面元素填充模块包括面元素组第一预处理模块、多边形剪裁模块、多边形填充模块;

所述面元素组第一预处理模块用于将待处理文件中表示矢量多边形的点集合列表转换为能够表示矢量多边形处于屏幕显示区域内部分的点最小子集合列表,所述多边形剪裁模块用于将点最小子集合列表转换为待填充矢量多边形点集合列表,所述待填充矢量多边形点集合列表只表达点最小子集合列表表达区域所处于屏幕显示区域内的子区域;

所述多边形填充模块将待填充矢量多边形点集合列表着色填充为面元素位图;显示模块,用于将点元素组的各个点、线元素组的各条线分别用标准表达库表达为点标准显示、线标准显示后叠加至面元素位图后生成用于输出显示的第一内存位图。

2.如权利要求1所述VxWorks平台电子海图引擎处理系统,其特征还在于,所述面元素组第一预处理模块用于实现以下步骤:a)九网格建立步骤,所述九网格建立步骤根据实时屏幕显示区域的各边界及各边界的延长线将整个坐标空间分隔为九个子区域,并对各子区域进行编码;

b)初始化设置表示矢量多边形的点列表集合的网格标示,设置起始点;

c)由起始点按照矢量多边形连接顺序遍历点列表集合中的每一个点,判断该点是否在屏幕内,如果在屏幕内,则添加进点最小子集合列表;如果该点不在屏幕内,判断是否和前一个点是同一个点;

f)如果新点和上一个点不是同一个,则判断新点和上一个点所在的区域是否是同一个,如果不在同一个区域则添加进点最小子集合列表;

g)设置上一个点网格标示为当前新点网格标示,重复c步骤。

3.如权利要求1中所述VxWorks平台电子海图引擎处理系统,其特征还在于,所述多边形剪裁模块用于实现Sutherland-Hodgman方法。

4.如权利要求1中所述VxWorks平台电子海图引擎处理系统,其特征还在于,所述多边形填充模块用于实现多边形扫描注入填充方法。

5.如权利要求1所述VxWorks平台电子海图引擎处理系统,其特征还在于,根据实时屏幕显示区域设置的所述显示缓冲区域的区域范围为实时屏幕显示区域的范围的9至12倍。

6.如权利要求1中所述VxWorks平台电子海图引擎处理系统,其特征还在于,还包括海图转换模块,所述海图转换模块用于读取原始海图文件,将读取的原始海图文件转换为SENC自定义海图文件格式的自定义海图文件。

7.如权利要求1中所述VxWorks平台电子海图引擎处理系统,其特征还在于,所述标准表达库标准为S52标准表达库。

说明书 :

一种VxWorks平台电子海图引擎处理系统

技术领域

[0001] 本发明属于海事、导航、GIS(地理信息系统)领域,具体应用于海图机、导航仪等产品的GIS信息系统的VxWorks底层支撑平台,具体涉及一种VxWorks平台电子海图引擎处理系统。

背景技术

[0002] 在海事、导航、GIS(地理信息系统)领域的业务中,作为海图机、导航仪等产品的GIS信息系统的底层支撑平台,电子海图是项目产品开发环节的一个重要模块。电子海图技术使用计算机可以快速生产数字化形式的海图-电子海图。相对于静态的纸质海图,电子海图的显示有着其无法比拟的优点。例如,可以迅速转换比例尺,以便详细观察航行中的关键航段,可以放大缩小感兴趣区域,可以快速更换海图,将海图信息与接收到的导航信息以及雷达信息等相叠加,在一个屏幕上显示,从而非常直观地为船舶的安全航行提供有力的保障等等。电子海图结合卫星定位设备、水声设备和无线电通信设备,组成电子海图显示与信息系统或电子海图系统,提高海上安全航行的自动化水平。
[0003] 现有的电子海图引擎存在着以下缺点:1、加载电子海图速率慢;2、显示图像速度性能低;3、没有完全遵循S52、S57标准。

发明内容

[0004] 本发明公开了一种VxWorks平台电子海图引擎处理系统,该VxWorks平台电子海图引擎VxWorks克服了以往VxWorks平台上电子海图引擎加载电子海图速率慢、显示图像速度性能低、没有完全遵循S52及S57标准带来的显示问题的缺陷,具有多海图文件的无缝拼接绘制显示低显示时延、无屏幕闪烁抖动等有益效果。
[0005] 实现本发明的VxWorks平台电子海图引擎的第一技术方案为:
[0006] 包括图库管理模块、内存海图库管理模块;
[0007] 所述图库管理模块,包括海图文件库、海图文件管理模块、图库调度模块,[0008] 所述海图文件库用于存储海图文件,
[0009] 所述海图文件管理模块用于管理所述海图文件库,
[0010] 所述图库调度模块用于获取实时的屏幕显示区域信息,根据接收的实时屏幕显示区域信息更新内存中第一海图文件集,
[0011] 内存海图库管理模块,用于读取由所述图库调度模块更新至内存中的所述第一海图文件集、实时屏幕显示区域信息,根据实时屏幕显示区域设置显示缓冲区域,由所述显示缓冲区域从第一海图文件集中确定第一有效海图元素集,对所述第一有效海图元素集建立索引文件;
[0012] 所述图库管理模块,包括海图文件库、海图文件管理模块、图库调度模块:所述海图文件库用于存储SENC自定义海图文件格式的海图文件,所述海图文件管理模块用于管理海图文件库,包括读取所述海图转换模块转换输出的自定义海图文件并添加至所述海图文件库、从所述海图文件库中卸载海图文件、保存海图数据库、从所述海图数据库中读取海图文件,所述海图文件库的采用数据库实现,包括各种关系型如Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等,也可以采用非关系型数据库如NoSQL等,也可以仅仅采用链表、哈希、图、树等常用数据结构进行存储。所述海图文件管理模块的管理功能使用现有数据库的增删改查等基本功能可以很容易实现,海图文件库的保存可存储于各种例如ROM、RAM、SD卡、FLASH或者其他形式的可读介质,实质为文件数据库管理的方式,现有技术非常容易实现此功能。
[0013] 所述图库调度模块用于获取实时的屏幕显示区域信息,根据接收的实时屏幕显示区域信息来计算出当前待加载至内存的第一海图文件集,并根据第一海图文件集更新内存中海图文件;实时的屏幕显示区域信息由系统中人机界面模块根据实时操作进行确定,包括待显示的海图坐标区域信息、比例尺信息等,第一海图文件集的确定方法可以为根据实时屏幕显示区域的坐标信息判断落入或部分落入该区域的海图文件为第一海图文件集中的海图文件,也可以为根据实时屏幕显示区域扩展而成的屏幕显示扩展区域判断落入或部分落入该区域的海图文件为第一海图文件集中的海图文件。海图文件所包含的区域范围可以通过对海图文件头区中的数据项进行计算得到。
[0014] 所述内存海图库管理模块,用于读取由所述图库调度模块更新至内存中的第一海图文件集的文件头,根据实时屏幕显示区域设置显示缓冲区域,由所述显示缓冲区域确定第一海图文件集中海图文件中待渲染的有效海图元素,所有有效海图元素构成第一有效海图元素集,根据读取的所述第一海图文件集的头文件对所述第一有效海图元素集建立索引文件;索引文件由海图文件文件头中的基本要素值得到,所述建立的索引文件以结构体的方式存储,结构体要素包括:图ID号、图名、由最小纬度最小经度最大纬度最大经度表示的图幅范围确定的南北西东坐标、比例尺、坐标乘数因子、3D水深乘数因子;
[0015] 还包括海图元素归类模块,面元素填充模块,显示模块,
[0016] 所述海图元素归类模块用于将第一有效海图元素集中的海图元素分别归类至点元素组、线元素组、面元素组;
[0017] 所述面元素填充模块用于将面元素组生成为面元素内存位图,所述面元素填充模块包括面元素组第一预处理模块、多边形剪裁模块、多边形填充模块;
[0018] 所述面元素组第一预处理模块用于将待处理文件中表示矢量多边形的点集合列表转换为能够表示矢量多边形处于屏幕显示区域内部分的点最小子集合列表,[0019] 所述多边形剪裁模块用于将点最小子集合列表转换为待填充矢量多边形点集合列表,所述待填充矢量多边形点集合列表只表达点最小子集合列表表达区域所处于屏幕显示区域内的子区域;
[0020] 所述多边形填充模块将待填充矢量多边形点集合列表着色填充为面元素位图;
[0021] 显示模块,用于将点元素组的各个点、线元素组的各条线分别用标准表达库表达为点标准显示、线标准显示后叠加至面元素位图后生成用于输出显示的第一内存位图。
[0022] 在将海图文件中当前屏幕部分绘制为可以直接用于显示输出的内存位图之前,需要将海图文件中的海图元素用表达库进行表达后叠加,以往在对海图元素的绘制通常是按照海图元素本身排布的顺序依次进行的,这样对点元素、线元素、面元素的绘制是交叉重叠进行的,由于点、线、面元素的绘制方式并不一样,绘制时所使用的步骤也不一样,所以切换时绘制方式的变化会带来处理器与高速缓存中的指令及程序数据的高频次更迭达不到高效流处理的效果,效率会非常低下,在加入了归类模块后将第一有效海图元素集根据头文件中的信息分别归类至点元素组、线元素组、面元素组,将各元素组中的元素分别依次进行表达,这样对于每一元素组采用的绘制算法模块相同,避免了因绘制元素种类不同而带来的处理器与高速缓存中的指令与程序的切换,优化了处理效率。
[0023] 对面元素组的绘制,就是对面元素组表达出的大量的矢量多边形进行绘制,而这些矢量多边形中有非常大比例的部分并不完全处于屏幕显示区域内,有些矢量多边形甚至只有小部分处于当前显示区域内,如图3所示为一个部分处于当前显示区域内的矢量多边形的情况,其一共包含有13个顶点的点列表集合,但是最小仅需要标识出的4个顶点就可以表示出包含全部的矢量多边形处于屏幕显示区域内的部分的矢量多边形子区域,这四个顶点构成此矢量多边形在此屏幕显示区域情况下的点最小子集合列表,面元素组第一预处理模块即是将待处理文件中表示矢量多边形的点集合列表转换为能够表示矢量多边形处于屏幕显示区域内部分的点最小子集合列表,后续的填充算法的处理时间与矢量多边形中待处理点集合的数量呈现非线性关系,填充算法消耗时间随处理点的数量急剧增加,具体的关系与后续填充算法的类型相关,根据算法类型不同存在O(n2)时间复杂度的情况,因此降低待剪裁、填充处理点的数量能够成倍的降低后续填充算法的处理时间,大大提高了原矢量图形多边形填充方法的处理效率,大大降低电子海图引擎中(显示S57等格式的电子海图)大量矢量图形元素的显示填充所带来的包括CPU(中央处理器)、图形显示处理器在内的运算芯片的计算资源消耗,提高了电子海图引擎的显示速率,降低了CPU或者图形显示处理芯片的大量实时图形填充显示处理时的热量,在电子海图引擎的应用平台中,有效改善实时海图处理的延时,特别适于散热量、运算性能制约较严重的低配电脑、移动终端所采用。
[0024] 进一步的,所述面元素组第一预处理模块用于实现以下步骤,
[0025] a)九网格建立步骤,所述九网格建立步骤根据实时屏幕显示区域的各边界及各边界的延长线将整个坐标空间分隔为九个子区域,并对各子区域进行编码;如图2为一种建立所述子区域的方式,处于九网格中心的子区域即为屏幕显示区域,然后将各子区域用一个编码表示。
[0026] b)初始化设置表示矢量多边形的点列表集合的网格标示,设置起始点;
[0027] c)由起始点按照矢量多边形连接顺序遍历点列表集合中的每一个点,判断该点是否在屏幕内,如果在屏幕内,则添加进点最小子集合列表;如果该点不在屏幕内,判断是否和前一个点是同一个点;
[0028] f)如果新点和上一个点不是同一个,则判断新点和上一个点所在的区域是否是同一个,如果不在同一个区域则添加进点最小子集合列表;
[0029] g)设置上一个点网格标示为当前新点网格标示,重复c步骤。
[0030] 初始化点列表集合的网格标示即是按照点所在区域进行编码的过程,由于表达矢量多边形的点是按照连接顺序进行排列的,所以遍历时也需要按照矢量多边形的连接顺序进行遍历,可以为正时针也可以为逆时针遍历。
[0031] 上述面元素第一预处理步骤的具体实现方式仅需要对每一个点进行一次遍历,其时间复杂度仅仅为O(n)即可将表示矢量多边形的点子列表集合转换为点最小子集合列表,而且即使是单次遍历的过程中通过将点列表集合中的点转换为所述九网格的子区域的网格标示仅需根据坐标进行一次比对判断,在电子海图的处理过程中比较非常容易实现,不需要额外的转换步骤,实现简洁,效率高,对额外的存储空间几乎无消耗。
[0032] 在采用面元素第一预处理步骤后整体填充过程的效率与改进前的整体填充效率的比较,改进后的整体效率是改进前效率的2.6倍左右,由于各个海图文件的矢量多边形的数目与屏幕显示区域的相对位置、表示点数等情况变化因素,单个海图文件的提升效果有一定起伏,这里采用大量多次数的叠加进行比较,同时需要注意的是,上述效率提升是对整体处理效率的提升,并且是处于海图文件的矢量多边形数量、点数处于一个相对较低水平的情况下,如果剔除掉改进前后相同的填充算法的耗时,改进部分对剪裁过程的实际效率提升是远大于2.6倍的,同时随着海图文件的矢量多边形数量、点数增加,实际效率提升也还将有进一步提升。
[0033] 进一步的,所述多边形剪裁模块用于实现Sutherland-Hodgman方法。具体实现过程如图4所示采用Sutherland-Hodgman方法的处理主流程,图5为Sutherland-Hodgman方法的处理主流程中的处理SP线段的子流程。具体分割处理策略表述如下:
[0034] 将多边形关于矩形窗口的裁剪分解为多边形关于窗口四边所在直线的裁剪,流水线过程(左上右下):前边的结果是后边的输入,一次用窗口的一条边裁剪多边形,考虑窗口的一条边以及延长线构成的裁剪线,把平面分成两个部分:可见一侧,不可见一侧;则多边形的各条边的两端点S、P,它们与裁剪线的位置关系只有四种:情况(1)仅输出顶点P;情况(2)输出0个顶点;情况(3)输出线段SP与裁剪线的交点I;情况(4)输出线段SP与裁剪线的交点I和终点P。
[0035] 上述过程相当于每次用窗口的一条边界对待剪裁的多边形进行剪裁,由于一条边界把平面分成两个区域,一个区域包含有裁剪窗口,称为窗口内部区域,另一个区域不包含剪裁窗口,称之为窗口外部区域。这样通过一条窗口边界可把落在窗口外部区域的图像去掉,只保留窗口内部区域的图形,并把它作为下一次待裁剪的多边形,逐边重复上述剪裁过程即可得到矢量多边形处于屏幕显示区域内部的待填充矢量多边形,完成剪裁。
[0036] 进一步的,所述多边形填充模块用于实现多边形扫描注入填充方法。其具体过程如下,按扫描线顺序计算扫描线与多边形的相交区间,再用指定的颜色依次显示所述相交区间的像素,所述相交区间的端点由计算所使用的扫描线与多边形边界线的交点获得。
[0037] 上述多边形填充步骤采用一种多边形扫描转换算法,其具体处理流程如图6所述,过程表述如下:按扫描线顺序计算扫描线与多边形的相交区间,再用指定的颜色依次显示所述相交区间的像素,所述相交区间的端点可以通过计算扫描线与多边形边界线的交点获得。
[0038] 对于一条扫描线,多边形的扫描转换过程可以分为四个步骤:
[0039] 求交:计算扫描线与多边形各边的交点;
[0040] 排序:把所有交点按x值递增顺序排序;
[0041] 配对:第一个与第二个,第三个与第四个等等;每对交点代表扫描线与多边形的一个相交区间,
[0042] 着色:把相交区间内的象素置成多边形颜色,把相交区间外的象素置成背景色。
[0043] 进一步的,根据实时屏幕显示区域设置的所述显示缓冲区域的区域范围为实时屏幕显示区域的范围的9至12倍。将所述实时屏幕显示区域设置的所述显示缓冲区域的区域范围设置为实时屏幕显示区域的范围的9至12倍具体在内存位图实现时是依照实时屏幕显示区域的范围中最小比例尺对应的内存位图进行,因为通常在移动海图区域进行细节查看定位时大多数的使用场景是小范围的拖动,在上下左右方向上很少超过当前屏幕显示区域一个屏幕,即使超过用户也需要停顿一下以辨别是否需要再次移动,这样内存位图9-12倍于实时屏幕显示区域范围的设置满足了任意方向至少一个屏幕范围的无延时移动的要求,在大多数情况下由于人眼观察的停顿时间,机器同时更新避免了大多数使用时无法忍受的闪烁抖动。通常情况下所述实时屏幕显示区域处于所述显示缓冲区域中的相对中部的位置,但是在移动至整幅海图边缘或接近边缘时,情况会有所不同,比如说极端情况下移动至整幅海图的左上角、左下角、右上角、右下角时,所述实时屏幕显示区域处于所述显示缓冲区域中的相对位置为左上、左下、右上、右下,所以所述实时屏幕显示区域处于所述显示缓冲区域中的相对位置由实时屏幕显示区域相对于海图文件库显示的总区域的相对位置决定,具体决定的方式包括如下策略示例,但不仅限于如下策略:
[0044] a)在边缘处某方向不足以将实时屏幕显示区域置于显示缓冲区域中间位置时,将实时屏幕显示区域与显示缓冲区域的相对位置向相应方向移动以至于显示缓冲区域不超出海图文件库显示的总区域,其余情况将实时屏幕显示区域固定置于显示缓冲区域中间位置;
[0045] b)设置根据实时屏幕显示区域与总区域相对位置的横纵向比例因子,根据横、纵向比例因子来调节实时屏幕显示区域在显示缓冲区域中的位置以保证显示缓冲区域不超出海图文件库显示的总区域。
[0046] 进一步的,还包括海图转换模块,所述海图转换模块用于读取原始海图文件,将读取的原始海图文件转换为SENC自定义海图文件格式的自定义海图文件。
[0047] S-57将真实世界定义为特征物标和空间物标,前者描述特征属性,后者描述空间属性。特征物标包括描述特征属性但不包括任何几何形状,而空间物标可以包含位置信息,同时必须包含几何形状。一个物标构成一个记录,一个交换集由多个记录构成,为了方便,又将记录组成文件。因此可以将S57标准海图文件按S57标准可以拆解为若干包含如下信息的(图ID号、图名、南北西东坐标、比例尺、坐标乘数因子、3D水深乘数因子)海图物标,将这些海图物标再按照SENC自定义海图文件格式组合即可转换为SENC自定义海图文件;读取的海图文件中的原始海图信息来源由包括导航传感仪、陀螺罗经、记程仪、探测仪、GPS/DGPS、RADAR、ARPA、气象仪、气象传真机在内传感装置传送至导航信息接收装置导入终端系统。
[0048] 所述S57标准海图格式为现有中的一种国际标准定义的一种海图文件格式,转换后的所述SENC自定义海图文件格式分为三部分,具体细节见具体实施方式部分的表1-1至表1-8中所列;
[0049] 转换后的自定义文件比S57原始文件的大小约小3倍,读入速度约快10倍,减小了海图文件的冗余量,可以满足海量海图在内存中的实时调换。
[0050] 进一步的,所述标准表达库标准为S52标准表达库。所述渲染模块将海图元素集中的信息绘制为位图显示信息的过程采用S52标准符号库,使用配合海图文件格式的标准符号库达到较好的兼容性、显示准确性、稳定性、显示效率。

附图说明

[0051] 图1是本发明所述的VxWorks平台电子海图引擎处理系统的模块连接结构及数据流向示意图;
[0052] 图2是本发明中的面元素预处理方法的一种九网格子区域划分及区域编码图;
[0053] 图3是本发明中的一种部分处于当前显示区域内的矢量多边形的状态示意图;
[0054] 图4是本发明中的面元素预处理方法中Sutherland-Hodgman方法来实现多边形剪裁步骤的实施流程图;
[0055] 图5是本发明中的多边形剪裁模块中的Sutherland-Hodgman方法来进行多边形剪裁中的处理线段SP步骤的实施流程图;
[0056] 图6是本发明中的多边形填充模块中用多边形扫描转换算法来实现多边形填充步骤的实施流程图。

具体实施方式

[0057] 下面结合实施例及附图,对本发明作进一步地的详细说明,但本发明的实施方式不限于此。
[0058] 本发明公开的VxWorks平台电子海图引擎的实施例1为:
[0059] 如图1所示是本发明所述的VxWorks平台电子海图引擎的模块连接结构及数据流向示意图,包括图库管理模块、内存海图库管理模块;所述图库管理模块,包括海图文件库、海图文件管理模块、图库调度模块,所述海图文件库用于存储海图文件,所述海图文件管理模块用于管理所述海图文件库,所述图库调度模块用于获取实时的屏幕显示区域信息,根据接收的实时屏幕显示区域信息更新内存中第一海图文件集,内存海图库管理模块,用于读取由所述图库调度模块更新至内存中的所述第一海图文件集、实时屏幕显示区域信息,根据实时屏幕显示区域设置显示缓冲区域,由所述显示缓冲区域从第一海图文件集中确定第一有效海图元素集,对所述第一有效海图元素集建立索引文件;
[0060] 所述图库管理模块,包括海图文件库、海图文件管理模块、图库调度模块:所述海图文件库用于存储SENC自定义海图文件格式的海图文件,所述海图文件管理模块用于管理海图文件库,包括读取所述海图转换模块转换输出的自定义海图文件并添加至所述海图文件库、从所述海图文件库中卸载海图文件、保存海图数据库、从所述海图数据库中读取海图文件,所述海图文件库可采用数据库实现,包括各种关系型如Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等,也可以采用非关系型数据库如NoSQL等,也可以仅仅采用链表、哈希、图、树等常用数据结构进行存储。所述海图文件管理模块的管理功能使用现有数据库的增删改查等基本功能可以很容易实现,海图文件库的保存可存储于各种例如ROM、RAM、SD卡、FLASH或者其他形式的可读介质,实质为文件数据库管理的方式,现有技术非常容易实现此功能。
[0061] 所述图库调度模块用于获取实时的屏幕显示区域信息,根据接收的实时屏幕显示区域信息来计算出当前待加载至内存的第一海图文件集,并根据第一海图文件集更新内存中海图文件;实时的屏幕显示区域信息由系统中人机界面模块根据实时操作进行确定,包括待显示的海图坐标区域信息、比例尺信息等,第一海图文件集的确定方法可以为根据实时屏幕显示区域的坐标信息判断落入或部分落入该区域的海图文件为第一海图文件集中的海图文件,也可以为根据实时屏幕显示区域扩展而成的屏幕显示扩展区域判断落入或部分落入该区域的海图文件为第一海图文件集中的海图文件。海图文件所包含的区域范围可以通过对海图文件头区中的数据项进行计算得到。
[0062] 所述内存海图库管理模块,用于读取由所述图库调度模块更新至内存中的第一海图文件集的文件头,根据实时屏幕显示区域设置显示缓冲区域,由所述显示缓冲区域确定第一海图文件集中海图文件中待渲染的有效海图元素,所有有效海图元素构成第一有效海图元素集,根据读取的所述第一海图文件集的头文件对所述第一有效海图元素集建立索引文件;索引文件由海图文件文件头中的基本要素值得到,所述建立的索引文件以结构体的方式存储,结构体要素包括:图ID号、图名、由最小纬度最小经度最大纬度最大经度表示的图幅范围确定的南北西东坐标、比例尺、坐标乘数因子、3D水深乘数因子;
[0063] 图1中所示还包括海图元素归类模块,面元素填充模块,显示模块,[0064] 所述海图元素归类模块用于将第一有效海图元素集中的海图元素分别归类至点元素组、线元素组、面元素组;
[0065] 所述面元素填充模块用于将面元素组生成为面元素内存位图,所述面元素填充模块包括面元素组第一预处理模块、多边形剪裁模块、多边形填充模块;
[0066] 所述面元素组第一预处理模块用于将待处理文件中表示矢量多边形的点集合列表转换为能够表示矢量多边形处于屏幕显示区域内部分的点最小子集合列表,[0067] 所述多边形剪裁模块用于将点最小子集合列表转换为待填充矢量多边形点集合列表,所述待填充矢量多边形点集合列表只表达点最小子集合列表表达区域所处于屏幕显示区域内的子区域;
[0068] 所述多边形填充模块将待填充矢量多边形点集合列表着色填充为面元素位图;
[0069] 显示模块,用于将点元素组的各个点、线元素组的各条线分别用标准表达库表达为点标准显示、线标准显示后叠加至面元素位图后生成用于输出显示的第一内存位图。
[0070] 在将海图文件中当前屏幕部分绘制为可以直接用于显示输出的内存位图之前,需要将海图文件中的海图元素用表达库进行表达后叠加,以往在对海图元素的绘制通常是按照海图元素本身排布的顺序依次进行的,这样对点元素、线元素、面元素的绘制是交叉重叠进行的,由于点、线、面元素的绘制方式并不一样,绘制时所使用的步骤也不一样,所以切换时绘制方式的变化会带来处理器与高速缓存中的指令及程序数据的高频次更迭达不到高效流处理的效果,效率会非常低下,在加入了归类模块后将第一有效海图元素集根据头文件中的信息分别归类至点元素组、线元素组、面元素组,将各元素组中的元素分别依次进行表达,这样对于每一元素组采用的绘制算法模块相同,避免了因绘制元素种类不同而带来的处理器与高速缓存中的指令与程序的切换,优化了处理效率。
[0071] 对面元素组的绘制,就是对面元素组表达出的大量的矢量多边形进行绘制,而这些矢量多边形中有非常大比例的部分并不完全处于屏幕显示区域内,有些矢量多边形甚至只有小部分处于当前显示区域内,如图3所示为一个部分处于当前显示区域内的矢量多边形的情况,其一共包含有13个顶点的点列表集合,但是最小仅需要标识出的4个顶点就可以表示出包含全部的矢量多边形处于屏幕显示区域内的部分的矢量多边形子区域,这四个顶点构成此矢量多边形在此屏幕显示区域情况下的点最小子集合列表,面元素组第一预处理模块即是将待处理文件中表示矢量多边形的点集合列表转换为能够表示矢量多边形处于屏幕显示区域内部分的点最小子集合列表,后续的填充算法的处理时间与矢量多边形中待处理点集合的数量呈现非线性关系,填充算法消耗时间随处理点的数量急剧增加,具体的关系与后续填充算法的类型相关,根据算法类型不同存在O(n2)时间复杂度的情况,因此降低待剪裁、填充处理点的数量能够成倍的降低后续填充算法的处理时间,大大提高了原矢量图形多边形填充方法的处理效率,大大降低电子海图引擎中(显示S57等格式的电子海图)大量矢量图形元素的显示填充所带来的包括CPU(中央处理器)、图形显示处理器在内的运算芯片的计算资源消耗,提高了电子海图引擎的显示速率,降低了CPU或者图形显示处理芯片的大量实时图形填充显示处理时的热量,在电子海图引擎的应用平台中,有效改善实时海图处理的延时,特别适于散热量、运算性能制约较严重的低配电脑、移动终端所采用。
[0072] 所述面元素组第一预处理模块用于实现以下步骤,
[0073] a)九网格建立步骤,所述九网格建立步骤根据实时屏幕显示区域的各边界及各边界的延长线将整个坐标空间分隔为九个子区域,并对各子区域进行编码;如图2为一种建立所述子区域的方式,处于九网格中心的子区域即为屏幕显示区域,然后将各子区域用一个编码表示。
[0074] b)初始化设置表示矢量多边形的点列表集合的网格标示,设置起始点;
[0075] c)由起始点按照矢量多边形连接顺序遍历点列表集合中的每一个点,判断该点是否在屏幕内,如果在屏幕内,则添加进点最小子集合列表;如果该点不在屏幕内,判断是否和前一个点是同一个点;
[0076] f)如果新点和上一个点不是同一个,则判断新点和上一个点所在的区域是否是同一个,如果不在同一个区域则添加进点最小子集合列表;
[0077] g)设置上一个点网格标示为当前新点网格标示,重复c步骤。
[0078] 初始化点列表集合的网格标示即是按照点所在区域进行编码的过程,由于表达矢量多边形的点是按照连接顺序进行排列的,所以遍历时也需要按照矢量多边形的连接顺序进行遍历,可以为正时针也可以为逆时针遍历。
[0079] 上述面元素第一预处理步骤的具体实现方式仅需要对每一个点进行一次遍历,其时间复杂度仅仅为O(n)即可将表示矢量多边形的点子列表集合转换为点最小子集合列表,而且即使是单次遍历的过程中通过将点列表集合中的点转换为所述九网格的子区域的网格标示仅需根据坐标进行一次比对判断,在电子海图的处理过程中比较非常容易实现,不需要额外的转换步骤,实现简洁,效率高,对额外的存储空间几乎无消耗。
[0080] 在采用面元素第一预处理步骤后整体填充过程的效率与改进前的整体填充效率的比较,改进后的整体效率是改进前效率的2.6倍左右,由于各个海图文件的矢量多边形的数目与屏幕显示区域的相对位置、表示点数等情况变化因素,单个海图文件的提升效果有一定起伏,这里采用大量多次数的叠加进行比较,同时需要注意的是,上述效率提升是对整体处理效率的提升,并且是处于海图文件的矢量多边形数量、点数处于一个相对较低水平的情况下,如果剔除掉改进前后相同的填充算法的耗时,改进部分对剪裁过程的实际效率提升是远大于2.6倍的,同时随着海图文件的矢量多边形数量、点数增加,实际效率提升也还将有进一步提升。
[0081] 进一步的,所述多边形剪裁模块用于实现Sutherland-Hodgman方法。具体实现过程如图4所示采用Sutherland-Hodgman方法的处理主流程,图5为Sutherland-Hodgman方法的处理主流程中的处理SP线段的子流程。具体分割处理策略表述如下:
[0082] 将多边形关于矩形窗口的裁剪分解为多边形关于窗口四边所在直线的裁剪,流水线过程(左上右下):前边的结果是后边的输入,一次用窗口的一条边裁剪多边形,考虑窗口的一条边以及延长线构成的裁剪线,把平面分成两个部分:可见一侧,不可见一侧;则多边形的各条边的两端点S、P,它们与裁剪线的位置关系只有四种:情况(1)仅输出顶点P;情况(2)输出0个顶点;情况(3)输出线段SP与裁剪线的交点I;情况(4)输出线段SP与裁剪线的交点I和终点P。
[0083] 上述过程相当于每次用窗口的一条边界对待剪裁的多边形进行剪裁,由于一条边界把平面分成两个区域,一个区域包含有裁剪窗口,称为窗口内部区域,另一个区域不包含剪裁窗口,称之为窗口外部区域。这样通过一条窗口边界可把落在窗口外部区域的图像去掉,只保留窗口内部区域的图形,并把它作为下一次待裁剪的多边形,逐边重复上述剪裁过程即可得到矢量多边形处于屏幕显示区域内部的待填充矢量多边形,完成剪裁。
[0084] 进一步的,所述多边形填充模块用于实现多边形扫描注入填充方法。其具体过程如下,按扫描线顺序计算扫描线与多边形的相交区间,再用指定的颜色依次显示所述相交区间的像素,所述相交区间的端点由计算所使用的扫描线与多边形边界线的交点获得。
[0085] 上述多边形填充步骤采用一种多边形扫描转换算法,其具体处理流程如图6所述,过程表述如下:按扫描线顺序计算扫描线与多边形的相交区间,再用指定的颜色依次显示所述相交区间的像素,所述相交区间的端点可以通过计算扫描线与多边形边界线的交点获得。
[0086] 对于一条扫描线,多边形的扫描转换过程可以分为四个步骤:
[0087] 求交:计算扫描线与多边形各边的交点;
[0088] 排序:把所有交点按x值递增顺序排序;
[0089] 配对:第一个与第二个,第三个与第四个等等;每对交点代表扫描线与多边形的一个相交区间,
[0090] 着色:把相交区间内的象素置成多边形颜色,把相交区间外的象素置成背景色。
[0091] 进一步的,根据实时屏幕显示区域设置的所述显示缓冲区域的区域范围为实时屏幕显示区域的范围的9至12倍。将所述实时屏幕显示区域设置的所述显示缓冲区域的区域范围设置为实时屏幕显示区域的范围的9至12倍具体在内存位图实现时是依照实时屏幕显示区域的范围中最小比例尺对应的内存位图进行,因为通常在移动海图区域进行细节查看定位时大多数的使用场景是小范围的拖动,在上下左右方向上很少超过当前屏幕显示区域一个屏幕,即使超过用户也需要停顿一下以辨别是否需要再次移动,这样内存位图9-12倍于实时屏幕显示区域范围的设置满足了任意方向至少一个屏幕范围的无延时移动的要求,在大多数情况下由于人眼观察的停顿时间,机器同时更新避免了大多数使用时无法忍受的闪烁抖动。通常情况下所述实时屏幕显示区域处于所述显示缓冲区域中的相对中部的位置,但是在移动至整幅海图边缘或接近边缘时,情况会有所不同,比如说极端情况下移动至整幅海图的左上角、左下角、右上角、右下角时,所述实时屏幕显示区域处于所述显示缓冲区域中的相对位置为左上、左下、右上、右下,所以所述实时屏幕显示区域处于所述显示缓冲区域中的相对位置由实时屏幕显示区域相对于海图文件库显示的总区域的相对位置决定,具体决定的方式包括如下策略示例,但不仅限于如下策略:
[0092] a)在边缘处某方向不足以将实时屏幕显示区域置于显示缓冲区域中间位置时,将实时屏幕显示区域与显示缓冲区域的相对位置向相应方向移动以至于显示缓冲区域不超出海图文件库显示的总区域,其余情况将实时屏幕显示区域固定置于显示缓冲区域中间位置;
[0093] b)设置根据实时屏幕显示区域与总区域相对位置的横纵向比例因子,根据横、纵向比例因子来调节实时屏幕显示区域在显示缓冲区域中的位置以保证显示缓冲区域不超出海图文件库显示的总区域。
[0094] 进一步的,还包括海图转换模块,所述海图转换模块用于读取原始海图文件,将读取的原始海图文件转换为SENC自定义海图文件格式的自定义海图文件。
[0095] S-57将真实世界定义为特征物标和空间物标,前者描述特征属性,后者描述空间属性。特征物标包括描述特征属性但不包括任何几何形状,而空间物标可以包含位置信息,同时必须包含几何形状。一个物标构成一个记录,一个交换集由多个记录构成,为了方便,又将记录组成文件。因此可以将S57标准海图文件按S57标准可以拆解为若干包含如下信息的(图ID号、图名、南北西东坐标、比例尺、坐标乘数因子、3D水深乘数因子)海图物标,将这些海图物标再按照SENC自定义海图文件格式组合即可转换为SENC自定义海图文件;读取的海图文件中的原始海图信息来源由包括导航传感仪、陀螺罗经、记程仪、探测仪、GPS/DGPS、RADAR、ARPA、气象仪、气象传真机在内传感装置传送至导航信息接收装置导入终端系统。
[0096] 所述S57标准海图格式为现有中的一种国际标准定义的一种海图文件格式,转换后的所述SENC自定义海图文件格式分为三部分,具体细节见具体实施方式部分的表1-1至表1-8中所列;
[0097] 表1-1头信息
[0098]
[0099] 第一部分大小固定为200字节。
[0100] 第二部分是海图元素信息,海图中包含多个海图元素,一个海图元素信息如表1-2所示:
[0101] 表1-2几何信息
[0102]
[0103] 表1-3单个孤立点(非水深)
[0104]
[0105] 表1-4单个连接点
[0106]
[0107] 表1-5单个水深
[0108]
[0109] 表1-6单条边
[0110]
[0111] 第三部分如表1-5所示:
[0112] 表1-7海图元素的内容
[0113]
[0114] 一条属性如表1-8所示:
[0115] 表1-8
[0116]
[0117] 转换后的自定义文件比S57原始文件的大小约小3倍,读入速度约快10倍,减小了海图文件的冗余量,可以满足海量海图在内存中的实时调换。
[0118] 进一步的,所述标准表达库标准为S52标准表达库。所述渲染模块将海图元素集中的信息绘制为位图显示信息的过程采用S52标准符号库,使用配合海图文件格式的标准符号库达到较好的兼容性、显示准确性、稳定性、显示效率。
[0119] 采用前文所述的为本发明的各个优选实施例,各个优选实施例中的优选实施方式如果不是明显自相矛盾或以某一优选实施方式为前提,各个优选实施方式都可以任意叠加组合使用,所述实施例以及实施例中的具体参数仅是为了清楚表述发明人的发明验证过程,并非用以限制本发明的专利保护范围,本发明的专利保护范围仍然以其权利要求书为准,凡是运用本发明的说明书及附图内容所作的等同结构变化,同理均应包含在本发明的保护范围内。
[0120] 如上所述,可较好的实现本发明。