多幅海图的快速拼接显示

多幅海图的快速拼接显示,能够突破单幅海图显示图幅有限的限制,在屏幕上流畅地显示一幅连续的海图。在电子海图拼接显示模式下,目标绘制区域通常有多幅海图共同组成,多幅电子海图拼接示意图如图1所示。多幅海图间有一定的叠加区域,如何对海图叠加区域进行合理的取舍是拼接绘制面临的关键问题。合理的拼接绘制流程不仅能合理裁剪叠加区域,避免叠加区域的冗余绘制,还能保证多幅海图在逻辑上连续以及视觉上无缝的显示效果。

制图比例尺区别于视窗显示比例尺表征了电子海图中物标的细节丰富程度,而视窗显示比例尺则是电子海图在绘制时坐标转换的比例[8]。本文以大制图比例尺的海图优先绘制为基本绘图原则,设计合理的拼接绘制流程,其流程主要包括基准海图的选取和目标区域海图的绘制。本文采用链表的数据结构实现拼接图集。基准海图是在拼接区域中最优先绘制的参考海图,在拼接图集中选取基准海图主要步骤为:

①以目标绘制区域为基准构建海图拼接图集:首先在数据库infos表中搜索与目标绘制区域相交的海图结果集,然后设计海图信息数据结构,最后将结果集中的海图信息实例化为对象并逐个存储在海图工作集中。

②将海图拼接图集队列中的对象按照海图比例尺按照从大到小的顺序排序。

③顺序遍历海图拼接图集,选择第一幅制图比例尺比视窗显示比例尺小的海图作为基准海图。

④如果在上一步中没有找到符合条件的海图,就再次倒序遍历海图工作集,选择第一幅制图比例尺比视窗显示比例尺大的海图作为基准海图。

拼接绘制的基本原则是将海图拼接图集内比例尺小于或等于基准海图的海图按照制图比例尺从大到小的顺序依次绘制到目标绘制区域内,具体步骤如下:

①将海图拼接图集制图比例尺小于或等于基准海图的海图放入海图候选队列,并且按照制图比例尺从大到小排序;

②移除位于候选队列中队首的海图并作为当前海图,计算当前海图图幅与目标绘制区域相交区域,得到当前海图的绘制区域;

③在当前海图绘制区域绘制当前海图:根据当前海图的enc_id属性以及当前海图绘制区域范围,在数据库表feature中搜索当前海图分布在当前绘制区域内的物标,并在该区域内绘制这些物标。

④从目标绘制区域中裁剪掉当前海图绘制区域,得到新的目标绘制区域;

⑤重复上述2到4的步骤,直到候选队列为空,则海图拼接绘制完成。