CN110889049A - 一种位置坐标检索方法、装置、设备及介质 - Google Patents
一种位置坐标检索方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN110889049A CN110889049A CN201911251359.5A CN201911251359A CN110889049A CN 110889049 A CN110889049 A CN 110889049A CN 201911251359 A CN201911251359 A CN 201911251359A CN 110889049 A CN110889049 A CN 110889049A
- Authority
- CN
- China
- Prior art keywords
- position coordinate
- coordinate points
- retrieval
- scanning
- inner ring
- 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.)
- Granted
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/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9537—Spatial or temporal dependent retrieval, e.g. spatiotemporal queries
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Remote Sensing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供的位置坐标检索方法,包括:在第一内环扫描得到A个第一位置坐标点;当A小于最大扫描数量时,在第二内环中根据最大扫描数量扫描得到B个第二位置坐标点,最大扫描数量等于A加B;当A小于目标数量且A加B大于或等于目标数量时,从B个第二位置坐标点中获取C个第二位置坐标点,C小于或等于B,目标数量等于A加C;将A个第一位置坐标点和C个第二位置坐标点加入待返回列表中,待返回列表为展示位置坐标检索结果的列表。通过最大扫描数量对扫描的次数进行限制,从而在完成最大扫描数量后输出位置坐标的检索结果,使得位置坐标的检索效率得到提升。
Description
技术领域
本发明涉及计算机技术领域,更具体地说,涉及一种位置坐标检索方法、装置、设备及介质。
背景技术
随着移动终端和移动互联网的迅速普及,基于地址位置的服务(location basedservices,LBS)的相关应用越来越多,比如团购,共享单车,拼车,附近的人等等。支撑LBS应用的基础技术之一,就是对于地理位置信息的处理。都需要对附近目标单位的位置坐标进行检索和查询,例如查询附近的商店、附近的共享单车或附近的人等等。
LBS应用中所查询的目标单位位置坐标普遍存在着如下两个特点:以共享单车为例:1、在共享单车使用的高峰期和低谷期的每秒查询率(querys per second,qps)相差悬殊,造成了查询量在高峰/低谷时间分布不均匀;2、在上班早高峰,地铁周围摆满了共享单车,而下班时段,地铁周围的共享单车数量非常少,造成了目标单位坐标分布不均匀。
现有技术中,基于上述两个特点,LBS应用在高峰时段检索位置坐标的效率遇到了明显的性能瓶颈,再加上目标单位坐标分布不均匀的特点,容易发生位置坐标检索速度降低的问题。严重影响了用户的使用体验。
发明内容
有鉴于此,为解决上述问题,本发明提供的技术方案如下:
一种位置坐标检索方法,包括:
在第一内环扫描得到A个第一位置坐标点,该第一内环是以检索位置为圆心以第一半径划定的区域;
当该A小于最大扫描数量时,在第二内环中根据该最大扫描数量扫描得到B个第二位置坐标点,该最大扫描数量为获取位置坐标点数量的上限,该最大扫描数量等于A加B,该第二内环是以检索位置为圆心以第二半径划定的区域,该第二半径大于该第一半径;
当该A小于目标数量且A加B大于或等于该目标数量时,从该B个第二位置坐标点中获取C个第二位置坐标点,该C小于或等于该B,该目标数量为需要加入待返回列表的位置坐标点的数量,该目标数量等于A加C,该待返回列表为展示位置坐标检索结果的列表;
将该A个第一位置坐标点和该C个第二位置坐标点加入该待返回列表中。
一种位置坐标检索装置,包括:
第一扫描单元,该第一扫描单元用于在第一内环扫描得到A个第一位置坐标点,该第一内环是以检索位置为圆心以第一半径划定的区域;
第二扫描单元,该第二扫描单元用于当该第一扫描单元扫描的该A小于最大扫描数量时,在第二内环中根据该最大扫描数量扫描得到B个第二位置坐标点,该最大扫描数量等于A加B,该第二内环是以检索位置为圆心以第二半径划定的区域,该第二半径大于该第一半径;
第一获取单元,该第一获取单元用于当该第一扫描单元扫描的该A小于目标数量且A加B大于或等于该目标数量时,从该第二扫描单元扫描的该B个第二位置坐标点中获取C个第二位置坐标点,该C小于或等于该B,该目标数量等于A加C;
输出单元,该输出单元用于将该第一扫描单元扫描的该A个第一位置坐标点和该第一获取单元获取的该C个第二位置坐标点加入待返回列表中,该待返回列表为展示位置坐标检索结果的列表。
可选地,该第一获取单元还用于:
根据该第二位置坐标点的地理位置哈希值GeoHash ID,从该B个第二位置坐标点中获取位置最接近该检索位置的C个第二位置坐标点。
可选地,该装置还包括第一排序单元,该第一排序单元用于:
当该A小于该目标数量且小于最小排序数量时,
分别获取该A个第一位置坐标点到该检索位置的距离并排序,得到第一排序结果;
分别获取该C个第二位置坐标点到该检索位置的距离并排序;
获取该C个第二位置坐标点中距离该检索位置最近的D个第二坐标点,得到第二排序结果,该最小排序数量为按照与该检索位置的距离对位置坐标点进行排序的最小数量,该最小排序数量等于A加D;
将该第一排序结果和该第二排序结果加入该待返回列表。
可选地,该第一排序单元用于:
根据该A个第一位置坐标点的坐标值和该检索位置的坐标值,分别获取该A个第一位置坐标点到该检索位置的距离;
该分别获取该C个第二位置坐标点到该检索位置的距离,包括:
根据该C个第二位置坐标点的坐标值和该检索位置的坐标值,分别获取该C个第二位置坐标点到该检索位置的距离。
可选地,该装置还包括第二排序单元,该第二排序单元用于:
当该A小于该目标数量且该A等于该最小排序数量时,根据该第二位置坐标点的地理位置哈希值GeoHash ID,从该C个第二位置坐标点中获取位置最接近该检索位置的D个第二位置坐标点。
可选地,该第二扫描单元还用于:
根据该第一半径确定该第二半径。
可选地,该装置还包括切分单元,该切分单元用于:
获取第一待扫描区域,该第一待扫描区域为该检索位置所在的区域;
对该第一待扫描区域进行第一次切分,以将该待扫描区域分为M个区域块;
剔除该M个区域块中不与该第一内环相交的N个区域块,得到包括M-N个区域块的第二待扫描区域;
对该第二待扫描区域进行第二次切分,得到O个区域块;
剔除该O个区域块中不与该第一内环相交的P个区域块,得到包括O-P个区域块的第三待扫描区域;
对应地,该第一扫描单元还用于:
在该第三待扫描区域中扫描得到该A个第一位置坐标点。
可选地,该装置还包括存储单元,该存储单元用于:
获取该A个第一位置坐标点的第一坐标点信息;
将该A个第一位置坐标点的第一坐标点信息存储在第一缓存中;
对应地,该第二扫描单元还用于:
获取该第一缓存中记录的条目数;
当该第一缓存中记录的条目数小于该最大扫描数时,在该第二内环中根据该最大扫描数量扫描得到该B个第二位置坐标点。
可选地,该装置还包括判断单元,该判断单元用于:
分别根据该A个第一位置坐标点的坐标值,判断该A个第一位置坐标点是否位于该第一内环中;
剔除不位于该第一内环中的第一位置坐标点。
一种计算机设备所述计算机设备包括:交互装置、输入/输出(I/O)接口、处理器和存储器,该存储器中存储有程序指令;该交互装置用于获取用户输入的操作指令;该处理器用于执行存储器中存储的程序指令,执行如上述任意一项所述的方法。
一种计算机可读存储介质,包括指令,当该指令在计算机设备上运行时,使得该计算机设备执行如上述任意一项所述的方法。
本申请提供的位置坐标检索方法,包括:在第一内环扫描得到A个第一位置坐标点,第一内环是以检索位置为圆心以第一半径划定的区域;当A小于最大扫描数量时,在第二内环中根据最大扫描数量扫描得到B个第二位置坐标点,最大扫描数量等于A加B,第二内环是以检索位置为圆心以第二半径划定的区域,第二半径大于第一半径;当A小于目标数量且A加B大于或等于目标数量时,从B个第二位置坐标点中获取C个第二位置坐标点,C小于或等于B,目标数量等于A加C;将A个第一位置坐标点和C个第二位置坐标点加入待返回列表中,待返回列表为展示位置坐标检索结果的列表。通过最大扫描数量对扫描的次数进行限制,从而在完成最大扫描数量后输出位置坐标的检索结果,使得位置坐标的检索效率得到提升。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为现有技术中LBS应用的qps与时间的关系图;
图2为一种位置坐标点分布情况的示意图;
图3为LBS应用基于geoNear进行位置坐标点查询的示意图;
图4为本申请实施例所提供的位置坐标检索方法的一个实施例的流程图;
图5为本申请实施例所提供的位置坐标检索方法中构建GeoHash ID的一个示意图;
图6为本申请实施例所提供的位置坐标检索方法中构建GeoHash ID的另一个示意图;
图7为本申请实施例所提供的位置坐标检索方法的一种实施方式的示意图;
图8为本申请实施例所提供的位置坐标检索方法的另一个实施例的流程图;
图9为本申请实施例所提供的位置坐标检索方法的另一个实施例的流程图;
图10为本申请实施例所提供的位置坐标检索方法中对待扫描区域进行切分的一个示意图;
图11为本申请实施例所提供的位置坐标检索方法中对待扫描区域进行切分的另一个示意图;
图12为本申请实施例所提供的位置坐标检索方法中对待扫描区域进行切分的另一个示意图;
图13为本申请实施例所提供的位置坐标检索方法的实际使用场景的示意图;
图14为本申请实施例所提供的计算机设备的示意图;
图15为本申请实施例所提供的位置坐标检索装置的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
随着移动终端和移动互联网的迅速普及,基于地址位置的服务(location basedservices,LBS)和相关应用也越来越多,深入到我们日常生活的方方面面,比如团购,共享单车,拼车,附近的人等等。支撑LBS的基础技术之一,就是对于地理位置信息的处理。所有的LBS应用都有一个共同点,即底层数据库中都包含着地理位置信息,如何对这些信息进行查询,处理,分析等操作,也就是支撑LBS应用的基础关键技术之一。LBS应用都需要对附近目标单位的位置坐标进行检索和查询,例如查询附近的商店、附近的共享单车或附近的人等等。
MongoDB是一个面向文档的通用型分布式数据库,属于非关系数据库(NoSQL)。由于其对于LBS良好的支持以及简单易用的特性,使之成为了不少LBS服务的后台存储解决方案。只需要定义好地理空间数据(经度和维度)并将之作为geoJSON对象存入MongoDB,就可以使用非常简单的原生“$geoNear”查询函数来获得附近的点。查询结果默认会由近到远排序,而且查询结果也包含目标点对象,距离目标点的具体等信息,进而提供LBS应用所需要的地址位置信息查询功能。而如果使用传统SQL数据库如mysql的话,需要自行在查询语句中嵌入球面距离的计算公式,导致查询性能低下,而且返回的结果并没有排序。
但是在上述实现过程中,LBS应用中所查询的目标单位位置坐标普遍存在着如下两个特点。
一、时间分布不均匀。
LBS应用中的查询具有明显的高峰期和低谷期,以共享单车为例,如图1所示,图1为共享单车应用使用过程中,每秒查询率(querys per second,qps)与时间的关系,如图1可见,在共享单车使用的高峰期和低谷期的qps相差悬殊,造成了查询量在高峰/低谷时间分布不均匀。
二、坐标分布不均匀。
LBS应用存储的地理位置信息分布不均匀。同样以共享单车为例,坐地铁的上班族,如果留意可能会发现,在上班早高峰时,地铁周围摆满了共享单车,而下班时段,地铁周围的共享单车数量非常少。此外,一切特殊事件也会造成点的分布不均匀,例如节假日期间大量游客用户A公园,造成A公园附近共享单车数量的密集型增长,图2展示了一种可能的点分布情况,由图2可见,大量的点都集中在经纬度(121,31.44)附近,其他地点则非常稀疏。
基于上述两个特点,现有的基于MongoDB 2d索引的geoNear查询在高峰期遇到了明显的性能瓶颈。业务数据显示,当使用geoNear功能来进行“查找附近共享单车”功能的时候,早高峰压力是低谷时段的10-20倍,再加之坐标不均匀的情况比较严重。经常会发生慢查询较多的问题,影响用户体验。
进一步地,通过研究发现原生LBS应用的查询性能瓶颈主要在于扫描了过多的无需要的地理位置信息。geoNear查询本质上是一个环形搜索过程,如果第一内环满足条件的地理位置信息不够,则会将环半径扩大,尝试从第二内环中找到足够的地理位置信息来返回。当第一内环地理位置信息较少,第二内环地理位置信息密集且较多的时候,会导致查询在第二内环做了很多不用的扫描和排序工作。如图3所示,用户希望找到离检索位置301最近的3个地理位置信息的位置坐标点,即目标数量为3,在检索过程中,很快在第一内环302中找到了2个第一位置坐标点作为反馈结果,但是在第二内环303尝试找第三个点的时候,由于第二内环303中有多个第二位置坐标点,需要额外消耗时间和算力对该多个第二位置坐标点进行距离计算和排序,才能找出多个第二位置坐标点中距离检索位置301最近的一个点作为第三个反馈结果,带来性能的降低,使得排序效率低下。
因此,为了解决上述问题,本申请实施例提供一种位置坐标检索方法,可应用于LBS应用,在位置坐标检索过程中提高检索效率,可应用于各种不同场景下的LBS检索,为便于理解,以下结合附图,对本申请实施例所提供的位置坐标检索方法进行详细说明。
请参阅图4,如图4所示,本申请实施例所提供的位置坐标检索方法的实施例一包括以下步骤。
401、在第一内环扫描得到A个第一位置坐标点。
本实施例中,第一内环是以检索位置为圆心以第一半径划定的区域,如图3中所示,以检索位置301为圆心,以第一半径划定的区域,即为第一内环302所在的区域,其中,该第一半径的长度为初始迭代步长,可以由用户根据实际使用需求在检索的过程中设定,也可以是系统预设的定值,对此本申请实施例并不做限定。
402、当A小于最大扫描数量时,在第二内环中根据最大扫描数量扫描得到B个第二位置坐标点。
本实施例中,最大扫描数是用户根据使用需求预设的一个数值,可选地,在基于MongoDB 2d索引的geoNear查询的代码实现过程中,该最大扫描数可以定义为:hintScan。最大扫描数等于A加B,因此当第一内环中只扫描到A个位置坐标点时,进一步向第二内环扫描剩余的B个位置坐标点,其中,第二内环是第一内环的外环,第二内环是以检索位置为圆心以第二半径划定的区域,第二半径大于第一半径。可选地,若在第二内环中扫描到的第二位置坐标点的数量少于B个,则继续向外扩充,扫描第三内环,以此类推,直到扫描到A+B个位置坐标点为止。
403、当A小于目标数量且A加B大于或等于目标数量时,从B个第二位置坐标点中获取C个第二位置坐标点。
本实施例中,C小于或等于B,目标数量等于A加C。目标数量为用户在执行位置坐标检索时,所期望检索到的位置坐标点的数量,当A大于目标数量时,则扫描完第一内环即可完成扫描工作,不需要向第二内环扩张扫描,之后通过排序获取距离检索位置最近的目标数量个位置坐标点即可完成工作。当A小于目标数量时,需要进一步向外扩充扫描,一般而言,最大扫描数量A+B等于目标数量A+C的两倍,此时,需要从B个第二位置坐标点中选出距离检索位置最近的C哥第二位置坐标点,以满足目标数量的需求。
可选地,上述从B个第二位置坐标点中选出距离检索位置最近的C哥第二位置坐标点的具体实现方式,可以是通过第二位置坐标点的地理位置哈希值GeoHash ID获取的,以下对此种工作方式进行详细说明。
请参阅图5,如图5所示,对于一个待扫描的区域,可以进行第一次切分,将其分为四个区域,按照左下-右下-左上-右上的顺序分别记为00、10、01和11四个地理位置哈希值GeoHash ID,从而通过这四个哈希值来标记这四个区域。
然而,由于四个块切分得比较大,无法较为精确地定位待扫描的区域中的点,因此进一步地,还可以对这个四个块进行第二次切分,得到如图6所示的16个区域,该16个区域的GeoHash ID如图6所示,可见,图6中的分块是基于图5中的情况进行进一步切分的,图6中每块的四位数GeoHash ID中,前两位是基于以图5中的切分情况作为前缀的,例如,图5中右上角的块11,在第二次切分后得到图6中的1101、1111、1100和1110四个块,从而可以通过前缀来判断GeoHash ID为1101、1111、1100和1110的四个块都位于图5中的块11中,位置较为接近。进一步地,根据精度的需要,可以对图6所示的区域再进行N次切分,直到到达理想的精度,
横纵坐标的精度m,n和平面分区数量M的关系可以用如下的公式得到:
M=2m*2n
MongoDB使用的2d索引的默认精度为26,也就是说2d索引可以将地球分为2^26*2^26个分区,每一个分区的边长可以估算为2*PI*6371000/(1<<26)=0.57米,这也就是官方宣称2d索引60cm精度的来源。对于一个经纬度坐标[X,Y],MongoDB首先会通过计算得到该坐标在2d平面的分区(grid)编号,该编号是一个52bits(经度26bits+维度26bits)的int64类型,也称作该坐标的geoHashID,它将作为btree的key,实际的数据会按照GeoHashID->RecordID的方式被插入到btree中。
从而,通过GeoHash ID,能够粗略地知晓一个位置坐标点的位置情况,在上述步骤403中,需要根据GeoHash ID从B个第二位置坐标点中获取位置最接近检索位置的C个第二位置坐标点,例如图7所示,B=5,C=3,即需要从5个位置坐标点中选出最接近检索位置的3个位置坐标点,如图7所示,该5个位置坐标点所在的区域被划为16个平面分区,5个坐标点的GeoHash ID如下表所示:
位置坐标点序号 | 位置坐标点的GeoHash ID |
a位置坐标点 | 1101 |
b位置坐标点 | 1100 |
c位置坐标点 | 1110 |
d位置坐标点 | 0001 |
e位置坐标点 | 0101 |
表1
基于表1所记录的GeoHash ID,若检索位置的坐标点的GeoHash ID为1111,则仅仅通过GeoHash ID的前缀即可知晓,a位置坐标点、b位置坐标点以及c位置坐标点为5个位置坐标点中距离检索位置最近的3个位置坐标点。从而不需要通过经纬度坐标进行全球定位的方式,仅仅通过GeoHash ID即可快速地从从B个第二位置坐标点中获取距离检索位置最近的C个第二位置坐标点,减少了系统的算力,显著提高了检索的效率。
404、将A个第一位置坐标点和C个第二位置坐标点加入待返回列表中。
本实施例中,待返回列表为展示位置坐标检索结果的列表,待返回列表发送给用户后成为返回列表,用户通过该返回列表即可查看本次位置坐标检索的结果,例如用户通过设定目标数量来设定:期望得到距离自己最近的A+C个餐馆的位置坐标点,通过上述方法后,返回列表中显示了A+C个距离用户最近的餐馆的位置坐标点。
本实施例所提供的位置坐标检索方法,包括:在第一内环扫描得到A个第一位置坐标点,第一内环是以检索位置为圆心以第一半径划定的区域;当A小于最大扫描数量时,在第二内环中根据最大扫描数量扫描得到B个第二位置坐标点,最大扫描数量等于A加B,第二内环是以检索位置为圆心以第二半径划定的区域,第二半径大于第一半径;当A小于目标数量且A加B大于或等于目标数量时,从B个第二位置坐标点中获取C个第二位置坐标点,C小于或等于B,目标数量等于A加C;将A个第一位置坐标点和C个第二位置坐标点加入待返回列表中,待返回列表为展示位置坐标检索结果的列表。通过设定最大扫描数来限定位置坐标检索坐标点数的上限,从而避免了因扫描区域内有过多位置坐标点导致大量的距离计算和排序,造成性能降低的问题,提高了位置坐标检索的效率。
需要说明的是,在位置坐标检索的过程中,用户除了需要知道距离自己最近的目标数量个位置坐标点外,还需要知道这些位置坐标点距离自己的远近排序,判断位置坐标点距离检索位置距离的方式有两种,一、哈希值计算,即通过上述步骤403中所介绍的GeoHash ID的方式获取距离;二、坐标值计算,即通过全球定位系统所提供的经纬度坐标来进行计算。其中,坐标值的计算方式最为精确,但是对算力消耗较大,效率较低;哈希值计算能够快速获取距离结果,但精确度相对坐标值计算有所降低。因此,在对位置坐标点进行排序时,精度和速度,成为了相互矛盾的两个点,为了调和这个问题,使得检索的精度和速度都位于理想的范围内,本申请实施例所提供的位置坐标检索方法进一步引入了最小排序数量这个参数来均衡精度和速度之间的关系,为便于理解,以下结合说明书附图,对此种实施例进行详细说明。
请参阅图8,如图8所示,本申请实施例所提供的位置坐标检索方法的实施例二包括以下步骤。
801、在第一内环扫描得到A个第一位置坐标点。
本实施例中,本步骤可参阅上述步骤401,此处不再赘述。
802、当A小于目标数量且小于最小排序数量时,分别获取A个第一位置坐标点到检索位置的距离并排序。
本实施例中,最小排序数量为按照与检索位置的距离对位置坐标点进行排序的最小数量,即在所得到的位置坐标点中,需要进行根据距离进行精确排序的位置坐标点的数量。可选地,在基于MongoDB 2d索引的geoNear查询的代码实现过程中,该最小排序数量可以定义为:hintCorrentNum。
需要说明的是,上述分别获取A个第一位置坐标点到检索位置的距离的具体实现方式为,获取检索位置的坐标值,以及A个第一位置坐标点各自的坐标值,该坐标值指的是全球定位系统所提供的经纬度坐标值,包括一个经度x和一个纬度y组成的(x,y)坐标值,通过A个第一位置坐标点各自的坐标值和检索位置坐标值,计算各个第一位置坐标点到检索位置的距离。最后按照距离的远近对A个第一位置坐标点进行排序。
803、当A小于最大扫描数量时,在第二内环中根据最大扫描数量扫描得到B个第二位置坐标点。
本实施例中,本步骤可参阅上述步骤402,此处不再赘述。
804、当A小于目标数量且A加B大于或等于目标数量时,从B个第二位置坐标点中获取C个第二位置坐标点。
本实施例中,本步骤可参阅上述步骤403,此处不再赘述。
805、当A小于最小排序数量时,获取C个第二位置坐标点中距离检索位置最近的D个第二坐标点。
本实施例中,最小排序数量等于A+D,当A小于最小排序数量时,说明还需要对第二内环中扫描得到的坐标进行排序,此时,经过上述步骤804,已经通过哈希值比对的方式得到了B个第二位置坐标点中,距离检索位置最近的C个第二位置坐标点,此时,分别获取该C个第二位置坐标点的坐标值,该坐标值指的是全球定位系统所提供的经纬度坐标值,包括一个经度x和一个纬度y组成的(x,y)坐标值,通过C个第二位置坐标点各自的坐标值和检索位置坐标值,分别计算C个第二位置坐标点到检索位置的距离,最后按照距离的远近对C个第二位置坐标点进行排序。按照排序的结果,得出C个第二位置坐标点中距离检索位置最近的D个第二坐标点,从而按照最小排序数量的要求,得到了A+D个位置坐标点的排序。
806、将A个第一位置坐标点和C个第二位置坐标点加入待返回列表中。
本实施例中,本步骤可参阅上述步骤404,此处不再赘述。
807、将第一位置坐标点的第一排序结果和第二位置坐标点的第二排序结果加入待返回列表。
本实施例中,第一排序结果为第一内环中扫描到的第一位置坐标点的排序结果,第二排序结果为,第二内环中按照最大扫描数量完成扫描获取到第二位置坐标点后,对第二位置坐标点进行排序得到的结果,第一排序结果中所包括的第一位置坐标点的数量加上第二排序结果中第二位置坐标点的数量等于预设的最小排序数量,从而使得用户在得到目标数量的位置坐标点后,还获取到这些位置坐标点的距离排序。
上述实施例中,在通过最大扫描数量控制扫描位置坐标点数量的基础上,本申请实施例所提供的位置坐标检索方法进一步提供最小排序数量。其中,最大扫描数量通过限制扫描次数提升了检索速度,最小排序数量通过限制排序的位置坐标点数量保证了需要排序的最低要求,又避免了过多不必要的排序计算,从而通过最大扫描数量和最小排序数量两组参数的配合使用,在可控地牺牲了一定检索精度的情况下,提升了检索的速度,实现了检索精度和速度的均衡。
需要说明的是,本申请实施例所提供的位置坐标检索方法在实际工作过程中,可以通过一种更细化的工作方式实现,为便于理解,以下结合附图对该种具体实施方式进行详细说明。
请参阅图9,如图9所示,本申请实施例所提供的位置坐标检索方法的实施例三包括以下步骤。
901、判断当前扫描是否为第一轮扫描。
本实施例中,LBS应用的MongoDB所提供的GeoNear查询可以理解为一个从起始点开始的不断向外扩张的环形搜索过程,分为多轮扫描,按照由内到外的顺序逐轮扫描,每一轮扫描一个内环。若为第一轮扫描,则执行步骤902,若不为第一轮扫描,则执行步骤903。
902、计算初始迭代步长。
本实施例中,初始迭代步长即为前述的第一半径,基于该初始迭代步长,以检索位置为圆心划出的区域即为第一内环所在的区域,该初始迭代步长可以是通过用户设置,也可以是通过系统预设。
903、根据上一轮扫描的半径和步长获取本轮步长。
本实施例中,假设当前为第二轮扫描,则第二轮扫描的第二半径需要基于第一轮扫描中的第一半径来决定,若扫描过程中,第一内环扫描到的位置坐标点数量过少,那么第二内环的半径就会成倍增长,从而增大扫描的区域范围,提高坐标点扫描的效率。
例如,第一内环的第一半径为r1时,扫描到的第一位置坐标点数A等于1/2最大扫描数,这个扫描数量是可以接受的,因此,第二内环的第二半径r2=2r1,即第二内环构成与第一内环等宽的外环,从而按照原有的迭代幅度在第二内环中继续扫描第二位置坐标点。相反,若第一内环的第一半径为r1时,扫描到的第一位置坐标点数A等于零,则说明附近的位置坐标点数量较少,此时,第二内环的第二半径r2=4r1,即第二内环作为第一内环的外环,其宽度是第一内环的两倍,以提升扫描到第二位置坐标点的概率。
904、对本轮扫描内环区域进行切分,得到待扫描区域。
本实施例中,经过上述步骤902或903,已经确定了本轮需要扫描的范围,在具体扫描过程中,若之间获取当前内环中各个位置坐标点的坐标值进行计算,对算力资源将会构成巨大消耗,因此,本申请实施例采取一种自上向下、不断逼近的策略,来获取本轮需要扫描的圆环区域。
具体包括以下步骤。
1、获取第一待扫描区域,第一待扫描区域为检索位置所在的区域。
本实施例中,请参阅图10,图10中包括内环在内的整个区域1001即为第一待扫描区域,该内环1002的圆心即为检索位置。
2、对第一待扫描区域进行第一次切分,以将待扫描区域分为M个区域块。
本实施例中,例如,如图11所示,第一次切分将待扫描区域切分为16个区域块。
3、剔除M个区域块中不与第一内环相交的N个区域块,得到包括M-N个区域块的第二待扫描区域。
本实施例中,如图11所示的待扫描区域中,阴影部分的4个区域块是不与内环1101相交的区域块,因此剔除该4个区域块后,得到的剩余16-4=12个区域块为包含内环1101的区域块。
4、对第二待扫描区域块进行第二次切分,得到O个区域块。
本实施例中,如图12所示,将图11的16个区域块中每个区域块一分为四,得到图12所示的64个区域块。
5、剔除O个区域块中不与第一内环相交的P个区域块,得到包括O-P个区域块的第三待扫描区域。
本实施例中,如图12所示,阴影部分的37个区域块是不与内环1201相交的区域块,因此剔除该37个区域块后,得到的剩余64-37=27个区域块为包含内环1201的区域块。
本实施例中,对于待扫描区域,切分的数量越多,精度越高。MongoDB定义了一个阈值来限制与内环相交区域块的个数。相交区域块的个数越少,则搜索性能越好,但精度较低(相交区域块的面积很大,这些区域块的部分节点并不严格处于环形区域内部);相交区域块的个数越多,则精度越高,相应的搜索性能会有所下降,用户可根据实际使用需求来设定切分的次数,以控制精度。
905、在第三待扫描区域中扫描得到第一个位置坐标点a。
本实施例中,对于上述步骤904中切分得到的第三待扫描区域,逐一进行扫描,以得到位置坐标点。
906、获取位置坐标点a的坐标信息。
本实施例中,可选地,获取坐标点a的坐标信息的方式具体为,根据坐标点a的GeoHash ID,从geoHash的2d索引中获取该坐标点a的经纬度坐标值,其中,该geoHash的2d索引记录了各个坐标点的GeoHash ID与经纬度坐标值的对应关系。
907、将坐标点a的坐标信息存储在第一缓存中。
本实施例中,该第一缓存用于存储已扫描过的所有点的坐标点信息,包括第一内环中的坐标点、第二内环以及可能扫描过的更多内环中的坐标点。
908、判断位置坐标点a是否在内环中。
本实施例中,从缓存的第一缓存中获取到位置坐标点a的坐标信息,由于第三待扫描区域是一个切分后得到的扫描区域,由于切分精度的问题,无法保证第三待扫描区域与当前扫描的内环完全重合,因此,需要根据位置坐标点a的坐标值,通过经纬度坐标值精确地计算该位置坐标点a是否位于当前扫描的内环中,若位置坐标点a不位于内环中,需要剔除该位置坐标点a。
若经过上述步骤908确定当前位置坐标点a位于内环内,则执行后续步骤。
909、获取第一缓存中记录的条目数。
本实施例中,通过读取第一缓存中所记录的条目数,即可知道当前已经扫描到的位置坐标点的数量。
910、判断第一缓存中记录的条目数是否大于最大扫描数量。
本实施例中,通过第一缓存中记录的条目数,判断当前已经扫描到的点数是否满足最大扫描数量所限定的扫描次数。
需要说明的是,对于第一缓存中所记录的位置坐标点,还需要根据最小排序数量的要求,对第一缓存中所存储的位置坐标点进行排序,具体排序过程可参阅上述步骤802至805,此处不再赘述,对于已排序的位置坐标点,存储在第二缓存中,该第二缓存中的点是按照最小排序数量的要求,对第一缓存中所存储的点进行排序后得到的。
911、判断第二缓存中记录的条目数是否大于最小排序数量。
本实施例中,第二缓存中所记录的条目数即为当前已经实现排序的点,从而可以通过读取第二缓存中的条目数来了解当前已排序位置坐标点的情况。
可选地,前述待返回列表,即为第二缓存中的一个缓存列表。
912、判断待返回列表中记录的条目数是否满足目标数量。
本实施例中,若不满足目标数量,则重新执行上述步骤901,以执行下一轮的扫描,直到满足目标数量的位置坐标点时,结束步骤。
上述实施例一至实施例三对本申请所提供的位置坐标检索方法进行了详细的说明,为便于理解,作为一种举例,说明其在实际工作中的具体例子。
请参阅图13,以共享单车的搜索为例,基于图13所示的情况,用户位于检索位置1301,需要搜索到距离自己最近的5台共享单车的位置坐标点,根据最大扫描数量和最小排序数量的不同,本申请实施例所提供的位置坐标检索方法包括但不限于以下2种不同的工作情况。
一、情况1。
当第一位置坐标点的数量A小于目标数量且A等于最小排序数量时,根据第二位置坐标点的地理位置哈希值GeoHash ID,从C个第二位置坐标点中获取位置最接近检索位置的D个第二位置坐标点。
例如,本实施例中,目标数量=5,最大扫描数量=10,最小排序数量=2。
1、在执行第一轮扫描时,在第一内环1302中扫描到a和b两个位置坐标点。此时,根据a和b的经纬度坐标计算a、b两点到检索位置的距离,从而对a、b两点的距离进行排序,此时最小排序数量2已得到满足。但最大扫描数量尚未满足,因此需要继续下一轮的扫描。
2、执行第二轮扫描时,根据最大扫描数量的限制,在第二内环1303中扫描到8个位置坐标点后即停止扫描。根据该8个位置坐标点的地理位置哈希值GeoHash ID,选出最接近检索位置的3个位置坐标点c、d和e,具体通过GeoHash ID判断距离的方式可参考上述记载,此处不再赘述。由于最小排序数量已经得到满足,此处不需要对c、d和e进一步进行精确的排序。
3、将a、b、c、d和e五个位置坐标点加入待返回列表中,从而完成位置坐标的检索。
上述情况中,最小排序数量为2,则其中的a和b两个坐标点距离检索位置的距离,是根据全球定位系统所提供的经纬度坐标进行计算后得到的精确数值。剩余3个点通过GeoHash ID获取,并不进行精确排序。从而提高了检索的速度,同时精确度也在预设的范围内。
二、情况2。
当A小于目标数量且小于最小排序数量时,分别获取A个第一位置坐标点到检索位置的距离并排序,得到第一排序结果;分别获取C个第二位置坐标点到检索位置的距离并排序;获取C个第二位置坐标点中距离检索位置最近的D个第二坐标点,得到第二排序结果。将第一排序结果和第二排序结果加入待返回列表。
例如,本实施例中,目标数量=5,最大扫描数量=10,最小排序数量=3。
1、在执行第一轮扫描时,在第一内环1302中扫描到a和b两个位置坐标点。此时,根据a和b的经纬度坐标分别计算a、b两点到检索位置的距离,从而对a、b两点的距离进行排序,此时,对2个点实现了精确排序,距离最小排序数量3还差一个点才能得到满足。同时最大扫描数量尚未满足,因此需要继续下一轮的扫描。
2、执行第二轮扫描时,根据最大扫描数量的限制,在第二内环1303中扫描到8个位置坐标点后即停止扫描。根据该8个位置坐标点的地理位置哈希值GeoHash ID,选出最接近检索位置的3个位置坐标点c、d和e。具体通过GeoHash ID判断距离的方式可参考上述记载,此处不再赘述。
3、根据c、d和e的经纬度坐标分别计算c、d和e三点到检索位置的距离,从而对c、d和e三点的距离进行排序。排序结果中,c点为距离检索位置最近的点,从而满足了最小排序数量=3时,距离检索位置最近的三个位置坐标点的精确排序为:a、b和c。
4、将a、b、c、d和e五个位置坐标点加入待返回列表中,从而完成位置坐标的检索。
在上述步骤中,可见,在其他条件都与情况1相同的情况下,由于最小排序数量发生了改变,从而多出了情况2中的步骤3。最小排序数量增加1,导致需要对第二内环中的所扫描到的点进行排序,以满足最小排序数量的要求,相应地由于需要对额外的三个点进行精确的经纬度计算排序,效率有所降低,但检索结果的精度有所上升。
由上述情况1和情况2可见,在第二轮扫描的第二内环中所扫描的8个点,并不一定是第二内环中距离检索位置最近的8个点,而是由于最大扫描数量的限制,在扫描到8个点后即停止扫描,虽然牺牲了一些精确度,但是大幅提升了扫描的速度,后续步骤中通过GeoHash ID的比较和最小排序数量的限定,得出8个点的距离顺序,又提升了一部分精确度。
综上,本申请实施例所提供的位置坐标检索方法,在牺牲一部分精确度的情况下大幅提升了位置坐标检索的速度,同时又将精确度的牺牲限制在可控的范围内,并可以根据实际使用需求进行调节。
上述对本申请实施例提供的方案进行了介绍。可以理解的是,计算机设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
从硬件结构上来描述,上述方法可以由一个实体设备实现,也可以由多个实体设备共同实现,还可以是一个实体设备内的一个逻辑功能模块,本申请实施例对此不作具体限定。
例如,上述方法均可以通过图14中的计算机设备来实现。图14为本申请实施例提供的计算机设备的硬件结构示意图。该计算机设备包括至少一个处理器1401,通信线路1402,存储器1403以及至少一个通信接口1404。
处理器1401可以是一个通用中央处理器(central processing unit,CPU),微处理器,特定应用集成电路(application-specific integrated circuit,服务器IC),或一个或多个用于控制本申请方案程序执行的集成电路。
通信线路1402可包括一通路,在上述组件之间传送信息。
通信接口1404,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线接入网(radio access network,RAN),无线局域网(wireless local areanetworks,WLAN)等。
存储器1403可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyer服务器able programmable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过通信线路1402与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器1403用于存储执行本申请方案的计算机执行指令,并由处理器1401来控制执行。处理器1401用于执行存储器1403中存储的计算机执行指令,从而实现本申请上述实施例提供的方法。
可选的,本申请实施例中的计算机执行指令也可以称之为应用程序代码,本申请实施例对此不作具体限定。
在具体实现中,作为一种实施例,处理器1401可以包括一个或多个CPU,例如图14中的CPU0和CPU1。
在具体实现中,作为一种实施例,计算机设备可以包括多个处理器,例如图14中的处理器1401和处理器1407。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,计算机设备还可以包括输出设备1405和输入设备1406。输出设备1405和处理器1401通信,可以以多种方式来显示信息。例如,输出设备1405可以是液晶显示器(liquid crystal display,LCD),发光二级管(light emittingdiode,LED)显示设备,阴极射线管(cathode ray tube,CRT)显示设备,或投影仪(projector)等。输入设备1406和处理器1401通信,可以以多种方式接收用户的输入。例如,输入设备1406可以是鼠标、键盘、触摸屏设备或传感设备等。
上述的计算机设备可以是一个通用设备或者是一个专用设备。在具体实现中,计算机设备可以是台式机、便携式电脑、网络服务器、掌上电脑(personal digitalassistant,PDA)、移动手机、平板电脑、无线终端设备、嵌入式设备或有图14中类似结构的设备。本申请实施例不限定计算机设备的类型。
本申请实施例可以根据上述方法示例对存储设备进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
比如,以采用集成的方式划分各个功能单元的情况下,图15示出了一种位置坐标检索装置的示意图。
如图15所示,本申请实施例提供的位置坐标检索装置,包括:
第一扫描单元1501,该第一扫描单元1501用于在第一内环扫描得到A个第一位置坐标点,该第一内环是以检索位置为圆心以第一半径划定的区域;
第二扫描单元1502,该第二扫描单元1502用于当该第一扫描单元1501扫描的该A小于最大扫描数量时,在第二内环中根据该最大扫描数量扫描得到B个第二位置坐标点,该最大扫描数量等于A加B,该第二内环是以检索位置为圆心以第二半径划定的区域,该第二半径大于该第一半径;
第一获取单元1503,该第一获取单元1503用于当该第一扫描单元1501扫描的该A小于目标数量且A加B大于或等于该目标数量时,从该第二扫描单元1502扫描的该B个第二位置坐标点中获取C个第二位置坐标点,该C小于或等于该B,该目标数量等于A加C;
输出单元1504,该输出单元1504用于将该第一扫描单元1501扫描的该A个第一位置坐标点和该第一获取单元1503获取的该C个第二位置坐标点加入待返回列表中,该待返回列表为展示位置坐标检索结果的列表。
可选地,该第一获取单元1503还用于:
根据该第二位置坐标点的地理位置哈希值GeoHash ID,从该B个第二位置坐标点中获取位置最接近该检索位置的C个第二位置坐标点。
可选地,该装置还包括第一排序单元1505,该第一排序单元1505用于:
当该A小于该目标数量且小于最小排序数量时,
分别获取该A个第一位置坐标点到该检索位置的距离并排序,得到第一排序结果;
分别获取该C个第二位置坐标点到该检索位置的距离并排序;
获取该C个第二位置坐标点中距离该检索位置最近的D个第二坐标点,得到第二排序结果,该最小排序数量为按照与该检索位置的距离对位置坐标点进行排序的最小数量,该最小排序数量等于A加D;
将该第一排序结果和该第二排序结果加入该待返回列表。
可选地,该第一排序单元1505用于:
根据该A个第一位置坐标点的坐标值和该检索位置的坐标值,分别获取该A个第一位置坐标点到该检索位置的距离;
该分别获取该C个第二位置坐标点到该检索位置的距离,包括:
根据该C个第二位置坐标点的坐标值和该检索位置的坐标值,分别获取该C个第二位置坐标点到该检索位置的距离。
可选地,该装置还包括第二排序单元1506,该第二排序单元1506用于:
当该A小于该目标数量且该A等于该最小排序数量时,根据该第二位置坐标点的地理位置哈希值GeoHash ID,从该C个第二位置坐标点中获取位置最接近该检索位置的D个第二位置坐标点。
可选地,该第二扫描单元1502还用于:
根据该第一半径确定该第二半径。
可选地,该装置还包括切分单元1507,该切分单元1507用于:
获取第一待扫描区域,该第一待扫描区域为该检索位置所在的区域;
对该第一待扫描区域进行第一次切分,以将该待扫描区域分为M个区域块;
剔除该M个区域块中不与该第一内环相交的N个区域块,得到包括M-N个区域块的第二待扫描区域;
对该第二待扫描区域进行第二次切分,得到O个区域块;
剔除该O个区域块中不与该第一内环相交的P个区域块,得到包括O-P个区域块的第三待扫描区域;
对应地,该第一扫描单元1501还用于:
在该第三待扫描区域中扫描得到该A个第一位置坐标点。
可选地,该装置还包括存储单元1508,该存储单元1508用于:
获取该A个第一位置坐标点的第一坐标点信息;
将该A个第一位置坐标点的第一坐标点信息存储在第一缓存中;
对应地,该第二扫描单元1502还用于:
获取该第一缓存中记录的条目数;
当该第一缓存中记录的条目数小于该最大扫描数时,在该第二内环中根据该最大扫描数量扫描得到该B个第二位置坐标点
可选地,该装置还包括判断单元1509,该判断单元1509用于:
分别根据该A个第一位置坐标点的坐标值,判断所述A个第一位置坐标点是否位于所述第一内环中;
剔除不位于所述第一内环中的第一位置坐标点。
进一步的,本发明实施例还提供一种计算机存储介质,包括指令,当该指令在计算机设备上运行时,使得该计算机设备执行上述方法。
有关本申请实施例提供的计算机存储介质中存储的程序的详细描述可参照上述实施例,在此不做赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的核心思想或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (15)
1.一种位置坐标检索方法,其特征在于,包括:
在第一内环扫描得到A个第一位置坐标点,所述第一内环是以检索位置为圆心以第一半径划定的区域;
当所述A小于最大扫描数量时,在第二内环中根据所述最大扫描数量扫描得到B个第二位置坐标点,所述最大扫描数量为获取位置坐标点数量的上限,所述最大扫描数量等于A加B,所述第二内环是以检索位置为圆心以第二半径划定的区域,所述第二半径大于所述第一半径;
当所述A小于目标数量且A加B大于或等于所述目标数量时,从所述B个第二位置坐标点中获取C个第二位置坐标点,所述C小于或等于所述B,所述目标数量为需要加入待返回列表的位置坐标点的数量,所述目标数量等于A加C,所述待返回列表为展示位置坐标检索结果的列表;
将所述A个第一位置坐标点和所述C个第二位置坐标点加入所述待返回列表中。
2.根据权利要求1所述的方法,其特征在于,所述当A小于目标数量且A加B大于或等于所述目标数量时,从所述B个第二位置坐标点中获取C个第二位置坐标点,包括:
根据所述第二位置坐标点的地理位置哈希值GeoHashID,从所述B个第二位置坐标点中获取位置最接近所述检索位置的C个第二位置坐标点。
3.根据权利要求1所述的方法,其特征在于,所述在第一内环扫描得到A个第一位置坐标点之后,还包括:
当所述A小于所述目标数量且小于最小排序数量时,
分别获取所述A个第一位置坐标点到所述检索位置的距离并排序,得到第一排序结果;
分别获取所述C个第二位置坐标点到所述检索位置的距离并排序;
获取所述C个第二位置坐标点中距离所述检索位置最近的D个第二坐标点,得到第二排序结果,所述最小排序数量为按照与所述检索位置的距离对位置坐标点进行排序的最小数量,所述最小排序数量等于A加D;
将所述第一排序结果和所述第二排序结果加入所述待返回列表。
4.根据权利要求3所述的方法,其特征在于,所述当A小于最小排序数量时,分别获取所述A个第一位置坐标点到所述检索位置的距离,包括:
根据所述A个第一位置坐标点的坐标值和所述检索位置的坐标值,分别获取所述A个第一位置坐标点到所述检索位置的距离;
所述分别获取所述C个第二位置坐标点到所述检索位置的距离,包括:
根据所述C个第二位置坐标点的坐标值和所述检索位置的坐标值,分别获取所述C个第二位置坐标点到所述检索位置的距离。
5.根据权利要求3所述的方法,其特征在于,所述在第一内环扫描得到A个第一位置坐标点之后:
当所述A小于所述目标数量且所述A等于所述最小排序数量时,根据所述第二位置坐标点的地理位置哈希值GeoHashID,从所述C个第二位置坐标点中获取位置最接近所述检索位置的D个第二位置坐标点。
6.根据权利要求1所述的方法,其特征在于,所述当所述A小于最大扫描数量时,在第二内环中根据最大扫描数量扫描得到B个第二位置坐标点,包括:
根据所述第一半径确定所述第二半径。
7.根据权利要求1所述的方法,其特征在于,所述在第一内环中扫描得到A个第一位置坐标点之前,还包括:
获取第一待扫描区域,所述第一待扫描区域为所述检索位置所在的区域;
对所述第一待扫描区域进行第一次切分,以将所述待扫描区域分为M个区域块;
剔除所述M个区域块中不与所述第一内环相交的N个区域块,得到包括M-N个区域块的第二待扫描区域;
对所述第二待扫描区域进行第二次切分,得到O个区域块;
剔除所述O个区域块中不与所述第一内环相交的P个区域块,得到包括O-P个区域块的第三待扫描区域;
所述在第一内环中扫描得到A个第一位置坐标点,包括:
在所述第三待扫描区域中扫描得到所述A个第一位置坐标点。
8.根据权利要求1所述的方法,其特征在于,所述在第一内环中扫描得到A个第一位置坐标点之后,还包括:
获取所述A个第一位置坐标点的第一坐标点信息;
将所述A个第一位置坐标点的第一坐标点信息存储在第一缓存中;
所述当所述A小于最大扫描数量时,在第二内环中根据最大扫描数量扫描得到B个第二位置坐标点,包括:
获取所述第一缓存中记录的条目数;
当所述第一缓存中记录的条目数小于所述最大扫描数时,在所述第二内环中根据所述最大扫描数量扫描得到所述B个第二位置坐标点。
9.根据权利要求1所述的方法,其特征在于,所述在第一内环中扫描得到A个第一位置坐标点之后,还包括:
分别根据所述A个第一位置坐标点的坐标值,判断所述A个第一位置坐标点是否位于所述第一内环中;
剔除不位于所述第一内环中的第一位置坐标点。
10.一种位置坐标检索装置,其特征在于,包括:
第一扫描单元,所述第一扫描单元用于在第一内环扫描得到A个第一位置坐标点,所述第一内环是以检索位置为圆心以第一半径划定的区域;
第二扫描单元,所述第二扫描单元用于当所述第一扫描单元扫描的所述A小于最大扫描数量时,在第二内环中根据所述最大扫描数量扫描得到B个第二位置坐标点,所述最大扫描数量等于A加B,所述第二内环是以检索位置为圆心以第二半径划定的区域,所述第二半径大于所述第一半径;
第一获取单元,所述第一获取单元用于当所述第一扫描单元扫描的所述A小于目标数量且A加B大于或等于所述目标数量时,从所述第二扫描单元扫描的所述B个第二位置坐标点中获取C个第二位置坐标点,所述C小于或等于所述B,所述目标数量等于A加C;
输出单元,所述输出单元用于将所述第一扫描单元扫描的所述A个第一位置坐标点和所述第一获取单元获取的所述C个第二位置坐标点加入待返回列表中,所述待返回列表为展示位置坐标检索结果的列表。
11.根据权利要求10所述的装置,其特征在于,所述第一获取单元还用于:
根据所述第二位置坐标点的地理位置哈希值GeoHashID,从所述B个第二位置坐标点中获取位置最接近所述检索位置的C个第二位置坐标点。
12.根据权利要求10所述的装置,其特征在于,所述装置还包括第一排序单元,所述第一排序单元用于:
当所述A小于所述目标数量且小于最小排序数量时,
分别获取所述A个第一位置坐标点到所述检索位置的距离并排序,得到第一排序结果;
分别获取所述C个第二位置坐标点到所述检索位置的距离并排序;
获取所述C个第二位置坐标点中距离所述检索位置最近的D个第二坐标点,得到第二排序结果,所述最小排序数量为按照与所述检索位置的距离对位置坐标点进行排序的最小数量,所述最小排序数量等于A加D;
将所述第一排序结果和所述第二排序结果加入所述待返回列表。
13.根据权利要求12所述的装置,其特征在于,所述第一排序单元用于:
根据所述A个第一位置坐标点的坐标值和所述检索位置的坐标值,分别获取所述A个第一位置坐标点到所述检索位置的距离;
所述分别获取所述C个第二位置坐标点到所述检索位置的距离,包括:
根据所述C个第二位置坐标点的坐标值和所述检索位置的坐标值,分别获取所述C个第二位置坐标点到所述检索位置的距离。
14.一种计算机设备,其特征在于,所述计算机设备包括:交互装置、输入/输出(I/O)接口、处理器和存储器,所述存储器中存储有程序指令;
所述交互装置用于获取用户输入的操作指令;
所述处理器用于执行存储器中存储的程序指令,执行如权利要求1-9中任意一项所述的方法。
15.一种计算机可读存储介质,包括指令,其特征在于,当所述指令在计算机设备上运行时,使得所述计算机设备执行如权利要求1-9中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911251359.5A CN110889049B (zh) | 2019-12-09 | 2019-12-09 | 一种位置坐标检索方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911251359.5A CN110889049B (zh) | 2019-12-09 | 2019-12-09 | 一种位置坐标检索方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110889049A true CN110889049A (zh) | 2020-03-17 |
CN110889049B CN110889049B (zh) | 2023-03-24 |
Family
ID=69751127
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911251359.5A Active CN110889049B (zh) | 2019-12-09 | 2019-12-09 | 一种位置坐标检索方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110889049B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101005482A (zh) * | 2006-01-16 | 2007-07-25 | 朱苏学 | 一种网络服务定位方法和系统 |
CN103488679A (zh) * | 2013-08-14 | 2014-01-01 | 大连大学 | 移动云计算环境下基于倒排网格索引的拼车系统 |
CN103596133A (zh) * | 2013-11-27 | 2014-02-19 | 哈尔滨工业大学深圳研究生院 | 连续查询的位置匿名方法及装置、隐私保护系统 |
CN106354825A (zh) * | 2016-08-31 | 2017-01-25 | 重庆秒银科技有限公司 | 基于区块定位的附近地点查询服务处理方法 |
CN106407213A (zh) * | 2015-07-31 | 2017-02-15 | 阿里巴巴集团控股有限公司 | 基于地理位置的信息检索方法、装置及系统 |
US20170139934A1 (en) * | 2015-11-12 | 2017-05-18 | International Business Machines Corporation | Grid-based geofence data indexing |
CN107092623A (zh) * | 2016-12-21 | 2017-08-25 | 口碑控股有限公司 | 一种兴趣点查询方法及装置 |
CN108200027A (zh) * | 2017-12-27 | 2018-06-22 | 东南大学 | 一种基于反馈角的保护位置隐私近邻查询方法 |
CN108763522A (zh) * | 2018-05-31 | 2018-11-06 | 康键信息技术(深圳)有限公司 | Poi检索排序方法、装置及计算机可读存储介质 |
CN109005500A (zh) * | 2018-07-09 | 2018-12-14 | 京信通信系统(中国)有限公司 | 应急搜救方法、装置、系统、计算机存储介质及设备 |
-
2019
- 2019-12-09 CN CN201911251359.5A patent/CN110889049B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101005482A (zh) * | 2006-01-16 | 2007-07-25 | 朱苏学 | 一种网络服务定位方法和系统 |
CN103488679A (zh) * | 2013-08-14 | 2014-01-01 | 大连大学 | 移动云计算环境下基于倒排网格索引的拼车系统 |
CN103596133A (zh) * | 2013-11-27 | 2014-02-19 | 哈尔滨工业大学深圳研究生院 | 连续查询的位置匿名方法及装置、隐私保护系统 |
CN106407213A (zh) * | 2015-07-31 | 2017-02-15 | 阿里巴巴集团控股有限公司 | 基于地理位置的信息检索方法、装置及系统 |
US20170139934A1 (en) * | 2015-11-12 | 2017-05-18 | International Business Machines Corporation | Grid-based geofence data indexing |
CN106354825A (zh) * | 2016-08-31 | 2017-01-25 | 重庆秒银科技有限公司 | 基于区块定位的附近地点查询服务处理方法 |
CN107092623A (zh) * | 2016-12-21 | 2017-08-25 | 口碑控股有限公司 | 一种兴趣点查询方法及装置 |
CN108200027A (zh) * | 2017-12-27 | 2018-06-22 | 东南大学 | 一种基于反馈角的保护位置隐私近邻查询方法 |
CN108763522A (zh) * | 2018-05-31 | 2018-11-06 | 康键信息技术(深圳)有限公司 | Poi检索排序方法、装置及计算机可读存储介质 |
CN109005500A (zh) * | 2018-07-09 | 2018-12-14 | 京信通信系统(中国)有限公司 | 应急搜救方法、装置、系统、计算机存储介质及设备 |
Non-Patent Citations (3)
Title |
---|
S KARTHI 等: "Improved Spatial Query Processing Framework for Spatial Data", 《PROCEDIA COMPUTER SCIENCE》 * |
王艳秋 等: "一种面向不确定对象的可见k近邻查询算法", 《计算机学报》 * |
邵奇峰,李枫: "一种基于HBase的空间关键字查询算法", 《计算机工程与科学》 * |
Also Published As
Publication number | Publication date |
---|---|
CN110889049B (zh) | 2023-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8983953B2 (en) | Methods and apparatuses for facilitating interaction with a geohash-indexed data set | |
CN107402955B (zh) | 确定地理围栏的索引网格的方法和装置 | |
US11042572B2 (en) | System and method for spatial clustering using multiple-resolution grids | |
CN110008293B (zh) | 地理位置查询方法及装置 | |
CN107092623B (zh) | 一种兴趣点查询方法及装置 | |
CN108009933B (zh) | 图中心性计算方法及装置 | |
JP2016503937A (ja) | 活動領域の検索および決定 | |
CN108932347B (zh) | 一种分布式环境下基于社会感知的空间关键字查询方法 | |
JP7407209B2 (ja) | 情報プッシュ方法及び装置 | |
Lu et al. | Flexible and efficient resolution of skyline query size constraints | |
TWI709353B (zh) | 確定移動終端定位間隔的方法、移動終端及伺服器 | |
US20160328445A1 (en) | Data Query Method and Apparatus | |
CN109271467B (zh) | 一种方向感知的路网移动对象k近邻查询方法 | |
CN113077181B (zh) | 一种停车站点设置方法、装置、介质及电子设备 | |
US20180081889A1 (en) | Data Processing Method and Apparatus | |
Rahman et al. | Density based clustering over location based services | |
CN110889049B (zh) | 一种位置坐标检索方法、装置、设备及介质 | |
CN110475204B (zh) | 一种地理围栏逆地址解析方法、装置及设备 | |
CN110930101A (zh) | 确定订单的配送时间的方法、装置、电子设备和可读介质 | |
CN113761381B (zh) | 兴趣点推荐的方法、装置、设备以及存储介质 | |
CN111475535B (zh) | 数据存储、访问方法及装置 | |
Zheng et al. | An efficient preference-based sensor selection method in Internet of Things | |
US20210004378A1 (en) | K-Nearest Neighbour Spatial Queries on a Spatial Database | |
CN112905587B (zh) | 数据库的数据管理方法、装置及电子设备 | |
CN105389395B (zh) | 信息获取方法和装置 |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40021126 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |