摘 要 针对电子海图显示应用场景,本文提出了电子海图自动调显应遵循的4条规则,并重点介绍了规则的实现,其中对自动调显过程中比例尺的选取、屏幕留白的格网化处理、自动调显的整体流程进行了详细描述。
【关键词】电子海图 S57-标准 自动调图 自动调显 拼接显示 屏幕格网
1 引言
电子海图的显示是电子海图系统的一个最基本的功能,当前很多电子海图系统的显示还是基于单幅图模式的,对其的缩放实质上是单幅海图的矢量缩放;也有少数电子海图系统实现了海图的自动调显功能,但普遍都存在这样那样的问题。所有这些问题的核心都可以归结到对海图自动调显规则的处理上。本文结合电子海图的使用场景,提出电子海图自动调显应遵循的规则,研究并实现了将物理上离散分布的电子海图数据通过自动调显处理形成逻辑上一张图在屏幕上的无缝拼接显示。
2 自动调显原理
电子海图的显示本质上包含两个过程:数据加载和数据显示。单幅图模式,由用户通过鼠标或者键盘操作选择要打开的海图数据进行数据加载,然后完成显示;自动调显模式,将完全解放用户的双手,由自动调显程序根据当前窗口显示范围和显示比例尺信息,基于海图显示不留白的核心原则,自动完成最合适海图数据的搜寻并调度显示,直至将屏幕全部覆盖或最大覆盖。
3 自动调显规则
规则1:窗口显示范围内不能留白,除非这个区域没有任何比例尺的数据,这是自动调显最核心规则,其他规则必须以此为前提;
规则2:窗口显示范围内如果存在多个比例尺的数据时,应首先按比例尺最优匹配程度排序,然后按此顺位依次扫描数据进行屏幕覆盖检测,直至数据将屏幕完全覆盖或最大覆盖;
规则3:多个比例尺数据如果存在重叠部分,必须保证大比例尺数据在最后绘制显示,以始终呈现给用户在给定条件下最精细的数据表达为目的;
规则4:为了加快判断并保证小比例尺下不显示大比例尺航海图,对于显示比例尺:数据比例尺大于等于100(datascale*100 <= dispscale)的航海图不参与搜索。
4 自动调显规则实现
以上规则中,以规则1为第1准则,确保显示不留白,尽可能显示更精细的数据,并在多比例尺数据重叠时,保证大比例尺数据始终在最上层显示。下面将从比例尺、窗口显示范围、数据范围,并结合屏幕格网,综合运用多种算法实现多比例尺电子海图的自动调显。
4.1 最佳数据比例尺确定
根据人眼视觉感受,理论上按数据比例尺进行1:1显示最符合地图浏览查看。基于此原理,最佳数据比例尺的确定,按数据比例尺与当前显示比例尺的匹配程度确定。
假设当前共有6个比例尺的海图数据,图1展示了海图显示过程中如何根据显示比例尺调度数据比例尺的关系。
4.2 按数据比例尺最优匹配顺序排序
在进行全球多尺度电子海图调度显示时,大部分情况下单凭一个最佳数据比例尺数据是无法做到完全覆盖屏幕的。这时候就需要按照比例尺匹配程度逐个搜寻。所以在按4.1确定最佳数据比例尺后,还需要据此确定第二、三最佳等等顺位的比例尺。此处通过比例尺与最佳比例尺做差值,按绝对值从小到大排序,此顺序即为比例尺最优匹配顺位。
4.3 窗口显示范围与数据范围相交判断
为提高显示效率,加快数据的搜寻过程,依次轮循各比例尺数据进行屏幕覆盖情况判断时,应首先将电子海图数据的地理范围与窗口显示范围进行相交判断,过滤掉一部分不相交的數据。
4.4 屏幕留白格网法处理
此处采用屏幕格网法处理电子海图显示留白问题,将窗口视图区域按照64*64像素大小的格子进行格网划分。通过检测数据范围对窗口范围的覆盖情况,赋值格网单元。最后通过判断屏幕格网是否还有空白确定海图是否已经完全覆盖屏幕。
图2为根据窗口视图区域大小划分为6X 6(6行6列)的格网,红色单元格为有效数据覆盖的范围,白色单元格为无效数据范围,尚没有被有效数据覆盖,因此自动调显程序还需要继续扫描数据,以找到合适数据将剩余的白色单元格覆盖,最终达到屏幕不留白的完全覆盖。
5 自动调显整体流程
综上,可以看出自动调显过程是综合运用多种算法和多种方式互补控制协同完成的。下面将结合以上描述,完整阐述整个流程。
首先,根据当前显示比例尺确定最佳数据比例尺,接着确定比例尺最优匹配排序。
其次,分别构造多比例尺数据合并覆盖屏幕格子对象(sMulitScaleUnionCoverGrid)、当前比例尺数据合并覆盖屏幕格子对象(sCurScaleUnionCoverGrid)和当前数据覆盖屏幕格子对象(sCurDataCoverGrid),用以自动调显过程中检测屏幕是否已被完全覆盖。
最后,结合矩形相交算法和格网法,开始自动调显两层循环逻辑处理,外层轮循处理各比例尺,内层轮循处理当前比例尺下各个数据。
(1) 如果当前处理数据已能完全覆盖屏幕(sCurDataCoverGrid),此时找到最佳匹配数据,将待调度列表清空并放入数据,然后退出轮循,调入并显示数据;
(2)如果当前处理数据不能完全覆盖屏幕,则将数据放入待调度列表,同时将sCurDataCoverGrid合并到sCurScaleUnionCoverGrid,判断sCurScaleUnionCoverGrid是否完全覆盖屏幕,如果完全覆盖,则退出轮循,调入并显示数据,如果不能完全覆盖则继续下一个同比例尺数据,重复1)操作;
(3)如果直到当前比例尺数据搜寻完毕还是未能完全覆盖屏幕,则将sCurScaleUnionCoverGrid合并到sMulitScaleUnionCoverGrid,判断sMulitScaleUnionCoverGrid是否完全覆盖屏幕,如果完全覆盖,则退出轮循,调入并显示数据;如果未能完全覆盖则继续下一个次优比例尺搜寻,重复1)2)操作;
(4)直至所有比例尺都搜寻完毕,如果数据还是未能完全覆盖屏幕,即最糟糕的情况,也调入列表中所有数据完成最大覆盖显示。
6 实验原型及分析
为测试调度规则、算法的可用性和显示性能,本文基于WinXP操作系统,硬件配置为i7-3770 3.4GHz,显示器分辨率为1920*1080。使用VS2010+QT4.8.4开发平台,采用140幅S57标准海图数据做实验。自动调显模式下,海图显示符合规则要求,缩放、漫游等显示性能基本都在100ms以内,能很好的達到使用需求。图3为自动调显某时刻示意图。
7 结束语
本文通过对电子海图自动调显规则的研究,提出了电子海图自动调显过程中需要遵循的4条规则。其中重点介绍了对数据比例尺的择优选取以及对屏幕留白问题的格网法处理,最后详细阐述了整个自动调显的逻辑流程。根据本文给出的策略和方案,实现了电子海图的自动调用显示,并成功应用于多型电子海图显示系统中,取得了良好的效果。
参考文献
[1]刘灿由,崔铁军,郭黎,等.电子地图多尺度快速表达的关键技术研究[J].地理信息世界,1009,7(03):70-74.
[2]刘灿由,翟京生,张威,陈超,朱颖,牛红光.基于S-101的全球多尺度电子航海图调显方法[R].测绘科学技术报,2013,30(05):530-534.
[3]胡志蕊,祝国瑞,徐智勇.LOD技术与制图综合在多尺度地图适时显示中的应用研究[J].测绘科学,2006,31(05):78-79.
[4]朱雅音,王化文,万丰,于雷易.确定两个任意简单多边形交、并、差的算法[J].计算机研究与发展,2003,40(04):576-583.
[5]陆毅,翟京生,夏启兵等.国际标准电子海图显示中几个关键技术的实现[J].测绘科学技术学报,2011,28(04):300-303.
作者简介
门伟(1986-),男。大学本科学历。现为华北计算技术研究所工程师。研究领域为通用跨平台嵌入式地理信息系统、地图可视化技术。
作者单位
1.华北计算技术研究所 北京市 100083
2.空军指挥学院模拟仿真 北京市 100000
3.中国电子设备系统工程公司研究所指挥自动化 北京市 100039