CN111522896A - 确定平面多边形凹凸点的方法及系统 - Google Patents
确定平面多边形凹凸点的方法及系统 Download PDFInfo
- Publication number
- CN111522896A CN111522896A CN202010327698.3A CN202010327698A CN111522896A CN 111522896 A CN111522896 A CN 111522896A CN 202010327698 A CN202010327698 A CN 202010327698A CN 111522896 A CN111522896 A CN 111522896A
- Authority
- CN
- China
- Prior art keywords
- vertex
- database
- atan2
- polygon
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/29—Geographical information databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/60—Analysis of geometric attributes
- G06T7/64—Analysis of geometric attributes of convexity or concavity
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Geometry (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Remote Sensing (AREA)
- Image Analysis (AREA)
Abstract
本发明提供一种确定平面多边形凹凸点的方法及系统,方法包括以下步骤:识别GPX数据处理成面数据时围成的平面多边形的坐标方向;根据识别到的多边形坐标方向,对于顶点P1,P2,…,Pn中的任意一个顶点Pa(xa,ya),其中,a=1,2,…,n,均识别平面多边形每个顶点的凹凸属性。本发明能够简单、快速、准确的对GPX数据处理成面数据时平面多边形凹凸点属性进行识别,从而简化了系统配置的复杂度和开销,提高了数据处理的效率。本发明提供的确定平面多边形凹凸点的方法及系统,可用于地理信息系统中对航线数据等进行信息处理。
Description
技术领域
本发明属于GPX数据处理技术领域,具体涉及一种确定平面多边形凹凸点的方法及系统。
背景技术
GPX是GPS数据交换格式的简写,是一种比较小的XML(EXtensible MarkupLanguage)数据格式,包括航点坐标等GPS信息,可在网络上传输并且支持网络服务。
在获得GPX航线数据后,为将其应用于Google Earth(三维地球)、MapSource(garmin导航仪工具软件)等应用程序,通常需要将GPX航线数据生成面数据。其中,GPX面数据是由多个航点的二维坐标构成。在图像检测等地理信息处理时,常常需要识别面数据中每个顶点的凹凸性,然而,现有的面数据顶点凹凸性的识别方法,普遍具有识别过程复杂的问题。
发明内容
针对现有技术存在的缺陷,本发明提供一种确定平面多边形凹凸点的方法及系统,可有效解决上述问题。
本发明采用的技术方案如下:
本发明提供一种确定平面多边形凹凸点的方法,包括以下步骤:
步骤1,识别GPX数据处理成面数据时围成的平面多边形的坐标方向,包括:
步骤1.1,将GPX数据转换为面数据;其中,所述面数据包括多个顶点,每个所述顶点具有二维xy坐标;按照航迹方向,将各个所述顶点的二维坐标存入到数据库中;
假设共有n个顶点,按航迹方向,依次为P1(x1,y1),P2(x2,y2),…,Pn(xn,yn);
步骤1.2,遍历所述数据库中的n个顶点,查找到纵坐标y值最大的所有顶点;
步骤1.3,判断y值最大的顶点是否只有一个,如果是,将y值最大的顶点记为PA(xA,yA),然后执行步骤1.5;其中,A∈(1,2,…,n);如果不是,执行步1.骤4;
步骤1.4,在y值最大的各个顶点中,查找到横坐标x值最小的顶点,将查找到的顶点记为PA(xA,yA),然后执行步骤1.5;
步骤1.5,在xy坐标系中标记顶点PA,然后,在顶点PA正上方标记辅助点PD(xA,yA+m);其中,m为大于0的任意数字;
步骤1.6,在数据库中定位到顶点PA,然后,寻找到顶点PA前一个相邻的顶点PB(xB,yB)以及后一个相邻的顶点PC(xC,yC);
其中:
如果A=1,则顶点PB为数据库中的顶点Pn(xn,yn),顶点PC为数据库中的顶点P2(x2,y2);
如果A=n,则顶点PB为数据库中的顶点Pn-1(xn-1,yn-1),顶点PC为数据库中的顶点P1(x1,y1);
如果A=2,3,…,n-1,则顶点PB为数据库中的顶点PA-1(xA-1,yA-1),顶点PC为数据库中的顶点PA+1(xA+1,yA+1);
步骤1.7,计算矢量PAPD到矢量PAPB在顺时针方向的夹角E1;计算矢量PAPD到PAPC在顺时针方向的夹角E2;
步骤1.8,判断夹角E1是否大于夹角E2,如果大于,则确定由顶点P1,P2,…,Pn首尾相接围成的多边形坐标方向为顺时针;否则,确定由顶点P1,P2,…,Pn首尾相接围成的多边形坐标方向为逆时针;
步骤2,根据步骤1识别到的多边形坐标方向,对于顶点P1,P2,…,Pn中的任意一个顶点Pa(xa,ya),其中,a=1,2,…,n,均采用以下方法识别平面多边形每个顶点的凹凸属性:
步骤2.1,在数据库中,定位到顶点Pa的前一个顶点Pb(xb,yb)和后一个顶点Pc(xc,yc);
步骤2.2,判断顶点Pa和顶点Pb的纵坐标是否相同,如果相同,则执行步骤2.3;如果不相同,则以顶点Pa为原点,计算atan2(yb,xb)的值;然后执行步骤2.4;
步骤2.3,判断顶点Pb的横坐标是否小于顶点Pa的横坐标,即:判断顶点Pb是否位于顶点Pa的正左侧,如果是,则以顶点Pa为原点,直接令atan2(yb,xb)=180度;如果否,表明顶点Pb位于顶点Pa的正右侧,则以顶点Pa为原点,计算atan2(yb,xb)的值;然后执行步骤2.4;
步骤2.4,判断顶点Pa和顶点Pc的纵坐标是否相同,如果相同,则执行步骤2.5;如果不相同,则以顶点Pa为原点,计算atan2(yc,xc)的值;然后执行步骤2.6;
步骤2.5,判断顶点Pb的横坐标是否小于顶点Pc的横坐标,即:判断顶点Pc是否位于顶点Pa的正左侧,如果是,则以顶点Pa为原点,直接令atan2(yc,xc)=180度;如果否,表明顶点Pc位于顶点Pa的正右侧,则以顶点Pa为原点,计算atan2(yc,xc)的值;然后执行步骤2.6;
步骤2.6,计算矢量PaPb到矢量PaPc在逆时针方向的夹角E3为:(180/π)(atan2(yc,xc)-atan2(yb,xb));
步骤2.7,当步骤1识别到的多边形坐标方向为顺时针时,判断夹角E3是否大于180度;如果是,顶点Pa为凹点;否则,表明顶点Pa为凸点;然后在数据库中记录顶点Pa的凸凹属性;
当步骤1识别到的多边形坐标方向为逆时针时,判断夹角E3是否大于180度;如果是,顶点Pa为凸点;否则,表明顶点Pa为凹点;然后在数据库中记录顶点Pa的凸凹属性。
本发明还提供一种确定平面多边形凹凸点的系统,包括:
坐标方向识别模块,用于识别GPX数据处理成面数据时围成的平面多边形的坐标方向;
顶点的凹凸属性识别模块,用于根据坐标方向识别模块识别到的多边形坐标方向,对于顶点P1,P2,…,Pn中的任意一个顶点Pa(xa,ya),其中,a=1,2,…,n,均识别平面多边形每个顶点的凹凸属性。
优选的,坐标方向识别模块具体用于:
步骤1.1,将GPX数据转换为面数据;其中,所述面数据包括多个顶点,每个所述顶点具有二维xy坐标;按照航迹方向,将各个所述顶点的二维坐标存入到数据库中;
假设共有n个顶点,按航迹方向,依次为P1(x1,y1),P2(x2,y2),…,Pn(xn,yn);
步骤1.2,遍历所述数据库中的n个顶点,查找到纵坐标y值最大的所有顶点;
步骤1.3,判断y值最大的顶点是否只有一个,如果是,将y值最大的顶点记为PA(xA,yA),然后执行步骤1.5;其中,A∈(1,2,…,n);如果不是,执行步1.骤4;
步骤1.4,在y值最大的各个顶点中,查找到横坐标x值最小的顶点,将查找到的顶点记为PA(xA,yA),然后执行步骤1.5;
步骤1.5,在xy坐标系中标记顶点PA,然后,在顶点PA正上方标记辅助点PD(xA,yA+m);其中,m为大于0的任意数字;
步骤1.6,在数据库中定位到顶点PA,然后,寻找到顶点PA前一个相邻的顶点PB(xB,yB)以及后一个相邻的顶点PC(xC,yC);
其中:
如果A=1,则顶点PB为数据库中的顶点Pn(xn,yn),顶点PC为数据库中的顶点P2(x2,y2);
如果A=n,则顶点PB为数据库中的顶点Pn-1(xn-1,yn-1),顶点PC为数据库中的顶点P1(x1,y1);
如果A=2,3,…,n-1,则顶点PB为数据库中的顶点PA-1(xA-1,yA-1),顶点PC为数据库中的顶点PA+1(xA+1,yA+1);
步骤1.7,计算矢量PAPD到矢量PAPB在顺时针方向的夹角E1;计算矢量PAPD到PAPC在顺时针方向的夹角E2;
步骤1.8,判断夹角E1是否大于夹角E2,如果大于,则确定由顶点P1,P2,…,Pn首尾相接围成的多边形坐标方向为顺时针;否则,确定由顶点P1,P2,…,Pn首尾相接围成的多边形坐标方向为逆时针。
优选的,顶点的凹凸属性识别模块具体用于:
步骤2.1,在数据库中,定位到顶点Pa的前一个顶点Pb(xb,yb)和后一个顶点Pc(xc,yc);
步骤2.2,判断顶点Pa和顶点Pb的纵坐标是否相同,如果相同,则执行步骤2.3;如果不相同,则以顶点Pa为原点,计算atan2(yb,xb)的值;然后执行步骤2.4;
步骤2.3,判断顶点Pb的横坐标是否小于顶点Pa的横坐标,即:判断顶点Pb是否位于顶点Pa的正左侧,如果是,则以顶点Pa为原点,直接令atan2(yb,xb)=180度;如果否,表明顶点Pb位于顶点Pa的正右侧,则以顶点Pa为原点,计算atan2(yb,xb)的值;然后执行步骤2.4;
步骤2.4,判断顶点Pa和顶点Pc的纵坐标是否相同,如果相同,则执行步骤2.5;如果不相同,则以顶点Pa为原点,计算atan2(yc,xc)的值;然后执行步骤2.6;
步骤2.5,判断顶点Pb的横坐标是否小于顶点Pc的横坐标,即:判断顶点Pc是否位于顶点Pa的正左侧,如果是,则以顶点Pa为原点,直接令atan2(yc,xc)=180度;如果否,表明顶点Pc位于顶点Pa的正右侧,则以顶点Pa为原点,计算atan2(yc,xc)的值;然后执行步骤2.6;
步骤2.6,计算矢量PaPb到矢量PaPc在逆时针方向的夹角E3为:(180/π)(atan2(yc,xc)-atan2(yb,xb));
步骤2.7,当步骤1识别到的多边形坐标方向为顺时针时,判断夹角E3是否大于180度;如果是,顶点Pa为凹点;否则,表明顶点Pa为凸点;然后在数据库中记录顶点Pa的凸凹属性;
当步骤1识别到的多边形坐标方向为逆时针时,判断夹角E3是否大于180度;如果是,顶点Pa为凸点;否则,表明顶点Pa为凹点;然后在数据库中记录顶点Pa的凸凹属性。
本发明提供的确定平面多边形凹凸点的方法及系统具有以下优点:
本发明能够简单、快速、准确的对GPX数据处理成面数据时平面多边形凹凸点属性进行识别,从而简化了系统配置的复杂度和开销,提高了数据处理的效率。本发明提供的确定平面多边形凹凸点的方法及系统,可用于地理信息系统中对航线数据等进行信息处理。
附图说明
图1为本发明提供的确定平面多边形凹凸点的方法的流程示意图;
图2为本发明提供的平面多边形的坐标方向识别原理图;
图3为本发明提供的一种平面多边形凹凸点属性识别原理图;
图4为本发明提供的一种平面多边形凹凸点属性识别原理图;
图5为本发明提供的一种平面多边形凹凸点属性识别原理图。
具体实施方式
为了使本发明所解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明提供一种确定平面多边形凹凸点的方法,参考图1,包括以下步骤:
步骤1,识别GPX数据处理成面数据时围成的平面多边形的坐标方向,包括:
步骤1.1,将GPX数据转换为面数据;其中,所述面数据包括多个顶点,每个所述顶点具有二维xy坐标;按照航迹方向,将各个所述顶点的二维坐标存入到数据库中;
假设共有n个顶点,按航迹方向,依次为P1(x1,y1),P2(x2,y2),…,Pn(xn,yn);
步骤1.2,遍历所述数据库中的n个顶点,查找到纵坐标y值最大的所有顶点;
步骤1.3,判断y值最大的顶点是否只有一个,如果是,将y值最大的顶点记为PA(xA,yA),然后执行步骤1.5;其中,A∈(1,2,…,n);如果不是,执行步1.骤4;
步骤1.4,在y值最大的各个顶点中,查找到横坐标x值最小的顶点,将查找到的顶点记为PA(xA,yA),然后执行步骤1.5;
步骤1.2-步骤1.4的主要原理为:如果纵坐标y值最大的顶点只有一个,此时可以确定,该顶点必然是多边形的一个凸点,因此,可利用后续步骤1.7-步骤1.9的方法,识别多边形的坐标方向。而如果该顶点不是凸点,则不适用于后续步骤1.7-步骤1.9。另外,如果纵坐标y值最大的顶点有多个时,例如,有三个顶点,分别为K1、K2和K3,K1、K2和K3的纵坐标y值相等,并且为数据库中y值最大的顶点;此时,可以毫无疑义的判断出,横坐标x值最小的顶点必然为多边形的一个凸点。而对于其他顶点,例如,K2顶点,则有可能不是多边形的一个凸点,例如,如果K1、K2和K3为相邻的顶点,则K2为线段K1-K3中间的一个点,其并不是凸点,不适用于后续步骤1.7-步骤1.9。因此,本发明通过以上方法,可以简单快速精确的定位到多边形的一个凸点。
步骤1.5,在xy坐标系中标记顶点PA,然后,在顶点PA正上方标记辅助点PD(xA,yA+m);其中,m为大于0的任意数字;
步骤1.6,在数据库中定位到顶点PA,然后,寻找到顶点PA前一个相邻的顶点PB(xB,yB)以及后一个相邻的顶点PC(xC,yC);
其中:
如果A=1,则顶点PB为数据库中的顶点Pn(xn,yn),顶点PC为数据库中的顶点P2(x2,y2);
如果A=n,则顶点PB为数据库中的顶点Pn-1(xn-1,yn-1),顶点PC为数据库中的顶点P1(x1,y1);
如果A=2,3,…,n-1,则顶点PB为数据库中的顶点PA-1(xA-1,yA-1),顶点PC为数据库中的顶点PA+1(xA+1,yA+1);
步骤1.7,参考图2,计算矢量PAPD到矢量PAPB在顺时针方向的夹角E1;计算矢量PAPD到PAPC在顺时针方向的夹角E2;
实际应用中,可以运用atan2函数计算夹角E1和夹角E2的值。其中,atan2是一个函数,在C语言里返回的是指方位角,C语言中atan2的函数原型为doubleatan2(double y,double x),返回以弧度表示的y/x的反正切。y和x的值的符号决定了正确的象限。也可以理解为计算复数x+yi的辐角。例如,PAPD到矢量PAPB在顺时针方向的夹角E1为:atan2(yPB,xPB)-atan2(yPD,xPD),换算为度数时,再乘以180/π。
步骤1.8,判断夹角E1是否大于夹角E2,如果大于,则确定由顶点P1,P2,…,Pn首尾相接围成的多边形坐标方向为顺时针;否则,确定由顶点P1,P2,…,Pn首尾相接围成的多边形坐标方向为逆时针;
步骤2,根据步骤1识别到的多边形坐标方向,对于顶点P1,P2,…,Pn中的任意一个顶点Pa(xa,ya),其中,a=1,2,…,n,均采用以下方法识别平面多边形每个顶点的凹凸属性:
步骤2.1,在数据库中,定位到顶点Pa的前一个顶点Pb(xb,yb)和后一个顶点Pc(xc,yc);
步骤2.2,判断顶点Pa和顶点Pb的纵坐标是否相同,如果相同,则执行步骤2.3;如果不相同,则以顶点Pa为原点,计算atan2(yb,xb)的值;然后执行步骤2.4;
步骤2.3,判断顶点Pb的横坐标是否小于顶点Pa的横坐标,即:判断顶点Pb是否位于顶点Pa的正左侧,如果是,则以顶点Pa为原点,直接令atan2(yb,xb)=180度;如果否,表明顶点Pb位于顶点Pa的正右侧,则以顶点Pa为原点,计算atan2(yb,xb)的值;然后执行步骤2.4;
步骤2.4,判断顶点Pa和顶点Pc的纵坐标是否相同,如果相同,则执行步骤2.5;如果不相同,则以顶点Pa为原点,计算atan2(yc,xc)的值;然后执行步骤2.6;
步骤2.5,判断顶点Pb的横坐标是否小于顶点Pc的横坐标,即:判断顶点Pc是否位于顶点Pa的正左侧,如果是,则以顶点Pa为原点,直接令atan2(yc,xc)=180度;如果否,表明顶点Pc位于顶点Pa的正右侧,则以顶点Pa为原点,计算atan2(yc,xc)的值;然后执行步骤2.6;
步骤2.6,计算矢量PaPb到矢量PaPc在逆时针方向的夹角E3为:(180/π)(atan2(yc,xc)-atan2(yb,xb));
步骤2.7,当步骤1识别到的多边形坐标方向为顺时针时,判断夹角E3是否大于180度;如果是,顶点Pa为凹点;否则,表明顶点Pa为凸点;然后在数据库中记录顶点Pa的凸凹属性;
当步骤1识别到的多边形坐标方向为逆时针时,判断夹角E3是否大于180度;如果是,顶点Pa为凸点;否则,表明顶点Pa为凹点;然后在数据库中记录顶点Pa的凸凹属性。
例如,如图3所示,假设五边形坐标方向为顺时针,各个顶点坐标存储顺序为:顶点Pa、顶点Pc、顶点Pe、顶点Pd和顶点Pb;当识别顶点Pa的凸凹属性时,顶点Pa的前一个顶点为Pb(xb,yb),后一个顶点为Pc(xc,yc);因此,矢量PaPb到矢量PaPc在逆时针方向的夹角E3为图3中弧形箭头所示角度,因此,夹角E3小于180度;顶点Pa为凸点。
而五边形坐标方向仍然为顺时针,如图4所示,当矢量PaPb到矢量PaPc在逆时针方向的夹角E3为图4中弧形箭头所示角度时,夹角E3大于180度;顶点Pa为凹点。
而如果五边形坐标方向为逆时针时,如图5所示,各个顶点坐标存储顺序为:顶点Pa、顶点Pc、顶点Pe、顶点Pd和顶点Pb;当识别顶点Pa的凸凹属性时,顶点Pa的前一个顶点为Pb(xb,yb),后一个顶点为Pc(xc,yc);矢量PaPb到矢量PaPc在逆时针方向的夹角E3为图5中弧形箭头所示角度时,夹角E3小于180度;顶点Pa为凹点。
本发明还提供一种确定平面多边形凹凸点的系统,包括:
坐标方向识别模块,用于识别GPX数据处理成面数据时围成的平面多边形的坐标方向;
坐标方向识别模块具体用于:
步骤1.1,将GPX数据转换为面数据;其中,所述面数据包括多个顶点,每个所述顶点具有二维xy坐标;按照航迹方向,将各个所述顶点的二维坐标存入到数据库中;
假设共有n个顶点,按航迹方向,依次为P1(x1,y1),P2(x2,y2),…,Pn(xn,yn);
步骤1.2,遍历所述数据库中的n个顶点,查找到纵坐标y值最大的所有顶点;
步骤1.3,判断y值最大的顶点是否只有一个,如果是,将y值最大的顶点记为PA(xA,yA),然后执行步骤1.5;其中,A∈(1,2,…,n);如果不是,执行步1.骤4;
步骤1.4,在y值最大的各个顶点中,查找到横坐标x值最小的顶点,将查找到的顶点记为PA(xA,yA),然后执行步骤1.5;
步骤1.5,在xy坐标系中标记顶点PA,然后,在顶点PA正上方标记辅助点PD(xA,yA+m);其中,m为大于0的任意数字;
步骤1.6,在数据库中定位到顶点PA,然后,寻找到顶点PA前一个相邻的顶点PB(xB,yB)以及后一个相邻的顶点PC(xC,yC);
其中:
如果A=1,则顶点PB为数据库中的顶点Pn(xn,yn),顶点PC为数据库中的顶点P2(x2,y2);
如果A=n,则顶点PB为数据库中的顶点Pn-1(xn-1,yn-1),顶点PC为数据库中的顶点P1(x1,y1);
如果A=2,3,…,n-1,则顶点PB为数据库中的顶点PA-1(xA-1,yA-1),顶点PC为数据库中的顶点PA+1(xA+1,yA+1);
步骤1.7,计算矢量PAPD到矢量PAPB在顺时针方向的夹角E1;计算矢量PAPD到PAPC在顺时针方向的夹角E2;
步骤1.8,判断夹角E1是否大于夹角E2,如果大于,则确定由顶点P1,P2,…,Pn首尾相接围成的多边形坐标方向为顺时针;否则,确定由顶点P1,P2,…,Pn首尾相接围成的多边形坐标方向为逆时针。
顶点的凹凸属性识别模块,用于根据坐标方向识别模块识别到的多边形坐标方向,对于顶点P1,P2,…,Pn中的任意一个顶点Pa(xa,ya),其中,a=1,2,…,n,均识别平面多边形每个顶点的凹凸属性。
顶点的凹凸属性识别模块具体用于:
步骤2.1,在数据库中,定位到顶点Pa的前一个顶点Pb(xb,yb)和后一个顶点Pc(xc,yc);
步骤2.2,判断顶点Pa和顶点Pb的纵坐标是否相同,如果相同,则执行步骤2.3;如果不相同,则以顶点Pa为原点,计算atan2(yb,xb)的值;然后执行步骤2.4;
步骤2.3,判断顶点Pb的横坐标是否小于顶点Pa的横坐标,即:判断顶点Pb是否位于顶点Pa的正左侧,如果是,则以顶点Pa为原点,直接令atan2(yb,xb)=180度;如果否,表明顶点Pb位于顶点Pa的正右侧,则以顶点Pa为原点,计算atan2(yb,xb)的值;然后执行步骤2.4;
步骤2.4,判断顶点Pa和顶点Pc的纵坐标是否相同,如果相同,则执行步骤2.5;如果不相同,则以顶点Pa为原点,计算atan2(yc,xc)的值;然后执行步骤2.6;
步骤2.5,判断顶点Pb的横坐标是否小于顶点Pc的横坐标,即:判断顶点Pc是否位于顶点Pa的正左侧,如果是,则以顶点Pa为原点,直接令atan2(yc,xc)=180度;如果否,表明顶点Pc位于顶点Pa的正右侧,则以顶点Pa为原点,计算atan2(yc,xc)的值;然后执行步骤2.6;
步骤2.6,计算矢量PaPb到矢量PaPc在逆时针方向的夹角E3为:(180/π)(atan2(yc,xc)-atan2(yb,xb));
步骤2.7,当步骤1识别到的多边形坐标方向为顺时针时,判断夹角E3是否大于180度;如果是,顶点Pa为凹点;否则,表明顶点Pa为凸点;然后在数据库中记录顶点Pa的凸凹属性;
当步骤1识别到的多边形坐标方向为逆时针时,判断夹角E3是否大于180度;如果是,顶点Pa为凸点;否则,表明顶点Pa为凹点;然后在数据库中记录顶点Pa的凸凹属性。
本发明提供的确定平面多边形凹凸点的方法及系统,具有以下优点:
本发明能够简单、快速、准确的对GPX数据处理成面数据时平面多边形凹凸点属性进行识别,从而简化了系统配置的复杂度和开销,提高了数据处理的效率。本发明提供的确定平面多边形凹凸点的方法及系统,可用于地理信息系统中对航线数据等进行信息处理。
本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过与计算机程序指令相关的硬件来完成的,上述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述的存储介质可为磁碟、光盘、只读存储记忆体(ROM:Read-OnlyMemory)或随机存储记忆体(RAM:RandomAccess Memory)等。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
Claims (4)
1.一种确定平面多边形凹凸点的方法,其特征在于,包括以下步骤:
步骤1,识别GPX数据处理成面数据时围成的平面多边形的坐标方向,包括:
步骤1.1,将GPX数据转换为面数据;其中,所述面数据包括多个顶点,每个所述顶点具有二维xy坐标;按照航迹方向,将各个所述顶点的二维坐标存入到数据库中;
假设共有n个顶点,按航迹方向,依次为P1(x1,y1),P2(x2,y2),…,Pn(xn,yn);
步骤1.2,遍历所述数据库中的n个顶点,查找到纵坐标y值最大的所有顶点;
步骤1.3,判断y值最大的顶点是否只有一个,如果是,将y值最大的顶点记为PA(xA,yA),然后执行步骤1.5;其中,A∈(1,2,…,n);如果不是,执行步1.骤4;
步骤1.4,在y值最大的各个顶点中,查找到横坐标x值最小的顶点,将查找到的顶点记为PA(xA,yA),然后执行步骤1.5;
步骤1.5,在xy坐标系中标记顶点PA,然后,在顶点PA正上方标记辅助点PD(xA,yA+m);其中,m为大于0的任意数字;
步骤1.6,在数据库中定位到顶点PA,然后,寻找到顶点PA前一个相邻的顶点PB(xB,yB)以及后一个相邻的顶点PC(xC,yC);
其中:
如果A=1,则顶点PB为数据库中的顶点Pn(xn,yn),顶点PC为数据库中的顶点P2(x2,y2);
如果A=n,则顶点PB为数据库中的顶点Pn-1(xn-1,yn-1),顶点PC为数据库中的顶点P1(x1,y1);
如果A=2,3,…,n-1,则顶点PB为数据库中的顶点PA-1(xA-1,yA-1),顶点PC为数据库中的顶点PA+1(xA+1,yA+1);
步骤1.7,计算矢量PAPD到矢量PAPB在顺时针方向的夹角E1;计算矢量PAPD到PAPC在顺时针方向的夹角E2;
步骤1.8,判断夹角E1是否大于夹角E2,如果大于,则确定由顶点P1,P2,…,Pn首尾相接围成的多边形坐标方向为顺时针;否则,确定由顶点P1,P2,…,Pn首尾相接围成的多边形坐标方向为逆时针;
步骤2,根据步骤1识别到的多边形坐标方向,对于顶点P1,P2,…,Pn中的任意一个顶点Pa(xa,ya),其中,a=1,2,…,n,均采用以下方法识别平面多边形每个顶点的凹凸属性:
步骤2.1,在数据库中,定位到顶点Pa的前一个顶点Pb(xb,yb)和后一个顶点Pc(xc,yc);
步骤2.2,判断顶点Pa和顶点Pb的纵坐标是否相同,如果相同,则执行步骤2.3;如果不相同,则以顶点Pa为原点,计算atan2(yb,xb)的值;然后执行步骤2.4;
步骤2.3,判断顶点Pb的横坐标是否小于顶点Pa的横坐标,即:判断顶点Pb是否位于顶点Pa的正左侧,如果是,则以顶点Pa为原点,直接令atan2(yb,xb)=180度;如果否,表明顶点Pb位于顶点Pa的正右侧,则以顶点Pa为原点,计算atan2(yb,xb)的值;然后执行步骤2.4;
步骤2.4,判断顶点Pa和顶点Pc的纵坐标是否相同,如果相同,则执行步骤2.5;如果不相同,则以顶点Pa为原点,计算atan2(yc,xc)的值;然后执行步骤2.6;
步骤2.5,判断顶点Pb的横坐标是否小于顶点Pc的横坐标,即:判断顶点Pc是否位于顶点Pa的正左侧,如果是,则以顶点Pa为原点,直接令atan2(yc,xc)=180度;如果否,表明顶点Pc位于顶点Pa的正右侧,则以顶点Pa为原点,计算atan2(yc,xc)的值;然后执行步骤2.6;
步骤2.6,计算矢量PaPb到矢量PaPc在逆时针方向的夹角E3为:(180/π)(atan2(yc,xc)-atan2(yb,xb));
步骤2.7,当步骤1识别到的多边形坐标方向为顺时针时,判断夹角E3是否大于180度;如果是,顶点Pa为凹点;否则,表明顶点Pa为凸点;然后在数据库中记录顶点Pa的凸凹属性;
当步骤1识别到的多边形坐标方向为逆时针时,判断夹角E3是否大于180度;如果是,顶点Pa为凸点;否则,表明顶点Pa为凹点;然后在数据库中记录顶点Pa的凸凹属性。
2.一种确定平面多边形凹凸点的系统,其特征在于,包括:
坐标方向识别模块,用于识别GPX数据处理成面数据时围成的平面多边形的坐标方向;
顶点的凹凸属性识别模块,用于根据坐标方向识别模块识别到的多边形坐标方向,对于顶点P1,P2,…,Pn中的任意一个顶点Pa(xa,ya),其中,a=1,2,…,n,均识别平面多边形每个顶点的凹凸属性。
3.根据权利要求2所述的确定平面多边形凹凸点的系统,其特征在于,坐标方向识别模块具体用于:
步骤1.1,将GPX数据转换为面数据;其中,所述面数据包括多个顶点,每个所述顶点具有二维xy坐标;按照航迹方向,将各个所述顶点的二维坐标存入到数据库中;
假设共有n个顶点,按航迹方向,依次为P1(x1,y1),P2(x2,y2),…,Pn(xn,yn);
步骤1.2,遍历所述数据库中的n个顶点,查找到纵坐标y值最大的所有顶点;
步骤1.3,判断y值最大的顶点是否只有一个,如果是,将y值最大的顶点记为PA(xA,yA),然后执行步骤1.5;其中,A∈(1,2,…,n);如果不是,执行步1.骤4;
步骤1.4,在y值最大的各个顶点中,查找到横坐标x值最小的顶点,将查找到的顶点记为PA(xA,yA),然后执行步骤1.5;
步骤1.5,在xy坐标系中标记顶点PA,然后,在顶点PA正上方标记辅助点PD(xA,yA+m);其中,m为大于0的任意数字;
步骤1.6,在数据库中定位到顶点PA,然后,寻找到顶点PA前一个相邻的顶点PB(xB,yB)以及后一个相邻的顶点PC(xC,yC);
其中:
如果A=1,则顶点PB为数据库中的顶点Pn(xn,yn),顶点PC为数据库中的顶点P2(x2,y2);
如果A=n,则顶点PB为数据库中的顶点Pn-1(xn-1,yn-1),顶点PC为数据库中的顶点P1(x1,y1);
如果A=2,3,…,n-1,则顶点PB为数据库中的顶点PA-1(xA-1,yA-1),顶点PC为数据库中的顶点PA+1(xA+1,yA+1);
步骤1.7,计算矢量PAPD到矢量PAPB在顺时针方向的夹角E1;计算矢量PAPD到PAPC在顺时针方向的夹角E2;
步骤1.8,判断夹角E1是否大于夹角E2,如果大于,则确定由顶点P1,P2,…,Pn首尾相接围成的多边形坐标方向为顺时针;否则,确定由顶点P1,P2,…,Pn首尾相接围成的多边形坐标方向为逆时针。
4.根据权利要求2所述的确定平面多边形凹凸点的系统,其特征在于,顶点的凹凸属性识别模块具体用于:
步骤2.1,在数据库中,定位到顶点Pa的前一个顶点Pb(xb,yb)和后一个顶点Pc(xc,yc);
步骤2.2,判断顶点Pa和顶点Pb的纵坐标是否相同,如果相同,则执行步骤2.3;如果不相同,则以顶点Pa为原点,计算atan2(yb,xb)的值;然后执行步骤2.4;
步骤2.3,判断顶点Pb的横坐标是否小于顶点Pa的横坐标,即:判断顶点Pb是否位于顶点Pa的正左侧,如果是,则以顶点Pa为原点,直接令atan2(yb,xb)=180度;如果否,表明顶点Pb位于顶点Pa的正右侧,则以顶点Pa为原点,计算atan2(yb,xb)的值;然后执行步骤2.4;
步骤2.4,判断顶点Pa和顶点Pc的纵坐标是否相同,如果相同,则执行步骤2.5;如果不相同,则以顶点Pa为原点,计算atan2(yc,xc)的值;然后执行步骤2.6;
步骤2.5,判断顶点Pb的横坐标是否小于顶点Pc的横坐标,即:判断顶点Pc是否位于顶点Pa的正左侧,如果是,则以顶点Pa为原点,直接令atan2(yc,xc)=180度;如果否,表明顶点Pc位于顶点Pa的正右侧,则以顶点Pa为原点,计算atan2(yc,xc)的值;然后执行步骤2.6;
步骤2.6,计算矢量PaPb到矢量PaPc在逆时针方向的夹角E3为:(180/π)(atan2(yc,xc)-atan2(yb,xb));
步骤2.7,当步骤1识别到的多边形坐标方向为顺时针时,判断夹角E3是否大于180度;如果是,顶点Pa为凹点;否则,表明顶点Pa为凸点;然后在数据库中记录顶点Pa的凸凹属性;
当步骤1识别到的多边形坐标方向为逆时针时,判断夹角E3是否大于180度;如果是,顶点Pa为凸点;否则,表明顶点Pa为凹点;然后在数据库中记录顶点Pa的凸凹属性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010327698.3A CN111522896A (zh) | 2020-04-23 | 2020-04-23 | 确定平面多边形凹凸点的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010327698.3A CN111522896A (zh) | 2020-04-23 | 2020-04-23 | 确定平面多边形凹凸点的方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111522896A true CN111522896A (zh) | 2020-08-11 |
Family
ID=71910464
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010327698.3A Pending CN111522896A (zh) | 2020-04-23 | 2020-04-23 | 确定平面多边形凹凸点的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111522896A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022226995A1 (zh) * | 2021-04-30 | 2022-11-03 | 北京城市网邻信息技术有限公司 | 基于有序点集的处理方法、处理装置及电子设备 |
-
2020
- 2020-04-23 CN CN202010327698.3A patent/CN111522896A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022226995A1 (zh) * | 2021-04-30 | 2022-11-03 | 北京城市网邻信息技术有限公司 | 基于有序点集的处理方法、处理装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108806059A (zh) | 基于特征点的票据对齐和八邻域连通体偏移修正的文本区域定位方法 | |
CN111968177A (zh) | 一种基于固定摄像头视觉的移动机器人定位方法 | |
CN110704559B (zh) | 一种多尺度矢量面数据匹配方法 | |
Meng et al. | Efficient and reliable LiDAR-based global localization of mobile robots using multiscale/resolution maps | |
CN115683129A (zh) | 一种基于高清地图的长期重定位方法和装置 | |
CN116222539A (zh) | 高精度地图数据差异化更新方法及系统 | |
CN111522896A (zh) | 确定平面多边形凹凸点的方法及系统 | |
CN111506695B (zh) | Gpx数据处理成面数据时的坐标方向识别方法及系统 | |
CN116312054A (zh) | 一种水上船舶交通流复杂度计算方法、装置、设备和介质 | |
Chen et al. | Utilizing Road Network Data for Automatic Identification of Road Intersections from High Resolution Color Orthoimagery. | |
CN113313629B (zh) | 交叉路口自动识别方法、系统及其模型保存方法、系统 | |
CN115422196A (zh) | 一种矢量数据拓扑关系检查方法 | |
CN112651393B (zh) | 兴趣点数据处理方法、装置、设备及存储介质 | |
CN114283397A (zh) | 全局重定位方法、装置、设备及存储介质 | |
CN113808142A (zh) | 一种地面标识的识别方法、装置、电子设备 | |
CN102938156B (zh) | 一种基于积分图像的面状注记配置方法 | |
CN111524203B (zh) | 基于gpx数据的面状矢量图生成方法及系统 | |
CN112766385A (zh) | 一种众源矢量线数据几何匹配与属性融合方法 | |
CN117570994B (zh) | 利用柱状结构辅助slam的地图表征方法 | |
US20240070173A1 (en) | Systems and methods for generating a unique identity for a geospatial object code by processing geospatial data | |
CN112597755B (zh) | 一种地理位置信息生成方法、装置、电子设备及存储介质 | |
CN112988939B (zh) | 一种基于航向索引的区域识别快速搜索方法 | |
CN117405130B (zh) | 目标点云地图获取方法、电子设备及存储介质 | |
CN111458735B (zh) | 自动识别指定位置闭合航线的方法及系统 | |
Chen et al. | 3D LiDAR-Based Localization Methods: An Overview |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |