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

文档序号:8543781阅读:551来源:国知局
一种电子海图中船舶电子标牌的自动排列方法
【技术领域】
[0001]本发明涉及一种电子海图信息处理技术领域,特别是应用于船舶交通管理系统(以下简称VTS)电子海图中的船舶信息标牌的自动排列方法。
【背景技术】
[0002]船舶交通管理系统是指在一定水域内用以保证航行船舶安全和效率的管理系统。水域内主动上报或被雷达发现的船舶经情报中心融合处理后会以报文的形式传送给VTS台位,VTS台位显示软件接收到船舶航迹报文(包括船舶名称、类型、国籍、经玮度位置、方向、航速等信息)后分析船舶航迹的经玮度位置,会在电子海图上对应的经玮度位置以标号的方式将收到的船舶航迹实时地绘制出来,供工作人员监视、管理、使用。电子海图上显示的船舶标号为一个简单的图标,包含的信息有限,其他信息,如船名、类型、国籍等,需要以标牌的形式出现在对应的船舶标号附近,并以直线与之相连,标牌与船舶航迹一一对应。当船舶聚集在某一区域时,在电子海图上绘制出来的船舶标号也会聚集在一起,这些船舶对应的电子标牌默认情况下也聚集在一起,这就导致工作人员无法分清标牌上显示的信息。
[0003]目前解决标牌遮蔽的方法主要是为用户提供人工标牌拖动的功能。用户可以用鼠标逐次拖动聚集在一起的船舶标牌到电子海图上的空闲区域,使得标牌不再聚集在一起。空闲区域是指电子海图上没有分布船舶或标牌的区域,或者分布较少的区域。但是这种方法有两个不足之处。一、当聚集在一起的船舶标牌很多时,逐个手动拖动标牌费时费力,此外随着船舶的航行,以及用户对电子海图的漫游操作,分散开的船舶标牌的位置也会相应变化,可能产生新的聚集,那么用户需要再次重复逐个拖动标牌的过程,过于繁琐;二、手动拖动标牌,标牌的位置往往比较随意,排列并不整齐,既不美观。
[0004]VTS台位显示软件收到船舶航迹报文(包括船舶名称、类型、国籍、经玮度位置、方向、航速等信息),在内存中维护一张船舶航迹的列表,每艘船舶对象中包括与之对应的电子标牌信息,并且在软件加载的S57标准的电子海图上,将这些船舶航迹按对应的经玮度位置展现出来。船舶对应的电子标牌也默认展示在船舶附近。随着船舶的移动、地图的漫游,船舶有可能聚集在一起,对应的电子标牌也随之聚集在一起。

【发明内容】

