本发明涉及地理区域识别技术领域,尤其是涉及一种基于航向索引的区域识别快速搜索方法。
背景技术:
公知的,目前实现区域识别的方法有很多种,典型的方法有射线法、栅格法等;射线法需要遍历边线上所有数据点,在点数较多的情况下,耗时长、效率较低;栅格法要达到较高的判别精度,需要较大的存储空间,限制区域面积较大时,该矛盾尤为突出,此种现象是本领域技术人员亟待解决的问题。
技术实现要素:
为了克服背景技术中的不足,本发明公开了一种基于航向索引的区域识别快速搜索方法。
为实现上述发明目的,本发明采用如下技术方案:
一种基于航向索引的区域识别快速搜索方法,包含以下步骤:
步骤①、建立限制区域地图数据,在设定的限制区域内选择一个中心点o,定义以限制区域边线上给定的边线点和限制区域内中心点o的连线与限制区域正北向之间的逆时针夹角为航向角,以限制区域正北向为0°,逆时针为0°~360°,分别计算出限制区域边线上给定的每一个边线点的航向角,将边线点的经度、纬度数据以相应航向角递增的顺序存储于存储器中;
步骤②、计算查询点的航向角,根据查询点的经度、纬度数据计算查询点和限制区域内中心点o的连线与限制区域正北向之间的逆时针夹角,得出查询点的航向角;
步骤③、查询数据偏移地址,以步骤②得出的航向角值为搜索对象,在存储器中搜索出与查询点航向角最为接近的航向角,并提取相应航向角对应的边线点的经度、纬度数据;
步骤④、对比判断,分别计算出查询点与限制区域内中心点o之间的距离,以及步骤③查询到的边线点与限制区域内中心点o之间的距离,比较两者的大小,从而判断出查询点在限制区域内部或者外部。
优选的,在步骤①中设置一个包含360个数据的整数型索引数组index[360],存储对应整数航向角数据的偏移地址,数组序号与整数航向角数值上保持一致,即:index[0]存储航向角为0°的第一个数据的偏移地址;index[1]存储第一个航向角≥1°的数据点的偏移地址,以此类推。
优选的,在步骤④中首先设置一个贴近限制区域的外框作为初选框,若查询点落在初选框外则直接判断为区域外;若查询点落在初选框内,再进行进一步数据索引号的计算与判断。
优选的,步骤②计算查询点的航向角的方法为:
将查询点经度、纬度数据转换至地球系
其中:
re=6378137,rp=6356752.3142,
φ为纬度,λ为经度;
然后,计算查询点在中心点o为坐标原点的北、天、东地理系下坐标:
其中:
计算查询点航向角(°):
利用
优选的,步骤③中能够采用二分方法进行进一步搜索。
由于采用如上所述的技术方案,本发明具有如下有益效果:
本发明公开的一种基于航向索引的区域识别快速搜索方法,巧妙的将二维搜索简化为一维搜索,设计实现简单;搜索过程无需遍历所有数据,搜索速度快、计算量小、判别精度高;本发明的方法既适用于设定的多边形限制区的识别,同时也适用于以省界、市界以及国境线作为限制区域的识别;在飞行过程中实时判断并给出飞行器在设定的限定区域内部与外部的指示,为实现飞行区域控制提供支撑,从而防止飞行器飞入或飞出限定区域。
附图说明
图1为给定的限制区域地图;
图2为给定的限制区域地图数据存储方式表;
图3为d点航向角对应的边线点数据表;
图4为e点航向角对应的边线点数据表。
具体实施方式
通过下面的实施例可以详细的解释本发明,公开本发明的目的旨在保护本发明范围内的一切技术改进。
一种基于航向索引的区域识别快速搜索方法,包含以下步骤:
步骤①、建立限制区域地图数据,在设定的限制区域内选择一个中心点o,定义以限制区域边线上给定的边线点和限制区域内中心点o的连线与限制区域正北向之间的逆时针夹角为航向角,以限制区域正北向为0°,逆时针为0°~360°,分别计算出限制区域边线上给定的每一个边线点的航向角,将边线点的经度、纬度数据以相应航向角递增的顺序存储于存储器中;设置一个包含360个数据的整数型索引数组index[360],存储对应整数航向角数据的偏移地址,数组序号与整数航向角数值上保持一致,即:index[0]存储航向角为0°的第一个数据的偏移地址;index[1]存储第一个航向角≥1°的数据点的偏移地址,以此类推;
步骤②、计算查询点的航向角,根据查询点的经度、纬度数据计算查询点和限制区域内中心点o的连线与限制区域正北向之间的逆时针夹角,得出查询点的航向角;计算查询点的航向角的方法为:
将查询点经度、纬度数据转换至地球系
其中:
re=6378137,rp=6356752.3142,
φ为纬度,λ为经度;
然后,计算查询点在中心点o为坐标原点的北、天、东地理系下坐标:
其中:
计算查询点航向角(°):
利用
步骤③、查询数据偏移地址,以步骤②得出的航向角值为搜索对象,在存储器中搜索出与查询点航向角最为接近的航向角,并提取相应航向角对应的边线点的经度、纬度数据;
步骤④、对比判断,分别计算出查询点与限制区域内中心点o之间的距离,以及步骤③查询到的边线点与限制区域内中心点o之间的距离,比较两者的大小,从而判断出查询点在限制区域内部或者外部;进一步的,能够首先设置一个贴近限制区域的外框作为初选框,若查询点落在初选框外则直接判断为区域外;若查询点落在初选框内,再进行进一步数据索引号的计算与判断。
实施例一:
结合附图1和图2,图1为一个设置的识别区域地图,总数据点数6241个,图1中o为中心点,点a、b、c分别为航向角0°、1°、2°的边线点,d点分别为限制区域外部待查询的点,d点经度、纬度坐标为(109.1,20.0)°;图2为图1限制区域地图数据存储方式,为了保证数据精度,数据采用4字节表示;
依据步骤②的方法计算得:
能够得出图3,即通过d点航向角索引提取到的27°扇区对应的边线点;27°扇区内只有两个点,d点航向角数值落在数据1数据2之间,即索引偏移地址误差为1。
实施例二:
结合附图1和图2,图1为一个设置的识别区域地图,总数据点数6241个,图1中o为中心点,点a、b、c分别为航向角0°、1°、2°的边线点,e点分别为限制区域外部待查询的点,e点经度、纬度坐标为(110.9,19.1)°;图2为图1限制区域地图数据存储方式,为了保证数据精度,数据采用4字节表示;
依据步骤②的方法计算得:
能够得出图4,即过e点航向角索引提取到的281°扇区的边线点,281°扇区内有8个数据点,e点航向角数值落在数据4数据5之间,索引偏移地址误差为4,在索引误差达到256个时,采用二分方法,最多8次即可找到与查询点航向角最为接近的边线点;
利用公式(2)计算该边线点到限制区域内中心点o的坐标
为保证判断的可靠性,可以在该边线点前后各增加一个点进行判断。
本发明未详述部分为现有技术。