一种依据GPS坐标快速查询行政区域的方法与流程

文档序号:14677393发布日期:2018-06-12 21:41阅读:1204来源:国知局
一种依据GPS坐标快速查询行政区域的方法与流程

本发明涉及计算机数据处理,特别涉及到一种依据GPS坐标快速查询行政区域的方法。



背景技术:

在目前的地理数据查询中,大多数采用的是GPS坐标,常用的数字地图有谷歌、百度和高德等。作为数据工程开发地理位置查询工具,一般有如下的查询方式:1.线上方式。通过百度或者谷歌等地图服务平台提供的API服务进行线上调用查询, 这样的服务优势在于精准, 但是受制于网络因素的限制, 在工程服务让无法满足企业线上实时调用的效率要求。2.线下或离线方式。具体的应用范例有Github上的项目Reverse_Geocoder (作者Thampiman)。

在上述应用方式下,数据调用过程时, 它的实际测试速度在单个点20毫秒左右,但是这种方式中的查询速度不能满足公司的线上服务测试速度需求, 此外它的准确率非常差。这是由于该项目基于数据结构KD-Tree (K维树)的特质, 还有其使用的语料库每个行政区划只有一个点, 导致边界区域和城市非核心区域查询准确率非常低。



技术实现要素:

本发明的目的在于克服上述线上线下查询效果的不足,提供一种基于GPS坐标来快速查询行政区划的方法。本发明的快速查询方法在满足具体应用场景的前提下,能够做到迅速查询行政区域,不仅能够做到单个点的快速查询,还能够快速查询多个点乃至整个行政区划。

为了达到上述发明目的,本发明专利提供的技术方案如下:

一种依据GPS坐标快速查询行政区域的方法,其特征在于,该方法包括有如下步骤:

第一步,从开源地图平台中采集行政区划边界的地图数据,该地图数据的源数据为WGS84格式;

第二步,对采集的源数据进行预处理,预处理是在维持原有代表行政区划图形基本不变的前提下,简化描述形状区划点的个数,首先设定一个容忍度的参数k,从一个图形的最远端两个点(假设A和E)入手,计算两个点中间(B-D)的点与AE直线之间的距离,如果该距离小于参数k,那么这个点就删除,如果任意点(假设C点)与AE直线之间的距离大于参数k,则C点保留,然后AC和CE进行连线重复上述分析;直至能用300-2000个点描述一个行政区划;

第三步,对存储数据结构优化;

存储简化后的行政区划边界数据,借用Rtree的数据结构对存储的数据结构进行优化,先在每个行政级别上的各个区域的东北和西南角构造的长方形用Rtree建立索引,加快单个点的查询;对每个行政区划用递归思想进行再切割,从而使描述每个切割后图形的点个数不超过200个,以加快查询速度;

图形切割具体方式为:输入图形(g)--最初为一个行政区划图形,如果g的点数超过200,则在x和y方向取中间点切断,对于切断后两个图形再次进行切割,直到描述单个图形的点数之和小于200;

第四步,对大批量点查询优化;

大规模GPS点查询行政区划信息时,采用聚类的方式进行,将多个靠近的点包成一个图形,查询该图形是否属于某一个行政区划,如果属于,则该图形中的所有点都属于这一个行政区域;

第五步,根据上述方法聚类后的图形进行在每个行政级别进行集中查询,如果该组所组成的多边形横跨多个行政区域,则利用上述聚类方法再次进行切割,切割时需要选用更小的距离参数,优选缩小为原来的一半,直至查询到每个组的行政区划。

在本发明的一种依据GPS坐标快速查询行政区域的方法中,所述第四步中聚类的方式是指,随机挑选一个点为中心点,如果下一个点在之前任意中心点的一个距离参数(k)之内,则为一类,否则该点自为一组的中心点。

基于上述技术方案,本发明的依据GPS坐标快速查询行政区域的方法取得了如下技术效果:

1.采用本发明的快速查询方法,单个GPS坐标点的查询在2-4毫秒左右,大大地提高了查询效率。