[0005]发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种电子海图中船舶电子标牌的自动排列方法。
[0006]本发明针对这种情况进行处理,公开了一种电子海图中船舶电子标牌的自动排列方法,包括如下步骤:
[0007]步骤1,对用户框选中的船舶电子标牌,在计算机内存中生成框选标牌所对应的船舶信息结构体列表,提取船舶信息结构体列表匹配船舶电子标牌排列模式;
[0008]步骤2,对用户框选中的聚集在一起的船舶电子标牌列表进行排序;
[0009]步骤3,遍历船舶电子标牌列表,根据步骤I中获得的匹配模式重排船舶电子标牌;
[0010]步骤4,处理完所有船舶电子标牌位置后自动重新绘制船舶电子标牌。
[0011]其中,步骤I包括:
[0012]步骤1-1,用户使用标牌框选功能,框选中船舶电子标牌,根据选中的船舶电子标牌找到其对应的船舶信息,在计算机内存中生成一个船舶信息结构体列表,船舶信息结构体中包括船舶当前的经玮度位置以及船舶电子标牌结构体信息;
[0013]步骤1-2,求出船舶符号位置在屏幕分布的最小外接矩形区域:
[0014]船舶符号是指表示船舶航迹位置的符号,软件截图的中三角符号。遍历船舶符号的屏幕坐标的横坐标X值和纵坐标Y值,记录横坐标的最小值X1、纵坐标的最小值Y1和横坐标的最大值X2、纵坐标的最大值y2,如果下一个船舶符号的横坐标X值小于当前船舶符号横坐标最小值X1,则更新最小值X1,如果横坐标X值大于当前最大值x2,则更新最大值x2,如果下一个船舶符号的纵坐标y值小于当前船舶符号纵坐标最小值Y1,则更新最小值丫工,如果纵坐标y值大于当前最大值y2,则更新最大值y2,最后根据矩形左上角点(U1)和矩形右下角点(χ2,y2)求出该矩形区域的宽度(X2-Xi)和高度(y2_yi);
[0015]步骤1-3,根据框选船舶电子标牌的累积高度匹配排列模型:
[0016]遍历船舶电子标牌结构体中的标牌高度属性,并计算出累积高度值Hsum,累计高度值Hsum等于每一个标牌的高度值相加,并加上每两个标牌之间的间隔常数,本发明中该常数取值为5 ;计算屏幕右侧可利用区域的最大高度H1,氏为矩形区域高度(y2_yi),矩形区域底部到屏幕下边框的高度dy2,以及一个常量Cly1的三者之和,单位为屏幕像素,本发明中常量(Iy1取值为80,单位为像素。
[0017]如果累积高度值Hsum小于右侧可利用区域的最大高度H1,那么匹配单列排列模式;
[0018]如果累积高度值Hsum大于屏幕右侧可利用区域的最大高度H1,那么对超出的高度值Hex进行判断,如果超出的高度值Hex小于第一阈值,第一阈值为矩形区域高度的一半(Y2-Y1)/2与矩形区域底部到屏幕下边框的高度dy2之和,那么匹配双列排列模式一;
[0019]如果超出的高度值Hex大于第二阈值,第二阈值为矩形区域高度的一半(y2_yi)/2与矩形区域底部到屏幕下边框高度dy2之和,但小于矩形区域高度(y2_yi)与矩形区域底部到屏幕下边框高度dy2之和,那么匹配双列排列模式二 ;
[0020]如果超出的高度值Hex大于矩形区域高度(y2_yi)与矩形区域底部到屏幕下边框高度dy2之和,那么匹配底部追加单行排列模式。
[0021]步骤1-3中所述屏幕右侧可利用区域的最大高度氏为矩形区域高度(y2_yi),矩形区域底部到屏幕下边框的高度dy2,以及一个常量Cly1的三者之和,本发明中dy i取值为80,单位为屏幕像素;
[0022]步骤2包括:
[0023]步骤2-1,以船舶信息结构体中存储的船舶玮度位置为关键值,对船舶信息结构体列表进行希尔排序,使得玮度值大的船舶信息结构体排在表列前部,玮度值小的标牌排在表列后部。
[0024]步骤3包括:
[0025]步骤3-1,如果是单列排列模式,将船舶电子标牌排列在船舶符号右侧,以船舶符号外接矩形的宽度的一半为间隔,确定右侧船舶电子标牌区的起始横坐标,以船舶符号外接矩形上部纵坐标Y1减去常数值dy i作为右侧船舶电子标牌区的纵坐标,本发明中dy 1取值为80,确定第一个船舶电子标牌的位置,然后沿第一个船舶电子标牌下方依次排列下一个船舶电子标牌,完成船舶电子标牌重新排列,本发明中标牌间的间隔常数为5像素;
[0026]步骤3-2,如果是双列排列模式一,则在完成步骤3-1的基础上,对超出高度的船舶电子标牌进行第二列排列,遍历超出高度的船舶电子标牌,确定船舶电子标牌的最大宽度,在船舶符号外接矩形左侧,以船舶符号外接矩形的宽度的一半为间隔并加上标牌最大宽度,确定第二列起始位置的横坐标,以船舶符号外接矩形高度的一半作为第二列起始位置的纵坐标,确定第一个船舶电子标牌的屏幕位置,沿第一个船舶电子标牌下方依次排列下一个船舶电子标牌,完成船舶电子标牌重新排列,本发明中标牌间的间隔常数为5像素;
[0027]步骤3-3,如果是双列排列模式二,则在完成步骤3-1的基础上,对超出高度的船舶电子标牌进行第二列排列,以船舶符号外接矩形的宽度的一半为间隔并加上标牌最大宽度,确定第二列起始位置的横坐标,以船舶符号外接矩形上部纵坐标Y1减去常数值dy i,本发明中该常数取值为80。作为右侧船舶电子标牌区的纵坐标,从而确定第一个船舶电子标牌的屏幕位置,然后沿第一个船舶电子标牌下方依次排列下一个船舶电子标牌,完成船舶电子标牌重新排列,本发明中标牌间的间隔常数为5像素;
[0028]步骤3-4,如果是底部追加单行排列模式,则在完成步骤3-2的基础上,对超出高度的船舶电子标牌进行底部追加单行排列:对剩余船舶电子标牌进行以船舶信息结构体中存储的船舶经度为关键值的希尔排序生成新的待排列序列
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1