港口航道等受限水域因航道狭窄、水深限制大、航道内灯浮等障碍物较多、航行密度大,操作余地小,船舶在港口水域航行发生海事的可能性增大,不仅发生船舶间的碰撞事故,而且船舶搁浅触礁等事故也时有发生。长期以来国内外学者主要针对开阔水域展开船舶自动避碰方面的研究工作,尚未考虑水下碍航物的影响,因此无法适用于港口等受限水域。船舶搁浅触礁预警及避碰与地理避险决策是船舶航行智能化的难点,船舶交通管理系统(VTS)虽然具备搁浅预警功能,但预警机制简单,导致存在误警率、虚警率过高的问题,VTS值班人员在实际工作中通常采用人工决策的方式。团队前期对船舶避浅避礁决策自动化技术问题进行了初步研究,可对船舶静态碍航物进行预警,但是如果船舶数量较多,船舶检索海图信息将占用大量的系统资源,影响算法的实时性。电子海图数据快速检索是保证检索实时性的必要条件,也是研究船舶搁浅触礁危险预警和避浅避礁决策的关键技术。考虑以船舶实时坐标为查询源,根据AIS提供的船舶尺度、装载、船速等要素,以及构建的各类船舶操纵性参数数据库,对各航行船舶建立各自的海图检索区域对海图数据进行再组织,通过设计电子海图快速检索算法,在各海图检索区域内查找对船舶安全航行构成威胁的地理元素,以实现船舶对静态碍航物的不同危险等级预警。

1.电子海图数据再组织

S-57格式的数据结构包含5种类型的记录:数据集描述记录、目录记录、数据字典记录、特征记录和空间记录。其中海图中多数记录属于特征记录和空间记录,而且占据了大部分海图容量。这也是本研究进行海图检索最主要的2种记录。

S-57海图数据文件采用ISO8211作为数据封装格式,把数据结构封装在物理传输结构中。ISO8211基于该交换格式的文件,将其封装在一个逻辑记录(logicalrecord,LR)中。该原始的海图文件传输存放到物理计算机上,经过ISO8211解析库对封装的海图文件进行解析,从而转换成为可以直接使用的电子海图数据文件,即SENC数据。图1描述了海图数据各层递进关系。

用户获得通过ISO8211解析后的SENC数据后,需要对数据进行读取,即用户需要定义自己的数据结构,将存放在存储器中的SENC数据读取到内存中来,用户自己定义的数据结构就是对海图数据的再组织,组织成方便用户使用的数据结构。SENC数据中前半部分是特征记录,主要描述物标的属性,所相关联的空间记录主要描述物标的空间位置特性。对于每一个物标来说主要是通过点、线、面来描述的。因此,采用3个不同的链表存放从SENC文件中提取出来的点、线、面等空间物标。物标结构体定义为

TypedefStruct_ObjRazrules{

BoolIsSelected;

LUPrec*LUP;

S57Obj*obj;

Struct_ObjRazrules*child;

Struct_ObjRazrules*next;

}定义物标链表:

定义不同的索引值:

#definePOINTS0

#defineLINES1

#defineAREAS2

在检索海图时,将检索到的海图物标根据点、线、面分别存放到3个物标链表中,进行危险判断时,根据所要判断的物标类型,在相对应的链表中进行遍历,从而提高检索效率。

2.电子海图数据检索算法

2.1.海图检索区域

考虑到已有的研究工作所提到的海图检索判断点、线和面与矩形区域相交的速度比其他多边形速度快得多,而圆形区域对于不规则碍航物适用性不高。因此考虑选用矩形区域作为船舶检索区域。

根据静态物标对船舶的危险程度将区域划分为危险预警区、紧迫局面区和紧迫危险区。检索区域是根据港口水域内船舶的动态参数而确定的一个矩形区域,见图2。其模型如下。

式中:AE———检索区域的长度;

NE———检索区域的半宽度;

L———船长;

B———船宽;

V———航速;

t———操舵时间,即操舵时舵角由正舵到所操舵角所用的时间:

K,T———当前舵角在δ下的K/T值;

R———以δ舵角、V航速时的旋回半径;

θ———当前改向角;

P———定位精度。

当θ取5°,10°,15°时所得AE和NE分别为危险预警区、紧迫局面区和紧迫危险区的长度和宽度,仿真实验见图3。

最外层矩形框为船舶危险预警区,中间层矩形框为紧迫危险区,最内层矩形框为紧迫危险区。

2.2.动态拾取海图数据法

团队前期研究的SIHC仿真平台具有海图信息拾取功能,即当鼠标点击电子海图上的一点,系统会根据该点的位置坐标,将该点为圆心一定范围的圆形区域内海图信息提取并显示出来。在此功能上,模拟鼠标点击获取海图信息,实现动态拾取海图信息方法来检索船舶检索区内的海图信息,如图4所示。