2.本发明的方法中,通过递归思想的切割图形的方法,加快了Rtree图形的查询速度,通过打包多个点来节省查询速度,核心为高效的聚类方法和递归查询逻辑,使得多个点优化后的算法进行多个点的查询超过1000个点的情况下, 平均下来每个点耗时在1毫秒左右。

3.本发明的方法可以给氪信X-Behavior的地点特征监控提供了可靠的GPS行政区域查询服务,满足查询精度的前提下,大大提高了查询效率和可靠性。

附图说明

图1是本发明一种依据GPS坐标快速查询行政区域的方法的流程示意图。

图2是本发明一种依据GPS坐标快速查询行政区域的方法实施例中对行政区划切割的示意图。

具体实施方式

下面我们附图和具体的实施例来对本发明一种依据GPS坐标快速查询行政区域的方法做进一步的详细阐述,以求更为清楚地理解其处理流程和实现方式,但不能以此来限制本发明的保护范围。

如图1所示,本发明是一种依据GPS坐标快速查询行政区域的方法,该方法包括有如下步骤:

第一步,从开源地图平台中采集行政区划边界的地图数据,该地图数据的源数据为WGS84格式,该格式是一种由美国国防部定义的卫星定位经纬度计算协议,是为GPS全球定位系统使用而建立的坐标系统。

第二步,对采集的源数据进行预处理,预处理是在维持原有代表行政区划图形基本不变的前提下,简化描述形状区划点的个数,实现该目的的算法为: Douglas-Peucker算法。在通过改动Douglas-Peucker将其应用在首尾相连的图形上后对行政区划的图形做简化,需要先将集合函数(往往一条线)的最远端两点改变成2维图形上距离最远两点,这样做的实际效果往往能在原图形变动小于0.01%的情况下, 仅用300-2000个点就描述一个行政区划。

Douglas-Peucker的解释和在地图数据上的应用: 该算法是一种基于递归思想的描述一个几何函数个数的算法。简要描述:首先设定一个容忍度的参数k,从一个图形的最远端两个点(假设A和E)入手,计算两个点中间(B-D)的点与AE直线之间的距离,如果该距离小于参数k,那么这个点就删除,如果任意点(假设C点)与AE直线之间的距离大于参数k,则C点保留,然后AC和CE进行连线重复上述分析;直至最后能用300-2000个点描述一个行政区划。

第三步,对存储数据结构优化;

存储简化后的行政区划边界数据,借用Rtree的数据结构对存储的数据结构进行优化。先在每个行政级别上的各个区域的东北和西南角构造的长方形用Rtree建立索引,加快单个点的查询;依据Rtree这个数据结构查询点是否在里面的数据结构特点,点个数的线性增长会带来查询时间的几何增长,对每个行政区划用递归思想进行再切割,从而使描述每个切割后图形的点个数不超过200个,以加快查询速度。R-Tree数据结构,是一种动态索引结构,由Antomn Guttman提出,主要用于空间数据的搜索。Rtree是Btree向多维空间发展的另一种形式,它将对象空间按范围划分,每个结点都对应一个区域和一个磁盘页,非叶结点的磁盘页中存储其所有子结点的区域范围,非叶结点的所有子结点的区域都落在它的区域范围之内;叶结点的磁盘页中存储其区域范围之内的所有空间对象的外接矩形。

图形切割的具体方式为:输入图形(g)--最初为一个行政区划图形,如果g的点数超过200,则在x和y方向取中间点切断,对于切断后两个图形再次进行切割,直到描述单个图形的点数之和小于200;

第四步,对大批量点查询优化;

大规模GPS点查询行政区划信息时,采用聚类的方式进行,聚类的方式是随机挑选一个点为中心点,如果下一个点在之前任意中心点的一个距离参数(k)之内,则为一类,否则该点自为一组的中心点。将多个靠近的点包成一个图形,查询该图形是否属于某一个行政区划,如果属于,则该图形中的所有点都属于这一个行政区域。

第五步,根据上述方法聚类后的图形进行在每个行政级别进行集中查询,如果该组所组成的多边形横跨多个行政区域,则利用上述聚类方法再次进行切割,切割时需要选用更小的距离参数,优选缩小为原来的一半,直至查询到每个组的行政区划。

实施例1

为了给氪信的X-Behavior服务提供高效可维护的线下版本的依据GPS坐标查询行政区划的数据工程工具。

1.数据源的预处理:

地图数据来源描述: 采集于开源地图平台(Open Street Mapper)的行政区划边界。源数据格式: 每个行政区划(如江苏省) 对应上万个连接起来可以勾勒行政区划图形的GPS坐标 ,关于GPS 坐标为 WGS84格式, 它是一种由美国国防部定义的卫星定位经纬度计算协议。在实时计算速度需求的背景下, 对采集到的数据源进行了简化处理, 主要目的是, 在维持原有代表行政区划图形基本不变的前提下, 简化点的个数。

实现该目的的算法是 Douglas-Peucker算法。Douglas-Peucker算法的解释和在地图数据上的应用: 该算法是一种基于递归思想的描述一个几何函数个数的算法。简要描述: 首先设定一个容忍度的参数(k). 首先从一个图形的最远端两个点(假设A和E)入手, 计算两个点中间(B-D)的点与AE直线之间的距离, 如果该距离小于参数k, 那么这个点就被删除, 如果任意点(假设C点)与AE直线间距离大于k, 则C点被保留, 然后对AC 和CE进行连线重复上述分析 (把AE替换成AC或者CE)。在通过改动Douglas-Peucker将其应用在首尾相连的图形上,先 将集合函数(往往一条线)的最远端两点改变成二维图形上距离最远两点,然后对行政区划的图形做简化,实际效果往往能在原图形变动小于0.01%的情况下, 仅用300-2000个点就描述一个行政区划。

2.对存储数据结构的优化:

在存储简化后的行政区划边界后借用了Rtree的数据结构。

A.在每个行政级别上的各个区域的东北和西南角构造的长方形用RTree建立索引, 加快单个点的查询。

B. 由于点个数的线性增长会带来查询时间的几何增长,依据Rtree这个数据结构查询点是否在里面的数据结构特点,对每个行政区划用递归的思想进行再切割, 从而使描述每个切割后图形的点个数不超过200个, 从而加快Tree的查询速度。

图形切割具体逻辑: 输入图形(g) --最初为一个行政区划图形,如安徽省, 如果g的点数超过200, 则在x和y(横轴,纵轴)方向上取中间点切断, 对于切断后的两个图形再次进行上述切割直到描述单个图形的点数全部小于200. 比如图2中对安徽省的切割效果可以看到原本安徽省边境越曲折(点越多)的地方, 在满足切到单个图点个数小于200的情况下, 需要切的更小。

3.对于大批量点查询的优化:

大批量点查询属于场景需求, 在大规模GPS点查询行政区划信息的时候,如果逐一查询效率较低,尤其是当点的个数超过1000的时候,逐一查询可能需要20秒左右。所以, 在大规模点查询的时候, 需要重新设计查询策略, 设计了一个精准度不高但是效率较高O(n)的聚类方法,将多个靠近的点包正一个图形, 查询该图形是否属于某一个行政区划, 如果属于, 则该图形中的所有点都属于这一行政区划。

关于上述提到聚类算法的解释: 随机挑选一个点为一个中心点, 如果下一个点在之前任意中心点的一个距离参数(k)之内, 则为一类, 否则该点自为一组的中心点。根据上述方法聚类后的图形进行在每个行政级别的集中查询。如果该组所组成的多边形横跨多个行政区域,则利用上述的聚类方法再次进行切割 ,可使用更小的距离参数k, 一般每次缩小为原来的0.5倍, 直到查到每个组的行政区划。

本实施例终端依据GPS座板快速查询行政区域的方法应用在XBehavior 地理位置集中欺诈服务中, 对每个县\市\省进行实时的金融(贷款)活动检测,在XBehavior采集到每个时段的GPS坐标后, 利用优化后的RGCoder 计算出各时段的每个行政区划下的贷款的总量, 并与历史同时段进行对比, 如某区域计算出的申请活动总量超过常规标准, 对系统作出地点欺诈警报。

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