一种电子海图中船舶电子标牌的自动排列方法_2

文档序号:8543781阅读:来源:国知局
,因为这里是将标牌进行横向排列,所以取船舶的经度为关键值进行排序,将经度值小的船舶电子标牌排在序列前部,经度值大的排在后部,然后根据船舶电子标牌排列区域的右侧横坐标和船舶符号外接矩形下方纵坐标确定第一个船舶电子标牌的屏幕位置,接着沿第一个船舶电子标牌右侧依次排列下一个船舶电子标牌,完成船舶电子标牌的重新排列,本发明中标牌间的间隔常数为5像素。
[0029]有益效果:
[0030]当接收到船舶航迹的报文后,VTS台位软件根据报文中船舶的经玮度位置信息,在电子海图的相应经玮度位置绘制出船舶标号以及电子标牌,这些标牌可能会相互遮蔽。同时当船舶报文更新船舶位置信息,或者用户对电子海图漫游后,电子标牌的屏幕坐标位置会发生改变,产生新的遮蔽。经过本发明处理后,将聚集在一起的船舶标牌根据用户要求在电子海图指定区域将指定船舶的电子标牌和在指定位置一键自动重新排列,高效快捷,既节省了用户繁琐的拖动操作,又充分利用了电子海图上空闲区域。此外使用希尔排序算法,可以尽可能地减少电子标牌与船舶标号间连接线的交叉现象,便于用户对电子标牌和船舶符号进行交叉查找。
【附图说明】
[0031]下面结合附图和【具体实施方式】对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
[0032]图1为本发明排列方法总流程图。
[0033]图2为四种船舶标牌排列模式示意图。
[0034]图3为船舶标牌单列排列示意图。
[0035]图4为船舶标牌双列排列模式一示意图。
[0036]图5为船舶标牌双列排列模式二示意图。
[0037]图6为船舶标牌底部追加单行排列示意图。
[0038]图7为船舶标牌排列前效果图。
[0039]图8为船舶标牌使用排序算法前效果图。
[0040]图9为船舶标牌使用排序算法后效果图。
[0041]图10为船舶标牌使用排序算法双列排列效果图。
【具体实施方式】
[0042]实施例1
[0043]如图1所示,本发明电子海图中船舶电子标牌的自动排列方法关键步骤如下:
[0044]前提步骤,非本发明必要技术特征:
[0045]VTS台位显示软件收到船舶航迹报文(包括船舶名称、类型、国籍、经玮度位置、方向、航速等信息),其中船舶的经玮度位置,单位为度,例如船舶位置东经108度30分表示为108.5度(正值为东经,负值为西经),北玮21度30分表示为21.5度(正值为北玮,负值为南玮),生成船舶信息结构体并存储在内存中的船舶信息结构体列表中。船舶信息结构体中还包括与之对应的电子标牌结构体,其中包含电子标牌位置信息,即左上角点与船舶符号定位点的相对距离,单位为屏幕像素;电子标牌的尺寸,即电子标牌根据内容长短自适应的标牌宽度和高度,单位为屏幕像素。
[0046]VTS台位软件在电子海图上自动绘制船舶目标时,首先遍历内存中维护的船舶信息结构体列表,取出船舶的经玮度位置,然后调用电子海图提供的经玮度屏幕坐标转换函数,将船舶的位置信息由经玮度值转换为屏幕坐标,单位为屏幕像素,并在该屏幕坐标位置绘制船舶符号;然后取出船舶的电子标牌结构体,读取电子标牌与船舶符号的相对距离,再结合前一步船舶符号的屏幕坐标求出电子标牌左上角点的屏幕坐标,单位屏幕像素;最后根据电子标牌结构体中的标牌宽度和标牌高度,在屏幕的相应位置绘制出电子标牌,并用直线将标牌和其对应的船舶符号相连,如图7所示,默认情况下,船舶的电子标牌可能彼此遮蔽或者和船舶符号相互遮蔽,影响用户使用。此外随着船舶航迹报文的更新,船舶位置会发生移动,或者用户对电子地图进行漫游、缩放操作,原本不遮蔽的船舶符号和电子标牌也有可能再次聚集,产生遮蔽。本发明针对这种情况进行处理。
[0047]步骤I,提取船舶信息结构体列表匹配电子标牌排列模式,包括:
[0048]步骤1-1,生成框选航迹所对应的船舶信息结构体列表;
[0049]在电子海图上,如果用户关注的船舶目标正好聚集在一个较小的范围,那么这些船舶的标牌往往也聚集在一起,发生相互遮蔽,如图7所示。用户可以使用标牌框选功能,框选中这些标牌。本实施例中,根据选中的电子标牌找到其对应的船舶信息,在内存中生成一个船舶信息结构体列表。船舶信息结构体中包括船舶当前的经玮度位置以及电子标牌结构体信息。
[0050]步骤1-2,提取船舶符号位置在屏幕分布的最小外接矩形区域;被用户框选的多个船舶符号在屏幕上呈现多个点集,求出这些点集的最小外接矩形。本发明调用GIS的经玮度转换屏幕坐标函数,得到船舶信息列表中船舶符号的屏幕坐标,单位屏幕像素。遍历船舶符号的屏幕坐标的横坐标X值,和纵坐标I值;然后记录最小X1值、y工值和最大X 2值、y 2值;如果下一个船舶符号的X值小于当前最小X值,则更新最小X值X1;如果X值大于当前最大X值,则更新最大X值X2;用同样的方法可以求出最小y值y工和最大y值y 2。最后根据矩形左上角点(Xl,yi)和矩形右下角点(x2,y2)可以求出该矩形区域的宽度X2-X1和高度H。
[0051]步骤1-3,根据框选电子标牌的累积高度匹配排列模型
[0052]如图2所示,本实施例中共有四种船舶电子标牌排列模式。遍历船舶电子标牌结构体中的标牌高度属性,并计算出累积高度值Hsum。首先匹配排列在右侧区域的模型。如图3所示,右侧可利用区域的最大高度H1为矩形区域高度y 2-yi,与矩形区域底部到屏幕下边框的高度dy2,以及一个经验常量Cly1的三者之和,单位为屏幕像素。如果累积高度Hsum小于右侧可利用的最大高度H1,那么匹配单列排列模式。
[0053]如果累积高度大于右侧可利用最大高度,那么对超出的高度值Hex进行判断。如图4所示,如果超出的高度值Hex小于第一阈值,第一阈值为矩形区域高度的一半(y2_yi)/2与矩形区域底部到屏幕下边框的高度dy2之和,那么匹配双列排列模式一。
[0054]对超出的高度值Hex判断,如图5所示。如果超出的高度值Hex大于第二阈值,第二阈值为矩形区域高度的一半(Y2-Y1)/2与矩形区域底部到屏幕下边框高度dy2之和,但小于矩形区域高度(J2-1)与矩形区域底部到屏幕下边框高度dy2之和,那么匹配双列排列模式二。
[0055]如果超出高度值Hex大于矩形区域高度(y2_yi)与矩形区域底部到屏幕下边框高度dy2之和,如图6所示,那么匹配底部追加单行排列模式。
[0056]步骤2,对用户选中的聚集在一起的船舶电子标牌列表进行排序。
[0057]生成框选标牌所对应的船舶信息结构体列表;
[0058]以船舶信息结构体中存储的玮度位置为关键值,对船舶信息结构体列表进行希尔排序,使得玮度值大的船舶信息结构体排在表列前部,玮度值小的标牌排在表列后部。经过该步处理,可以最大限度地减少船舶图标与其电子标牌的连线发生交叉。如图8、图9所示,分别为不使用该算法和使用该算法的效果图。
[0059]步骤3,遍历电子标牌列表,根据步骤I中获得的匹配模式重排电子标牌
[0060]步骤3-1,如果是单列排列模式,将标牌排列在船舶符号右侧。以船舶符号外接矩形的宽度的一半为间隔,确定右侧电子标牌区的起始横坐标,以船舶符号外接矩形上部纵坐标Y1减去经验值dy ^乍为右侧电子标牌区的纵坐标,确定第一个电子标牌的位置。然后沿第一个电子标牌下方依次排列下一个电子标牌,完成电子标牌重新排列,本发明中标牌间的间隔常数为5像素。
[0061]步骤3-2,如果是双列排列模式一,则在完成步骤3-1的基础上,对超出高度的电子标牌进行第二列排列。首先遍历超出高度的电子标牌,确定标牌的最大宽度;然后在船舶符号外接矩形左侧,以船舶符号矩阵的宽度为间隔并加上标牌最大宽度,确定第二列起始位置的横坐标,以船舶符号外接矩形高度的一半作为第二列起始位置的纵坐标,可以确定第一个标牌的屏幕位置。然后沿第一个电子标牌下方依次排列下一个电子标牌,完成电子标牌重新排列,本发明中标牌间的间隔常数为
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1