T为目标船位置,矩形区域为船舶检索区域,将检索区域的宽度平均分成n份,每一份的长度即为检索圆的直径。需要说明的是,检索圆直径要选取一个较为合适的值。如果检索圆过小,相邻的多个检索圆可能检索到同一物标,出现多次的重复检索。此外,海图检索算法的循环次数过多,会导致程序运行缓慢,实时性较差。相反,如果检索圆过大,相切的检索圆之间会出现很大的空间没有被检索到,导致算法的准确性较差。本文初步拟定将船舶危险预警区域的宽度分为6等份,将船舶紧迫局面区域的宽度分为4等份,将船舶紧迫危险区域的宽度分为2等份。

步骤1。横向确定检索点的坐标A1,拾取圆A1内的海图信息。

步骤2。纵向移动确定检索点的坐标Ai(i=2,3,…,n),拾取圆Ai内的海图信息。

步骤3。返回步骤1,2,确定检索点Bi(i=2,3,…,n)。依次类推。

直至遍历完所有的检索点,即拾取检索区内的所有海图数据。海图检索算法流程见图5。

采用动态拾取海图信息的方法检索海图是将船舶检索区域分成若干份,每次拾取完其中的一个检索圆内的海图数据进行危险碍航物的判断,完成判断之后将拾取的海图信息进行清空,进行下一个检索圆的海图信息拾取,这样可避免拾取的海图信息链表内容不断增加,避免每一次的重复判断,从而达到海图信息的快速检索。

2.3.几何检索航道边界线方法

首先,采用描点法依次提取电子海图上航道边界上的拐点,记录所有拐点的经纬度信息。其次,根据拐点的经纬度信息,连接相应的2个点,在电子海图上将航道边界线画出来。最后,建立直角坐标系,在同一坐标系下判断船舶所在区域的航道边界线是否与船舶检索区域相交,即计算机图形学中判断线是否与多边形相交,从而检索出航道线。

海图数据中航道区是面特征,是由闭合的连接线构成。采用直接检索的方式,需要依次判断连接线上的所有链接点与检索区域的位置关系。港口水域航道区较为复杂,链接点较多,如果依次判断会在一定程度上影响检索效率。采用上述特殊方法,不需要读取海图数据中的航道区信息,只需要通过船舶所在位置确定出所在航道区,然后判断所在航道区提取的4条航道线是否与检索矩形相交即可,从而提高检索效率。

2.4.多船海图检索危险预警算法及流程

港口水域的船舶航行需要判断危险碍航物的危险等级,并且为模拟VTS对港口水域船舶实时监控,需要港口水域内航行的所有船舶同时进行海图检索。其港口水域多船海图检索危险预警算法流程见图6。

船舶航行于港口水域,在进行自动避浅避礁决策时以危险等级最高的危险物标为主要避让物标。因此在进行海图检索时,当检索到紧迫危险的物标时,立即输出危险信息并进行避让决策,不再进行紧迫局面区域内的海图检索。同理,当检索到紧迫局面的物标时,不再进行危险预警区域内的海图检索。这样减少了海图的检索次数和范围,可以达到更加快速检索的目的。

3.算法实现结果及实验验证

以厦门港为例,将碍航物信息输入到需要检索的海图物标配置文件中,见表1。

3.1.单船检索危险物标实验

基于SIHC仿真平台的目标船服务器,以灯标作为检索物标。灯标不在船舶检索区域内,因此输出信息栏中无检索物标输出,见图7。船舶检索区域内检索到灯标,输出信息栏中显示危险物标为灯标,见图8。

3.2.检索物标危险等级实验

以航道线为检索目标,判断船舶是否有偏离航道的危险。船舶初始状态,没有检测到航道边界线,因此输出信息栏中无危险物标输出,船舶危险等级为safe,见图9。船舶的危险预警区域检索到航道边界线,输出信息栏中显示危险物标为航道线,且危险等级为warning,见图10。船舶的紧迫局面区域检测到航道边界线,输出信息栏中显示危险物标为航道线,且危险等级为danger,见图11。船舶的紧迫危险区域内检测到航道边界线,输出信息栏中显示危险物标为航道线,且危险等级为deviation,见图12。该实验验证了海图检索算法的可行性。

3.3.多船检索危险物标实验

设置10艘目标船进行多船海图检索实验,验证算法的实时性。实验结果见图13。实现了各船舶实时检索功能。

参考文章:电子海图、AIS、雷达

