CN103699531B - 位置搜索方法和位置搜索引擎 - Google Patents
位置搜索方法和位置搜索引擎 Download PDFInfo
- Publication number
- CN103699531B CN103699531B CN201210365273.7A CN201210365273A CN103699531B CN 103699531 B CN103699531 B CN 103699531B CN 201210365273 A CN201210365273 A CN 201210365273A CN 103699531 B CN103699531 B CN 103699531B
- Authority
- CN
- China
- Prior art keywords
- grid
- caching
- control unit
- location finding
- current
- 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.)
- Active
Links
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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- 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)
- Computational Linguistics (AREA)
- Remote Sensing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种位置搜索方法和引擎,涉及移动对象的位置搜索技术领域。该位置搜索引擎包括主控进程、缺省进程和多个缓存进程,主控进程记录了所有缓存进程的管辖区域信息,并负责把搜索请求转发给对应的缓存进程或缺省进程去处理,然后接收它们的处理结果,最后把结果返回给请求者。该引擎通过分布式进程内缓存来提高搜索效率,一个缓存进程负责一个由多个相连的网格构成的矩形区域,并且用二维数组来组织这些网格信息以及落入该网格范围内的所有对象的信息,这些对象以哈希表的结构进行组织,以对象的唯一标识作为键值。这样缓存进程只需要进行简单的数组下标换算就可以快速定位并获取其管辖范围内的任意网格和对象,从而提升搜索的效率。
Description
技术领域
本发明涉及移动对象的位置搜索技术领域,特别涉及一种位置搜索方法和位置搜索引擎。
背景技术
近年来,智能便携终端的普及使得针对移动的人和物的位置信息的采集变得容易。面向这些移动对象的位置搜索需求也开始多起来。例如,基于手机客户端的社交软件,通常会提供搜索周边过客的功能。
与POI(Point of Interest,兴趣点)等静态信息不同,移动物体的位置更新频繁,所以面向移动物体的位置搜索引擎要处理的位置更新请求要多于位置搜索请求。通过传统的添加索引来提高引擎性能的方式并不可取。
目前,有很多第三方产品都提供位置搜索的功能,如oracle的空间搜索模块,lucene的空间扩展模块,以及最近两年开始流行的nosql数据库mongodb。它们的基本原理大体类似,即,建立索引阶段包括对位置进行网格化编码,对编码建立索引;搜索阶段又分粗过滤和精确过滤两个阶段,粗过滤指找出覆盖搜索范围的所有网格内的对象;精确过滤指对粗过滤的结果进行精确的匹配计算。它们的搜索过程涉及到从持久性存储访问大量的数据,影响性能;另外,基于索引的方式,也不适合移动物体位置信息频繁更新的情况。
发明内容
本发明的发明人发现上述现有技术中存在问题,并因此针对问题中的至少一个问题提出了一种新的技术方案。
本发明的一个目的是提供一种高效、快速的位置搜索技术方案。
根据本发明的第一方面,提供了一种位置搜索方法,包括:主控进程确定与位置搜索范围有交集的目标网格区域,其中,主控进程记录缓存进程与网格区域的对应关系;主控进程确定与目标网格区域相关的缓存进程,其中,每个缓存进程维护一个矩形网格区域,在内存中通过二维数组记录矩形网格区域内每个网格内的对象信息;缓存进程确定位于目标网格区域中的对象作为候选结果对象;从候选结果对象中确定搜索结果对象。
可选地,该方法还包括:主控进程确定缺省进程中位于位置搜索范围内的网格;确定缺省进程位于位置搜索范围内的网格集中的对象作为候选结果对象。
可选地,主控进程确定与位置搜索范围有交集的缓存进程包括:主控进程确定所管辖的网格集与位置搜索范围包括的网格集有交集的缓存进程。
可选地,缓存进程以哈希表的数据结构、以对象的唯一标识作为键值组织网格内的对象的信息。
可选地,该方法还包括:主控进程接收对象的位置变更请求,对象的位置变更请求包括位置变更对象的当前位置和上次的位置信息;主控进程根据位置变更对象的当前位置和上次的位置信息分别确定位置变更对象的当前网格和上次所在网格;如果当前网格和上次所在网格不同,确定当前网格所属的当前缓存进程,将位置变更对象的信息写入当前缓存进程,清除位置变更对象的上次所在网格信息。
可选地,该方法还包括:当前缓存进程向以当前网格为中心的九宫格内的有位置提醒需求的对象发出位置提醒信息。
根据本发明的另一方面,提供一种位置搜索引擎,包括:主控单元,用于记录缓存控制单元与网格区域的对应关系,确定与位置搜索范围有交集的目标网格区域;确定与目标网格区域相关的缓存控制单元;缓存控制单元,用于维护一个矩形网格区域,在内存中通过二维数组记录矩形网格区域内每个网格内的对象信息;确定位于目标网格区域中的对象作为候选结果对象,从候选结果对象中确定搜索结果对象。
可选地,位置搜索引擎还包括缺省控制单元,用于维护所有的网格集;主控单元确定缺省控制单元中位于位置搜索范围内的网格;缺省控制单元确定位于位置搜索范围内的网格集中的对象作为候选结果对象,从候选结果对象中确定搜索结果对象。
可选地,缓存控制单元以哈希表的数据结构、以对象的唯一标识作为键值组织网格内的对象的信息。
可选地,主控单元还接收对象的位置变更请求,对象的位置变更请求包括位置变更对象的当前位置和上次的位置信息;根据位置变更对象的当前位置和上次的位置信息分别确定位置变更对象的当前网格和上次所在网格;如果当前网格和上次所在网格不同,确定当前网格所属的当前缓存控制单元,将位置变更对象的信息写入当前缓存控制单元,清除位置变更对象的上次所在网格信息。
可选地,当前缓存控制单元还向以当前网格为中心的九宫格内的有位置提醒需求的对象发出位置提醒信息。
本发明的一个优点在于,通过缓存进程将网格对象信息存储在内存中,以二维数组的方式进行组织,便于快速索引和检索,从而实现高效、快速的位置搜索方法和引擎。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
构成说明书的一部分的附图描述了本发明的实施例,并且连同说明书一起用于解释本发明的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本发明,其中:
图1示出本发明的位置搜索实现方法的一个实施例的流程图。
图2是本发明位置搜索引擎的一个实施例的结构示意图。
图3覆盖搜索范围的最小网格集的示意图。
图4示出本发明搜索引擎处理对象位置变更请求的一个实施例的流程图。
图5示出本发明搜索引擎处理位置搜索请求的一个实施例的流程图。
图6示出本发明搜索引擎处理位置搜索请求的另一个实施例的流程图。
图7示出本发明位置搜索装置的一个实施例的结构图。
具体实施方式
现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
为了便于位置搜索处理,可以将位置信息网格化,并为每个网格区域分配一个网格编码。例如,把地图用分别与赤道和子午线平行的线条分割成网状,即,从赤道和子午线开始,每隔0.001度画一条线,则不难算出每个网格西南角的经纬度值,以该经纬度值的组合作为该网格的编码,唯一标记该网格。每一个被搜索的对象,除了有以经纬度表示的精确位置信息之外,增加了覆盖它的网格的编码信息。
图1示出本发明的位置搜索实现方法的一个实施例的流程图。
如图1所示,步骤102,主控进程确定与位置搜索范围有交集的目标网格区域,其中,主控进程记录缓存进程与网格区域的对应关系。主控进程收到位置搜索请求后,根据位置搜索请求确定位置搜索范围。
步骤104,主控进程确定与目标网格区域相关的缓存进程,其中,每个缓存进程维护一个矩形网格区域,在内存中通过二维数组记录矩形网格区域内每个网格内的对象信息。主控进程根据缓存进程与网格区域的对应关系确定与目标网格区域相关的缓存进程,将位置搜索请求转发给缓存进程。
步骤106,缓存进程确定位于目标网格区域中的对象作为候选结果对象。例如,计算出能够覆盖全部被搜索范围(通常为圆形范围)的最小的网格集,然后根据这些网格的编码获取到所有这些网格里的被搜索对象作为候选结果集。
步骤108,从候选结果对象中确定搜索结果对象。对候选结果集中的对象逐一进行精确的判断,挑选出完全符合搜索条件的对象作为最终结果集。
上述实施例中,通过分布式进程(本文将这些进程称为“缓存进程”)内缓存来提高搜索效率。可以添加任意多个进程来负责地图上不同区域的对象位置更新和搜索。一个缓存进程负责由一个或者多个相连的网格构成的矩形区域(例如,用户密集区域),并且用二维数组来组织这些网格信息,网格信息包括落入该网格范围内的所有对象的信息,这些对象以哈希表的结构进行组织,以对象的唯一标识作为键值。这样缓存进程只需要进行简单的数组下标换算就可以快速定位并获取其管辖范围内的任意网格和对象,提升粗过滤的效率。可以生成多个缓存进程,各个缓存进程可以并行处理,从而提高处理速度,例如,可以为用户密集区域分配对应的缓存进程,以提高该区域位置搜索的处理速度。也可以为所有网格都分配缓存进程。
上述实施例中,通过缓存进程将网格内的对象信息存储在内存中,以二维数组的方式进行组织,可以便于快速索引和检索,提高了搜索速度和效率。
图2是本发明具体实施方式中的位置搜索引擎的结构示意图。如图2所示,本实施例中位置搜索引擎包括一个主控进程21、1个或多个缓存进程22、以及一个缺省进程23。
主控进程21负责接收客户端的位置搜索请求,并做出响应。主控进程21通过把位置搜索请求转发给缓存进程22或缺省进程23来完成具体操作。
在一个实施例中,位置搜索分两阶段完成,分别是粗过滤过程和精确过滤过程。粗过滤包括计算出覆盖搜索范围的最小网格集,并获取这些网格内所有的对象作为候选结果集。图3覆盖搜索范围的最小网格集的示意图。如图3所示,圆形31是搜索范围,粗边小矩形范围32内的网格就是覆盖搜索范围的最小网格集。精确过滤是指对上述候选结果集中的每个对象执行精确的判断,例如,计算具体对象跟圆心的距离是否小于圆的半径。
理论上缺省进程23可以维护所有的对象数据,此时主控进程和缺省进程可以处理所有的请求。缺省进程中的对象数据包括表示对象精确位置的经纬度数据、对象的其他属性数据、以及覆盖该对象的网格编码。缺省进程以传统数据库存储这些对象数据。
在一个实施例中,缺省进程的粗过滤是通过网格编码字段搜索关系数据库表,获得候选结果集。在网格比较多和候选结果集比较大的情况下,这种方法效率较低。
针对缺省进程处理效率低的情形,引入了缓存进程22。缓存进程可以对访问密集区域做缓存,使得针对该区域的搜索请求被转发到该缓存进程进行处理。缓存进程在进程的内存空间中以二维数组的方式来保存网格(包括其范围内的对象)信息,粗过滤过程效率得到大幅提高。
当添加一个缓存进程时,首先在主控进程进行注册,通过注册告知主控进程该缓存进程的访问入口,以及缓存进程所管辖的网格集。其次,缓存进程从缺省进程提取它所覆盖的网格下的全部对象,把这些对象添加到缓存进程的二维数组中,同时告知缺省进程将这些已缓存的对象的网格编码属性清空。缓存进程所维护的二维数组的元素跟缓存进程所管辖的网格一一对应,譬如,假设管辖区域的西南角经度是:113.275纬度是:23.117,则下标为[0,0]的元素对应的网格编码是[113.275,23.117],则下标为[100,1020]的元素对应的网格编码是[113.375,24.137]。网格内的对象则以哈希(HASH)表的数据结构进行组织,以对象的唯一标识为哈希运算的键值,以便快速访问对象。
图4示出本发明搜索引擎处理对象位置变更请求的流程图。
如图4所示,步骤402,客户端向主控进程发起对象位置变更(或首次设置位置)的请求。
步骤404,主控进程接收到请求后立即给客户端返回成功应答,客户端无需等待引擎后续的处理。
步骤406,主控进程检查请求是否带有对象上次的位置信息?若请求没有带有对象上次的位置信息,继续步骤408,否则,继续步骤412。
步骤408,主控进程根据对象的唯一标识向缺省进程查询对象上次的位置信息。
步骤410,判断对象是否有上次位置信息,如果是,则继续步骤412,否则,继续步骤420。
步骤412,若能获取到对象的上次位置,主控进程计算对象上次所在的网格,并计算对象当前所在的网格。
步骤414,主控进程判断对象上次网格和当前网格是否相同,如果是,则继续步骤422,否则,继续步骤416。
步骤416,如果对象上次网格和当前网格不是同一网格,主控进程检查上次网格是否被某缓存进程所管辖,如果是,继续步骤418,否则,继续步骤422。
步骤418,若上次网格被缓存进程管辖,主控进程向该缓存进程发出删除该对象的请求,缓存进程删除该对象。缓存进程向以被删除对象所处网格为中心的九宫格内的需要位置提醒服务的对象发出位置提醒,继续步骤422。
步骤420,主控进程计算对象当前网格。
步骤422,主控进程检查对象当前网格是否被某缓存进程管辖,如果是,则继续步骤424,否则,继续步骤426。
步骤424,若被缓存进程管辖,则主控进程向缓存进程发出添加或修改该对象的请求,缓存进程添加或修改该对象。此时,缓存进程向以新增对象所处网格为中心的九宫格内的需要位置提醒服务的对象发出位置提醒。
步骤426,主控进程将对象的位置变更请求以及网格变更信息转发给缺省进程。
步骤428,缺省进程更新(或新增)数据库中的对象的经纬度信息。另外,根据网格变更情况更新网格编码,即如果对象前后网格相同则无需更改网格编码,或前后网格都被缓存进程管辖也无需更改网格编码,以便减少不必要的索引操作。
图5示出本发明搜索引擎处理位置搜索请求的流程图。
如图5所示,步骤502,客户端向主控进程发起位置搜索请求。
步骤504,主控进程查找与搜索范围有交集的缓存进程。
步骤506,是否找到有交集的缓存进程?如果是,则继续步骤508,否则,继续步骤510。
步骤508,若找到缓存进程,主控进程将位置搜索请求转发给缓存进程。
步骤510,将请求以及计算到的网格编码转发给缺省进程。
步骤512,缓存进程计算出覆盖搜索范围的最小网格集,并通过数组下标映射获取在其覆盖范围的网格的全部对象作为候选结果集(粗过滤)。如果搜索范围在缓存进程覆盖区域的边界附近,则有可能部分网格不在缓存进程覆盖范围。
步骤514,缓存进程对获取到的候选结果集进行精确过滤计算。
步骤516,缓存进程将精确过滤后的结果集和不在其覆盖范围的网格编码一并返回给主控进程。
步骤518,主控进程判断缓存进程返回的结果中是否有未覆盖网格信息,如果是,继续步骤520,否则,继续步骤532。
步骤520,如果有未覆盖网格,则查找下一个与收到的未覆盖网格有交集的缓存进程。
步骤522,判断是否找到缓存进程,如果是,则继续步骤524,否则,主控进程将请求以及收到的未覆盖网格(或主控进程自己计算得到这些网格)转发给缺省进程,继续步骤526。
步骤524,若能找到缓存进程,则把未覆盖的网格和原始的搜索请求参数转发给选择的进程,返回步骤512。
步骤526,缺省进程根据收到的网格编码查询数据库,获取全部候选对象。
步骤528,缺省进程对候选对象进行精确过滤。
步骤530,缺省进程将过滤结果返回给主控进程。
步骤532,当主控进程接收到的从缓存进程或缺省进程的返回结果中不再包含未覆盖网格,则将所有之前返回的结果集合并一起作为最终结果返回给客户端。
位置搜索引擎通过一个主控进程管理各缓存进程与网格的对应关系,并负责分发为位置搜索请求到相应的缓存进程。引擎还包括一个缺省进程,处理找不到相应缓存进程的所有请求。与缓存进程用二维数组直接保存其管辖的网格及网格包含的对象不同,缺省进程可以保存所有对象,且直接将附加了网格编码的对象保存到数据库表,并在网格编码字段上建索引。进行粗过滤时缺省进程从数据库中根据网格编码搜索包含着指定网格编码的候选对象。缺省进程可以为所有对象维护了持久性备份,但是,对于已经被缓存进程进行缓存的对象,缺省进程无需维护该对象的网格编码,以避免不必要的索引维护成本。
图6示出本发明搜索引擎处理位置搜索请求的另一个实施例的流程图。
如图6所示,步骤602,主控进程接收到客户端发起的位置搜索请求。
步骤604,主控进程查找与位置搜索范围有交集的缓存进程。
步骤606,主控进程将位置搜索请求分别转发到各个缓存进程。
步骤608,缓存进程计算出覆盖搜索范围的最小网格集,并通过数组下标映射获取在其覆盖范围的网格的全部对象作为候选结果集(粗过滤)。如果搜索范围在缓存进程覆盖区域的边界附近,则有可能部分网格不在缓存进程覆盖范围。
步骤610,缓存进程对获取到的候选结果集进行精确过滤计算。
步骤612,缓存进程将精确过滤后的结果集返回给主控进程。
步骤614,主控进程接收到的从缓存进程返回结果,将所有返回结果集合并一起作为最终结果返回给客户端。
上述实施例中,位置搜索引擎包括一个主控进程和多个缓存进程。主控进程记录了所有缓存进程的管辖区域信息,并负责把搜索请求转发给对应的缓存进程去处理,然后接收它们的处理结果,最后把结果返回给请求者。该引擎通过分布式进程内缓存来提高搜索效率。即,可以添加任意多个进程来负责地图上不同区域的对象搜索。一个缓存进程负责一个由多个相连的网格构成的矩形区域(通常是用户密集区域),并且用二维数组来组织这些网格信息以及落入该网格范围内的所有对象的信息,这些对象以哈希表的结构进行组织,以对象的唯一标识作为键值。这样缓存进程只需要进行简单的数组下标换算就可以快速定位并获取其管辖范围内的任意网格和对象,从而提升搜索的效率。
图7示出本发明的位置搜索装置的一个实施例的结构图。如图7所示,该位置搜索装置包括主控单元71,记录缓存控制单元72与网格区域的对应关系,确定与位置搜索范围有交集的目标网格区域;确定与目标网格区域相关的缓存控制单元72;缓存控制单元72,维护一个矩形网格区域,在内存中通过二维数组记录矩形网格区域内每个网格内的对象信息;确定位于目标网格区域中的对象作为候选结果对象,从候选结果对象中确定搜索结果对象。缓存控制单元72可以以哈希表的数据结构、以对象的唯一标识作为键值组织网格内的对象的信息。
根据本发明的一个实施例,位置搜索装置还包括缺省控制单元73。缺省控制单元73维护所有的网格集;主控单元71确定缺省控制单元73中位于位置搜索范围内的网格;缺省控制单元73确定位于位置搜索范围内的网格集中的对象作为候选结果对象,从候选结果对象中确定搜索结果对象。
根据本发明的一个实施例,主控单元还接收对象的位置变更请求,对象的位置变更请求包括位置变更对象的当前位置和上次的位置信息;主控单元根据位置变更对象的当前位置和上次的位置信息分别确定位置变更对象的当前网格和上次所在网格;当当前网格和上次所在网格不同时,确定当前网格所属的当前缓存控制单元,将位置变更对象的信息写入当前缓存控制单元,清除位置变更对象的上次所在网格信息。当前缓存控制单元还向以当前网格为中心的九宫格内的有位置提醒需求的对象发出位置提醒信息。
本发明实施例中的位置搜索方法和引擎,具有分布式、高效、快速、伸缩性强等特点,可以处理移动对象的位置搜索引擎,其可以在海量数据的情况下,确保搜索的效率,减轻计算机负载,提高其响应速度,从而克服现有技术的不足。
至此,已经详细描述了根据本发明的位置搜索方法和装置。为了避免遮蔽本发明的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。
可能以许多方式来实现本发明的方法和系统。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本发明的方法和系统。用于所述方法的步骤的上述顺序仅是为了进行说明,本发明的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本发明实施为记录在记录介质中的程序,这些程序包括用于实现根据本发明的方法的机器可读指令。因而,本发明还覆盖存储用于执行根据本发明的方法的程序的记录介质。
虽然已经通过示例对本发明的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本发明的范围。本领域的技术人员应该理解,可在不脱离本发明的范围和精神的情况下,对以上实施例进行修改。本发明的范围由所附权利要求来限定。
Claims (7)
1.一种位置搜索方法,其特征在于,包括:
主控进程确定与位置搜索范围有交集的目标网格区域,其中,主控进程记录缓存进程与网格区域的对应关系;
主控进程确定与目标网格区域相关的缓存进程,其中,每个缓存进程维护一个矩形网格区域,在内存中通过二维数组记录矩形网格区域内每个网格内的所有对象信息,所有对象信息以哈希表的结构进行组织,以对象的唯一标识作为键值,从而缓存进程通过数组下标换算能够快速定位并获取管辖范围内的任意网格和对象;
缓存进程确定位于目标网格区域中的对象作为候选结果对象;
缓存进程从候选结果对象中确定搜索结果对象;
如果主控进程没有查找到与目标网格区域相关的缓存进程,则主控进程确定缺省进程中位于位置搜索范围内的网格;
确定缺省进程位于位置搜索范围内的网格集中的对象作为候选结果对象;
缺省进程从候选结果对象中确定搜索结果对象;
其中当添加一个缓存进程时,该缓存进程从缺省进程提取它所管辖的网格下的全部对象,将提取的对象添加到该缓存进程的二维数组中,并告知缺省进程将添加到该缓存进程的对象的网格编码属性清空。
2.根据权利要求1的方法,其特征在于,主控进程确定与位置搜索范围有交集的缓存进程包括:
主控进程确定所管辖的网格集与位置搜索范围包括的网格集有交集的缓存进程。
3.根据权利要求1的方法,其特征在于,还包括:
主控进程接收对象的位置变更请求,对象的位置变更请求包括位置变更对象的当前位置和上次的位置信息;
主控进程根据位置变更对象的当前位置和上次的位置信息分别确定位置变更对象的当前网格和上次所在网格;
如果当前网格和上次所在网格不同,确定当前网格所属的当前缓存进程,将位置变更对象的信息写入当前缓存进程,清除位置变更对象的上次所在网格信息。
4.根据权利要求3的方法,其特征在于,还包括:
当前缓存进程向以当前网格为中心的九宫格内的有位置提醒需求的对象发出位置提醒信息。
5.一种位置搜索引擎,其特征在于,包括:
主控单元,用于记录缓存控制单元与网格区域的对应关系,确定与位置搜索范围有交集的目标网格区域;确定与目标网格区域相关的缓存控制单元;
缓存控制单元,用于维护一个矩形网格区域,在内存中通过二维数组记录矩形网格区域内每个网格内的所有对象信息,所有对象信息以哈希表的结构进行组织,以对象的唯一标识作为键值,从而缓存进程通过数组下标换算能够快速定位并获取管辖范围内的任意网格和对象;确定位于目标网格区域中的对象作为候选结果对象,从候选结果对象中确定搜索结果对象;
缺省控制单元,用于维护所有的网格集;
主控单元还用于如果没有查找到与目标网格区域相关的缓存控制单元,则确定缺省控制单元中位于位置搜索范围内的网格;
缺省控制单元还用于确定位于位置搜索范围内的网格集中的对象作为候选结果对象,从候选结果对象中确定搜索结果对象;
其中当添加一个缓存控制单元时,该缓存控制单元从缺省控制单元提取它所管辖的网格下的全部对象,将提取的对象添加到该缓存控制单元的二维数组中,并告知缺省控制单元将添加到该缓存控制单元的对象的网格编码属性清空。
6.根据权利要求5的位置搜索引擎,其特征在于,主控单元还接收对象的位置变更请求,对象的位置变更请求包括位置变更对象的当前位置和上次的位置信息;根据位置变更对象的当前位置和上次的位置信息分别确定位置变更对象的当前网格和上次所在网格;如果当前网格和上次所在网格不同,确定当前网格所属的当前缓存控制单元,将位置变更对象的信息写入当前缓存控制单元,清除位置变更对象的上次所在网格信息。
7.根据权利要求6的位置搜索引擎,其特征在于,当前缓存控制单元还向以当前网格为中心的九宫格内的有位置提醒需求的对象发出位置提醒信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210365273.7A CN103699531B (zh) | 2012-09-27 | 2012-09-27 | 位置搜索方法和位置搜索引擎 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210365273.7A CN103699531B (zh) | 2012-09-27 | 2012-09-27 | 位置搜索方法和位置搜索引擎 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103699531A CN103699531A (zh) | 2014-04-02 |
CN103699531B true CN103699531B (zh) | 2017-12-05 |
Family
ID=50361062
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210365273.7A Active CN103699531B (zh) | 2012-09-27 | 2012-09-27 | 位置搜索方法和位置搜索引擎 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103699531B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104135715B (zh) * | 2014-06-10 | 2015-10-07 | 腾讯科技(深圳)有限公司 | 一种位置服务的实现方法、装置,及系统 |
CN106997354B (zh) * | 2016-01-25 | 2020-07-28 | 北京四维图新科技股份有限公司 | 一种poi数据检索方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000050844A1 (en) * | 1996-08-22 | 2000-08-31 | Go2 Systems, Inc. | Internet based geographic location referencing system and method |
CN101996258A (zh) * | 2010-11-30 | 2011-03-30 | 重庆大学 | 一种便于快速查询的电子地图信息栅格化处理及查询方法 |
CN102230968A (zh) * | 2011-04-01 | 2011-11-02 | 搜船(北京)网络技术有限公司 | 一种动态物标位置实时更新及显示系统和方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101346000B (zh) * | 2008-07-29 | 2011-06-29 | 方圆信通科技(北京)有限公司 | 基于gps和移动终端的提供本地移动地理信息服务的系统 |
-
2012
- 2012-09-27 CN CN201210365273.7A patent/CN103699531B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000050844A1 (en) * | 1996-08-22 | 2000-08-31 | Go2 Systems, Inc. | Internet based geographic location referencing system and method |
CN101996258A (zh) * | 2010-11-30 | 2011-03-30 | 重庆大学 | 一种便于快速查询的电子地图信息栅格化处理及查询方法 |
CN102230968A (zh) * | 2011-04-01 | 2011-11-02 | 搜船(北京)网络技术有限公司 | 一种动态物标位置实时更新及显示系统和方法 |
Non-Patent Citations (1)
Title |
---|
面向实时定位系统的位置区域索引;郭超等;《计算机研究与发展》;20111031(第10期);第1910页第2.1部分,第1911页第2.2-2.3部分以及第1912页第2.4部分 * |
Also Published As
Publication number | Publication date |
---|---|
CN103699531A (zh) | 2014-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11328186B2 (en) | Device and method for processing metadata | |
CN108920462B (zh) | 基于地图的兴趣点poi检索方法和装置 | |
CN106202207A (zh) | 一种基于HBase‑ORM的索引及检索系统 | |
CN103617295B (zh) | 一种地理信息矢量数据处理的方法和装置 | |
CN103927933B (zh) | 一种海量移动目标渲染的方法及装置 | |
CN111930767B (zh) | 一种基于多层缓存的矢量瓦片实时切片和更新方法 | |
Yu et al. | Geosparkviz: a scalable geospatial data visualization framework in the apache spark ecosystem | |
CN107766377B (zh) | 一种监控数据查询方法及装置 | |
CN105426375B (zh) | 一种关系网络的计算方法及装置 | |
CN106416313A (zh) | 识别与无线网络接入点相关联的实体 | |
CN103116610A (zh) | 基于HBase的矢量空间大数据存储方法 | |
CN109492060A (zh) | 一种基于MBTiles的地图瓦片存储方法 | |
CN107247791B (zh) | 停车场地图数据生成方法、装置和机器可读存储介质 | |
US20130246410A1 (en) | Server, information-management method, information-management program, and computer-readable recording medium with said program recorded thereon | |
WO2021164131A1 (zh) | 地图展示方法、系统、计算机设备和存储介质 | |
CN110351662A (zh) | 一种端云协同的方法、平台和装置 | |
WO2023138505A1 (en) | Methods, systems, and devices for data query | |
CN103699531B (zh) | 位置搜索方法和位置搜索引擎 | |
CN106649636A (zh) | 一种基于移动终端的人员流动性分析方法及装置 | |
CN104581633B (zh) | 支持隐私保护的障碍空间内的区域最近邻查询系统及方法 | |
CN103226559B (zh) | 用于组合的soi对象与内容的空间信息索引系统 | |
CN116433053A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN113449052A (zh) | 空间索引的建立方法、空间区域查询方法及装置 | |
CN104156364B (zh) | 地图搜索结果的展现方法和装置 | |
CN105654137A (zh) | 一种海量遥感数据分类组织方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |