本发明属于基于位置服务应用技术领域,具体涉及一种判断移动点进出多边形区域的实现方法。
背景技术:
位置服务又称定位服务,是指通过移动终端和移动网络的相互配合,以空问数据库为基础,确定移动用户的实际地理位置,从而提供用户所需要的与位置相关的服务信息。
位置服务通过应用卫星导航定位技术和移动通信技术,在地图数据库的支撑下,通过便捷、有效地操作,为用户提供空间信息服务,告诉别人特定的客体在哪里、去哪里、周围有什么东西等。
位置服务在货运、危险品运输、出租车以及公交等领域得到了广泛应用;伴随着物联网的日益壮大,位置服务能够覆盖的应用场景越来越多。
位置服务需要判断移动点进出一个区域。区域通常表示为一多边形。移动点进出一个区域的判断方法为如果移动点的前一位置在区域外,当前位置在区域内,则产生了进区域动作;如果移动点的前一位置在区域内,当前位置在区域外,则产生了出区域动作。
判断点是否在多边形内是计算机图形学中的基本问题,在计算机图形处理、模式识别、CAD及科学计算可视化中有着广泛的应用。
判断点在多边形内外的算法有很多种,目前应用最多的是射线法。
采用射线法判断点在点在多边形内部或外部。以点为端点的射线,如果和多边形有奇数个交点,则点在多边形内部;如果和多边形有偶数个交点,则点在多边形外部。如果多边形顶点在射线上,需进一步判断。
如果点数据量较大,比如要判断几百万个点是否在多边形内,需要将这几百万个点一一做射线法,无疑限制了判断的速度。
技术实现要素:
本发明针对现有技术存在的不足提供一种判断移动点进出多边形区域的实现方法。
本发明的技术解决方案是:一种判断移动点进出多边形区域的实现方法,所述移动点的位置通过平面坐标表示,X轴为经度,东经为X轴正向;Y轴为纬度,北纬为Y轴正向;
所述多边形是由三条或三条以上的线段首尾顺次连接所组成的平面图形,用一组顶点序列表示;从起始顶点开始,顺时针方向依次经过所有顶点,最后回到起始点,构成的封闭形状;以相邻的两点为端点构成的线段是多边形的边;
检测方法包括以下步骤:
S1:持续检测移动点的位置,判断移动点是否在多边形的内部或外部;
S1.1:从多边形顶点开始,按顺时针方向依次经过所有顶点,生成多边形顶点序列;
S1.2:坐标平移;将坐标原点平移到当前移动点,方向不变,建立新坐标系;
S1.3:多边形顶点序列在新坐标系进行平移变换操作,形成新坐标系的顶点序列;
S1.4:判断X轴正轴和多边形的边是否相交;
S1.5:X轴正轴和多边形的边有交点,交点计数加一;
S1.6:所有边处理完成;奇数个交点个数,多边形区域内;否,则多边形区域外;
S2:判断点进出多边形区域;
S2.1:保存前一移动点区域位置;
S2.2:判断当前的移动点在多边行区域内部或外部
S2.3:当前的移动点的位置与前一移动点的位置进行比较,判断当前的移动点是出区域或进区域;
S2.4:当前的移动点数据保存到前一移动点;
S2.5:重复步骤S2.1~S2.5。
根据本发明实施例,所述S1.4:判断X轴正轴和多边形的边是否相交,同时符合以下三个条件,X轴正轴和多边形的边有交点;
(1)多边形边的两个端点没有端点在X轴上;
(2)多边形边的两个端点至少有一个端点在坐标系的第一象限或第四象限;
(3)多边形边的两个端点分别分布在X轴的上下两侧。
根据本发明实施例,所述S2.3:判断当前一移动点是出区域或进区域的步骤如下:
(1)前一移动点在多边形区域内,如果当前的移动点在多边形区域外,则当前的移动点判断为出区域;
(2)前一移动点在多边形区域外,如果当前的移动点在多边形区域内,则当前的移动点判断为进区域。
本发明的有益技术效果是:通过简单的坐标平移和数值相乘以及数值符号判断,完成判断点在多边形区域内外功能判断;降低技术实现难度。
附图说明
图1是判断点在多边形区域内外方法流程。
图2是判断点进出多边形区域方法流程。
具体实施方式
下面结合附图对本发明做进一步地说明。
一种判断移动点进出多边形的实现方法,移动点的位置通过平面坐标表示,X轴为经度,东经为X轴正向;Y轴为纬度,北纬为Y轴正向;多边形是由三条或三条以上的线段首尾顺次连接所组成的平面图形,用一组顶点序列表示;从起始顶点开始,顺时针方向依次经过所有顶点,最后回到起始点,构成的封闭形状;以相邻的两点为端点构成的线段是多边形的边。
检测方法包括以下步骤:持续检测移动点的位置,判断移动点是否在多边形的内部或外部;如图1所示。
第一步:从多边形顶点开始,按顺时针方向依次经过所有顶点,生成多边形顶点序列。
第二步:坐标平移;将坐标原点平移到当前的移动点,方向不变,建立新坐标系。
第三步:多边形顶点序列在新坐标系进行平移变换操作,形成新坐标系的顶点序列。
第四步:判断X轴正轴和多边形的边是否相交。
同时符合以下三个条件,X轴正轴和多边形的边有交点。
(1)多边形边的两个端点没有端点在X轴上。
(2)多边形边的两个端点至少有一个端点在坐标系的第一象限或第四象限。
(3)多边形边的两个端点分别分布在X轴的上下两侧。
第五步:X轴正轴和多边形的边有交点,交点计数加一。
第六步:所有边处理完成;奇数个交点个数,多边形区域内;偶数个交点个数,则多边形区域外。
如图2所示,判断点进出多边形区域流程如下。
第一步:保存前一移动点区域位置。
第二步:判断当前的移动点在多边形区域内部或外部。
第三步:当前的移动点的位置与前一移动点的位置进行比较,判断当前的移动点是出区域或进区域;
(1)前一移动点在多边形区域内,如果当前的移动点在多边形区域外,则当前的移动点判断为出区域;
(2)前一移动点在多边形区域外,如果当前的移动点在多边形区域内,则当前的移动点判断为进区域。
第四步:当前一移动点数据保存到前一移动点。
第五步:重复步骤1~5。
该方法算法简单,只通过数值相乘计算和符号判断即可实现判别功能。
假设(X1,Y1)和(X2,Y2)为多边形边的两端点经纬度坐标。
(1)X1×X2=0,多边形边有端点在X轴上。
(2)Y1>0或Y2>0,有端点在ⅠⅣ象限。
(3)X1×X2<0,两端点在X轴上下两侧。
该方法已经在符合交通运输部《JT/T794-2011道路运输车辆卫星定位系统车载终端技术要求》标准的车载终端产品上有实际应用。