港口水域电子海图数据快速检索算法及应用相关推荐

  1. 个人开源项目之快速检索算法

    第一个开源项目,熬夜到一点多:https://github.com/HouZhiHouJue/QucikMatchAndFullTextSearch 转载于:https://www.cnblogs.c ...

  2. 快速检索并引用你在CSDN上所有的博文笔记

    简 介: 利用CSDN提供的博文的列表,编写了一个快速检索自己博文,并自动插入索引连接的程序.这样就可以大大提高博文写作的效率,将之前记录学习.工作的内容更好的进行连接.最后,感谢CSDN技术人员的大 ...

  3. 汉语词典快速查询算法研究

    原贴:http://www.nlp.org.cn/docs/docredirect.php?doc_id=1118 汉语词典快速查询算法研究 李江波 周强 陈祖舜 (清华大学智能技术与系统国家重点实验 ...

  4. 【每日一题】快速检索

    [每日一题]快速检索 1.笔试-选择题   [笔试-选择题] 2.有关字符串   [每日一题]删除公共字符   [每日一题]字符串筛选-去除所有相同的字符   [每日一题]倒置字符串-巧用cin输入流 ...

  5. 虹软人脸识别SDK接入Milvus实现海量人脸快速检索

    虹软人脸识别SDK接入Milvus实现海量人脸快速检索 背景 虹软SDK及Milvus简介 开发环境 虹软人脸识别SDK使用简介 Milvus环境搭建 快速检索实现 人脸识别流程简介 快速检索 虹软S ...

  6. 【快速检索,稳定出版,强大委员会Speaker阵容】ICCCS 2022|第7届通信计算机大会

    第七届计算机与通信系统国际会议 华中科技大学主办,武汉召开 2022年4月22-25日 会议亮点 ▶ 前6年IEEE稳定出版和检索历史,入库IEEE Xplore, EI核心检索和Scopus检索快速 ...

  7. 软件:RAiSD 快速检索硬清扫区间

    本文摘自文章 RAiSD detects positive selection based on multiple signatures of a selective sweep and SNP ve ...

  8. 国赛latex方法快速检索(入门级)

    latex方法快速检索 本文主要为国赛论文书写服务,利用的是Github上cumcmthesis论文模板 本文部分节选自:https://zhuanlan.zhihu.com/p/456055339? ...

  9. Elasticsearch学习--索引快速检索

    如何快速检索? Elasticsearch是通过Lucene的倒排索引技术实现比关系型数据库更快的过滤.特别是它对多条件的过滤支持非常好,比如年龄在18和30之间,性别为女性这样的组合查询.倒排索引很 ...

  10. 向量快速检索方法总结——KDtree/Balltree/Annoy/NSW/HNSW

    文章目录 导语 线性扫描 KDTree 构造 检索 特点 BallTree 构造 检索 特点 Annoy 构造 检索 特点 NSW 构造 检索 HNSW 构造 查找 导语 为什么要用向量快速检索呢?因 ...

最新文章

  1. id jquery 拼接_jquery拼接ajax的json和字符串的方法
  2. CAS操作与无锁队列
  3. (译)如何使用cocos2d来制作一个打地鼠的游戏:第一部分
  4. django可以生成exe文件吗_把 Django 程序打包为 exe 可执行文件
  5. node-red mysql的增删改查_通过curl或者http请求对elasticsearch中的数据进行增删改查...
  6. CodeForces 785C Anton and Fairy Tale 二分
  7. codeforces 735C Tennis Championship(贪心+递推)
  8. python入侵网站_入侵服务器简介_python信息安全实战_Python视频-51CTO学院
  9. PHP生成条形码 之一 条形码介绍
  10. javascript 闭包理解总结
  11. wamp server 图标不变绿色 环境变量配置 和localhost打不开项目怎么处理
  12. 无线网络dns服务器设置,无线网络的dns怎么设置才正确
  13. java微信素材编辑_Java微信公众平台开发之素材管理(Spring Boot 2.X)
  14. log_archive_dest_2参数配置错误导致的dataguard主库无法传文件到备库
  15. 《心灵捕手》经典台词
  16. 【阿里云短信服务SMS】使用阿里云发送短信
  17. 大数据分析和大数据开发哪个好就业啊?
  18. HTML 5:绘制旋转的太极图
  19. 2022年广东省安全员A证第三批(主要负责人)考试练习题及在线模拟考试
  20. [附源码]Python计算机毕业设计SSM基于框架的报修系统(程序+LW)

热门文章

  1. DevOps-2-从凤凰项目谈起
  2. C语言 16进制与字符串互转函数
  3. C语言实现矩阵的乘法
  4. 顺序表的十个基本操作(全)
  5. Python爬虫入门案例
  6. Axure原型设计说明
  7. python 视频下载中国大学慕课_中国大学慕课视频下载
  8. 华为是怎样研发的(12)——FMEA分析
  9. 软件测试的功能点理解
  10. ajax性能测试脚本,mqtt性能测试工具