在定位系统中查询定位点与电子围栏的位置关系的方法与流程

文档序号:17762916发布日期:2019-05-24 21:51阅读:822来源:国知局
在定位系统中查询定位点与电子围栏的位置关系的方法与流程

本发明涉及定位系统技术领域,具体涉及在定位系统中查询定位点与电子围栏的位置关系的方法。



背景技术:

随着信息化技术的不断发展,室内定位已经在工厂、医疗、办公、商场等领域进入了高速发展阶段。在基于室内位置信息的应用中,查询定位主体在哪个/哪些区域范围内是非常基础而重要的功能,有了这个功能就可以实时显示各个区域地点中定位主体的数量。

现有技术方案是通过将区域范围使用平面不规则多边形来表示,在计算某个定位主体属于哪些围栏时,把当前建筑下每个围栏都计算一次,如果主体的位置点在围栏表示的多边形内则表示在这个区域中。由于需要遍历所有围栏,逐个进行计算,其计算的时间复杂度为o(n),n表示围栏数量,在围栏数量很大的情况下性能非常差。方案的性能量级在万级到十万级,即每秒可以计算几万到几十万次,具体数值与硬件资源及多边形点数有关;它可以解决小场景、小并发情况下的需求,但是针对大场景、高并发条件下的则性能远远达不到要求,比如在每秒需要计算1000万次的情况下,现有方案需要数十台服务器才能提供这么大的计算能力。



技术实现要素:

本发明旨在提供一种在定位系统中查询定位点与电子围栏的位置关系的方法,其时间复杂度低,不受电子围栏的数量影响,在围栏数量很大的情况下能够快速得到定位主体与电子围栏的位置关系。

其技术方案是这样的:一种在定位系统中查询定位点与电子围栏的位置关系的方法,其特征在于,包括以下步骤:

步骤s1:在平面地图上建立坐标系,以平面地图的一个角落作为坐标系的原点,以平面地图的横向作为x轴方向,以平面地图的纵向作为y轴方向;

步骤s2:对平面地图进行网格化处理,将平面地图划分为若干正方形网格;

步骤s3:从坐标系原点开始,按先沿x轴再沿y轴的顺序对网格进行顺序编号;

步骤s4:获取电子围栏信息,根据电子围栏信息在平面地图上建立电子围栏;

步骤s5:对电子围栏进行标号;

步骤s6:统计每个电子围栏所包含的网格编号,得到每个网格所属的围栏编号;

步骤s7:通过定位点的坐标,得到定位点对应的网格编号,获取定位点所属的电子围栏编号,得到定位点与电子围栏的位置关系,能够用于在定位系统中显示电子围栏所代表的区域中定位点的数量。

进一步的,步骤s6具体如下执行:获取每个电子围栏的各个顶点坐标;

取其顶点坐标中最小的x轴坐标和最小的y轴坐标组成的组成一个坐标点,然后将该坐标点的横坐标和纵坐标分别向下取网格边长的整数倍,得到坐标点minp(xmin,ymin),坐标点minp的横坐标xmin和纵坐标ymin分别为网格边长的整数倍;

取最大的x轴坐标和最大的y轴坐标组成一个坐标点,然后将该坐标点的横坐标和纵坐标分别向上取网格边长的整数倍,得到坐标点maxp(xmax,ymax),坐标点maxp的横坐标xmax和纵坐标ymax分别为网格边长的整数倍;

以坐标点minp(xmin,ymin)和坐标点maxp(xmax,ymax)作为矩形的一对对角得到一个矩形区域,遍历矩形区域中从坐标点minp(xmin,ymin)到坐标点maxp(xmax,ymax)中所有网格的中心点,并计算网格中心点是否在电子围栏内,若在电子围栏内,则将该网格的编号添加到该电子围栏所包含的网格编号列表中,将电子围栏与网格的关系的数据表现为网格数组,网格数组的每个元素分别代表一个网格所属的围栏编号。

进一步的,步骤s7具体如下执行:获取定位点(x1,y1)的坐标;

根据定位点(x1,y1)的坐标计算出对应的网格编号,分别用定位点的横坐标x1和纵坐标y1除以网格的边长,在分别进行取整运算得到,按如下公式表示:

rx=int(x1/a)

ry=int(y1/a)

其中,a为网格的边长;定位点(x1,y1)对应的网格编号gridnum按如下公式表示:

gridnum=(ry*rowlen)+rx+1

其中,rowlen为每行的网格数;以网格编号gridnum为索引,查询网格数组获取定位点(x1,y1)所属的围栏编号列表。

进一步的,以平面地图的左上角作为坐标系的原点,以平面地图的横向上,从左向右作为x轴方向,平面地图的纵向上,从上往下作为y轴方向。

本发明在计算定位点当前所属区域时,只需要根据定位点的位置计算出对应网格编号然后去预处理的列表中查询即可,本方案的时间复杂度是o(1),与围栏数量没有关系,单台服务器围栏计算频次可以达到10的6次方乘以围栏数量的数量级,远超现有方案;围栏数量越多,本方案性能优势越明显。

附图说明

图1为本发明的实施例中的坐标系的建立后的示意图;

图2为本发明的实施例中平面地图网格化后的示意图;

图3为本发明的实施例中的编号为1的电子围栏的示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

本发明的一种在定位系统中查询定位点与电子围栏的位置关系的方法,包括以下步骤:步骤s1:在平面地图上建立坐标系,以平面地图的一个角落作为坐标系的原点,以平面地图的横向作为x轴方向,以平面地图的纵向作为y轴方向;

步骤s2:对平面地图进行网格化处理,将平面地图划分为若干正方形网格;

步骤s3:从坐标系原点开始,按先沿x轴再沿y轴的顺序对网格进行顺序编号;

步骤s4:获取电子围栏信息,根据电子围栏信息在平面地图上建立电子围栏;

步骤s5:对电子围栏进行标号;

步骤s6:获取每个电子围栏的各个顶点坐标;

取其顶点坐标中最小的x轴坐标和最小的y轴坐标组成的组成一个坐标点,然后将该坐标点的横坐标和纵坐标分别向下取网格边长的整数倍,得到坐标点minp(xmin,ymin),坐标点minp的横坐标xmin和纵坐标ymin分别为网格边长的整数倍;

取最大的x轴坐标和最大的y轴坐标组成一个坐标点,然后将该坐标点的横坐标和纵坐标分别向上取网格边长的整数倍,得到坐标点maxp(xmax,ymax),坐标点maxp的横坐标xmax和纵坐标ymax分别为网格边长的整数倍;

以坐标点minp(xmin,ymin)和坐标点maxp(xmax,ymax)作为矩形的一对对角得到一个矩形区域,遍历矩形区域中从坐标点minp(xmin,ymin)到坐标点maxp(xmax,ymax)中所有网格的中心点,并计算网格中心点是否在电子围栏内,若在电子围栏内,则将该网格的编号添加到该电子围栏所包含的网格编号列表中,将电子围栏与网格的关系的数据表现为网格数组,网格数组的每个元素分别代表一个网格所属的围栏编号。;

步骤s7:获取定位点(x1,y1)的坐标;

根据定位点(x1,y1)的坐标计算出对应的网格编号,分别用定位点的横坐标x1和纵坐标y1除以网格的边长,在分别进行取整运算得到,按如下公式表示:

rx=int(x1/a)

ry=int(y1/a)

其中,a为网格的边长;定位点(x1,y1)对应的网格编号gridnum按如下公式表示:

gridnum=(ry*rowlen)+rx+1

其中,rowlen为每行的网格数;以网格编号gridnum为索引,查询网格数组获取定位点(x1,y1)所属的围栏编号列表,得到定位点与电子围栏的位置关系,能够用于在定位系统中显示电子围栏所代表的区域中定位点的数量。

以下给出一具体实施案例说明本发明的在定位系统中查询定位点与电子围栏的位置关系的方法。

见图1,图1中的区域为长20米,宽16米的区域,对其进行定位,并实时显示每个定位点所在区域信息。

对平面地图建立坐标系,左上角为(0,0)原点,从左向右为x轴,从上往下为y轴;

将平面地图进行网格化处理,并进行编号,如果末尾不足一个网格则补齐一个网格,网格大小为1m*1m,同时记录下每行有20个网格,rowlen记为20;见图2,共有320个网格。

见图3,该区域中有一个编号为1的围栏,编号为1的围栏是一个不规则多边形,获取每其各个顶点坐标,将其顶点坐标中最小的x轴坐标和最小的y轴坐标组成的组成一个坐标点,坐标为(3.8,1.0),然后将该坐标点的横坐标和纵坐标分别向下取网格边长的整数倍,得到坐标点minp,minp的坐标为(3.0,1.0),取最大的x轴坐标和最大的y轴坐标组成一个坐标点,坐标为(11.1,8.7),然后将该坐标点的横坐标和纵坐标分别向上取整网格边长的整数倍,得到坐标点maxp,maxp的坐标为(12.0,9.0),以坐标点minp和坐标点maxp作为矩形的一对对角得到一个矩形区域;

遍历矩形区域中从坐标点minp到坐标点maxp中所有网格的中心点,并计算网格中心点是否在电子围栏内,若在电子围栏内,则将该网格的编号添加到该电子围栏所包含的网格编号列表中,如下图中该编号为1的围栏包含的网格编号为[28,47,48,66,67,68,69,86,87,88,89,105,106,107,108,109,110,125,126,127,128,129,130,146,147,148,149,150,166,167,168,169,170,171,187];将电子围栏与网格的关系的数据表现为网格数组,网格数组的每个元素分别代表一个网格所属的围栏编号;

当定位主体产生了新的定位点(x1,y1)之后,查询其所在的围栏区域,根据定位点(x1,y1)的坐标计算出对应的网格编号,分别用定位点的横坐标x1和纵坐标y1除以网格的边长,在分别进行取整运算得到,按如下公式表示:

rx=int(x1/a)

ry=int(y1/a)

其中,a为网格的边长;定位点(x1,y1)对应的网格编号gridnum按如下公式表示:

gridnum=(ry*rowlen)+rx+1

其中,rowlen为每行的网格数;以网格编号gridnum为索引,查询网格数组获取定位点(x1,y1)所属的围栏编号列表,得到定位点与电子围栏的位置关系,能够用于在定位系统中显示电子围栏所代表的区域中定位点的数量。

本发明在计算定位点当前所属区域时,只需要根据定位点的位置计算出对应网格编号然后去预处理的列表中查询即可,本方案的时间复杂度是o(1),与围栏数量没有关系,单台服务器围栏计算频次可以达到10的6次方乘以围栏数量的数量级,远超现有方案;围栏数量越多,本方案性能优势越明显。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1