最近邻域地理搜索的制作方法

文档序号:6478045阅读:231来源:国知局
专利名称:最近邻域地理搜索的制作方法
技术领域
本发明适用于搜索地理数据库,更特别地,其通过被识别为最接近搜索中心点的若干单元的网格单元来确定地理数据库的搜索范围。
背景技术
地理数据库确定地理对象的地理或绘图信息,例如多个兴趣点(POIs),通过包含地理位置信息和其他属性信息的相关信息在地理数据库中确定每一个兴趣点。用于兴趣点 存储的其它信息包括但并不限于名称、POI类型(例如市政厅、警察厅、加油站、公园、餐厅 等)。人们越来越依赖地理数据库,并使用访问地理数据库的应用程序基于与POI相关的地 理信息来定位Ρ0Ι。这样的应用程序包括电话和其它手持设备、桌面计算机应用、汽车和其 它车辆中使用的导航系统,这仅仅列举了一小部分。典型地,应用程序基于其自身或使用者指定的一些标准,请求地理数据库中的信 息,例如POIs和POIs关联信息。该标准用于查询数据库并获取符合标准的一组搜索结果, 例如POIs,在某些情况下,在搜索结果返回给应用程序前,该标准用于过滤搜索结果。信息 请求典型地确定至少一初始地理位置和例如为到初始地理位置的距离的一些信息,以限定 搜索。典型地,应用程序提供的信息确定限定搜索区域的搜索中心位置和到该中心位置 的距离。传统方法中,使用中心点和距离限定搜索区域,典型地,距离用于确定圆形区域的 半径IV如果第一搜索未获得预定结果,第二搜索通过大于巧的第二半径r2扩展该区域以 及原始中心点。不过,如果并非所有第一搜索区域包含在第二搜索的搜索区域,导致第二搜 索通常包括第一搜索区域。

发明内容
本发明寻求探讨本领域的缺点并给出了采用由最接近搜索中心点的一个或多个 单元组成的一组单元或邻域单元的搜索。本发明的实施方式使用递增方法,这样后继搜索 使用不包括在前搜索的多个单元的另一组单元。本文说明了一种从单元邻域中每次一个单元搜索地理数据库以获得地理对象的 方法和装置。可通过一网格单元和一初始点或中心点限定单元邻域。基于到该初始搜索点 的接近程度确定第一邻域,其对应通过该初始点和多个方向上到该初始搜索点的距离限定 的第一地理区域。在使用多个单元邻域时,每个后继单元邻域被限定,从而其不包含属于在 前搜索单元邻域的单元。后继邻域对应到该初始点的距离比在前搜索邻域相关距离大的地 理区域。在至少一个实施方式中,从地理数据库获取信息的方法包括接收搜索请求,该搜 索请求表明包含一初始位置的搜索标准;通过该初始位置确定与地理数据库相关的网格单 元中的邻域单元;以及在邻域中每次一个单元搜索地理数据库以从地理数据库中确定的多 个POIs获取若干兴趣点(POIs),获取的每个POI在该邻域的单元中具有相应的位置。
根据至少一实施方式,从网格单元中确定出一新的邻域单元,该新的邻域单元不 包括在前邻域单元中的单元。在新的邻域中每次一个单元来搜索地理数据库,以获取所述 多个POIs中的若干POIs,获取的每个POI在所述新的邻域中具有相应的位置。
以下结合附图对说明书进行详细说明,使得本发明的上述特点和内容更加清晰, 附图中相同的附图标记表示相同的元件,其中

图1是根据本发明的一个或多个实施方式说明系统元件的示例性框图。图2是根据本发明的一个或多个实施方式邻域单元的实例说明。图3是根据本发明的一个或多个实施方式采用邻域单元进行搜索的处理步骤流 程图的例子。图4是根据本发明的一个或多个实施方式包括两个单元邻域的搜索例子。图5是根据本发明的一个或多个实施方式扩大搜索区域的处理步骤流程图的例子。图6是根据本发明的一个或多个实施方式说明确定的邻域单元另一例子的示例。图7是根据本发明的一个或多个实施方式通过在前的行中至少一个单元来确定 后继行中作为当前环一部分的单元的例子。图8是根据本发明的一个或多个实施方式的螺旋搜索中采用的给定环包含的多 个环和单元的例子。
具体实施例方式通常,本发明包括采用邻近单元的地理数据库搜索及其系统、方法和体系结构。现在,参照前述附图对本发明的一些实施方式进行说明,附图中相同的附图标记 涉及相同的元件。图1给出了根据本发明一个或多个实施方式的系统元件的示例性框图。根据一个 或多个这样的实施方式,单元搜索模块(CSM) 104从应用程序102接收搜索请求110。应用 程序102可以为任何意图从例如为存储地理信息的地理数据存储器108的地理数据存储器 获取地理信息的应用程序。一些非限定性的示例为,应用程序102可以是导航系统,目录列 举(如商务和/或住宿的列表),绘图和/或地理搜索应用程序。还有一些非限定性的示 例为,应用程序102可以应用于手持设备、桌面计算机、服务器计算机、车载计算系统等。地理数据存储器108包含地理信息并且确定一个或多个地理对象,例如兴趣点 (POIs)。例如POI的地理对象为在地理数据存储器108中具有至少一相应地理位置和多个 其它属性或没有任何其它属性的一条目,比如一离散条目。通过例如全球定位系统(GPS) 的经度/纬度坐标系统中的纬度和经度坐标数据可确定POI的地理位置。其他属性信息可 非限定性地包括描述信息,例如名字、电话号码、类型或类别(例如,商业区、居民区、公园、 街道、城市、州等)、子类型/子类别(例如餐厅、杂货店、加油站等)、地址、运行时间等。根据本发明的一个或多个实施方式,在接收到搜索请求110之后,CSM104每次一 个单元访问地理数据库系统106以从地理数据存储器108中获取地理信息。地理数据库系 统106显然可以为任何数据库管理系统(DBMS)或用来访问地理数据存储器108中数据的其它系统,该访问例如为存储和读取。数据存储器108可以是任何类型的存储器,包括存储 在某些类型存储器中的数据库文件、平面文件等。单元可以为任何几何形状,例如正方形、矩形、三角形等,并由若干组边界或边界 线的集合来限定,其典型地为闭合形状。单元的几何形状确定单元的边界线和边界。单元可 具有相对于该地理数据库106和/或地理数据存储器108的规定位置。例如,可根据使用 了地理数据存储器108中存储的地理对象的坐标系统的纬度和经度坐标信息确定单元的 位置。还有一非限定性的示例为,单元的纬度和经度坐标信息可对应单元边界上某点(例 如,单元几何形状的顶点,比如矩形的角或沿单元边界上的其它点)或单元内某处(例如一 中心点或其它点)。对于给定的单元可确定其它信息,比如单元到一搜索中心点的距离、单 元尺寸等。可使用与单元相关的尺寸信息确定单元的边界和/或区域。例如当几何形状为 正方形时,单元尺寸包括确定单元边界和/或区域的长度和宽度。根据一个或多个实施方 式,可使用与一单元关联的坐标和尺寸信息在地理区域相关联的地理坐标系统中定位该单 元,以及限定与该单元一致的地理区域的一部分。根据一个或多个实施方式,CSM 104向地理数据库系统106发出搜索地理数据存 储器108以获取一地理区域对应信息的单元搜索请求112。该地理区域可包括一个或多个 单元区域。作为响应,地理数据库系统106发出查询地理数据存储器108的请求。根据一 个或多个实施方式,每次一个单元搜索地理数据存储器108。从地理数据存储器108中获取 的用于一给定单元的一组结果被返回到地理数据库系统106。一个非限定性的例子为,单元 查询结果116包括若干POIs,每一个在单元中具有相应的位置。此时,例如,作为单元查询 结果116 —部分的POIs为比如基于POI的纬度和经度坐标信息在当前搜索单元中确定具 有相应位置的那些POIs。例如,如果POI的位置位于当前单元区域中,其可位于当前单元的 边界线上,并且如果POI位于当前单元的边界上,其位置可位于该单元的边界线上。地理数 据库系统106将单元搜索结果118返回给CSM 104。
根据一个或多个实施方式,如图1所示,CSM 104可包括单元确定模块(CIM) 124和 过滤器模块126。CSM 124可确定一单元,将其作为由CSM104向地理数据库系统106发送 查询的当前单元。根据一个或多个实施方式,初始查询包括采用初始单元为当前单元。通 过应用程序102在搜索请求110中指定的初始点或位置可确定初始单元。一个非限定性的 例子为,初始点可以为应用程序102的使用者的当前位置(例如,由GPS坐标确定)或者使 用者或应用程序102确定的一些其它位置。对于具有通常技能的人员来说,明显地,初始点 可基于提供到CSM 104的信息特殊指定,或者由CSM 104得到。根据一个或多个实施方式,在接收到单元搜索请求112后,地理数据库106生成输 出到CSM 104的单元搜索结果118。过滤器126用来过滤单元搜索结果118。过滤器126 可为任何类型的滤波器,例如,可包含基于搜索请求110中指定的标准的滤波器。随后,过 滤的或者未过滤的搜索结果作为搜索结果120被转发至应用程序102。在图1所示的例子中,CIM 124为CSM 104的一部分或者一组件。或者,CIM124的 一部分或者全部可为地理数据库106的一部分。例如,对于给定的搜索,地理数据库106可 确定当前单元,例如一初始单元或后继单元。进一步地,当过滤器模块126所示为CSM 126 的一部分,一些或者全部过滤器模块126可为CSM 126的一部分。还有另一种替换方式为, 一些或所有CSM 104可为地理数据库106 —部分的数据库管理系统的一部分,和/或CSM104可为应用程序102的一部分。还有,应用程序102、CSM104和地理数据库196可为一集 成元件。根据本发明的至少一个实施方式,针对这里归为邻域单元的一组单元,CSM104每 次一个单元来查询地理数据库106,将单元检索编译的检索结果120返回给应用程序102。 这里说明的是,邻域单元可为单元的集合,例如相邻单元的集合。图2为根据本发明的一个 或多个实施方式使用的邻域单元的说明性示例。根据这些实施方式,提供了可为静态或动 态单元网格的网格单元200。相对于指定存储于地理数据存储器108的例如POI s的地理 对象的地理和坐标系统,可用单独的单元来限定单元网格200。单元网格200中的每个单元 具有至少一组坐标和至少一个尺寸。例如,一组坐标可相对于单元网格200,并且另一组可 相对于用来在地理数据存储器108中的位置的地理和坐标系统,例如GPS坐标系统。当然, 本发明的实施方式可应用任意组坐标和任意个坐标系统,这是显而易见的。图2对单元网格坐标系统举例说明。这里使用的例子假定为二维坐标系统和单元 网格。很明显,任何数目的维数均可用于本发明的实施方式。在图2所示的例子中,左上 方单元220可考虑为起始单元,单元220的左上方点210可考虑为单元220以及单元网格 200的起始点210。在图2的例子中,网格单元200的坐标值可表达为χ-和y-坐标值,这 样起始点210的χ-和y-坐标值为(0,0),该坐标值也是单元网格200的初始点的坐标值。 另外,起始点210可包括地理信息系统的相关坐标值,例如纬度和经度坐标值。由于起始点 210也是单元网格200的起始点,这些相同的地理坐标系统的坐标也是单元网格200的起始 点的地理坐标。可能得到单元网格200中的任何单元的坐标。例如,网格200中紧邻单元220右 方的单元具有的X-和y-坐标为(1,0)。类似地,假定X方向上的X个单元和Y方向上的Y 个单元,位于单元网格220的其它角的单元222、224和216的相应初始点212、214和216 分别具有的χ-和y_坐标值为(0,Y)、(X,Y)和(X,0)。另外,初始点212、214和216也可 具有预先确定或动态确定的坐标值,例如,基于单元网格200的位置是静态的还是动态的 来动态确定。例如,可通过另一单元的地理坐标值和每个单元的已知尺寸,例如两个单元的 起始点之间的已知距离,来动态确定起始点的地理坐标值。在图2所示的例子中,网格单元200中的每一单元为高度和宽度相同的正方形。也 可使用其它几何形状,这是显而易见的。另外,单元网格200中的所有网格的单元尺寸明显 不需要相同。单元234的点236表示搜索的一初始点或者中心点。点236被示为单元网格200 的中心和单元234的中心,但并非必须如此。点236对应可基于例如为搜索请求110的搜 索请求的信息确定的搜索中心点。根据一个或多个实施方式,网格单元200可为固定的,或 者可沿点236动态定位。使用中心点作为搜索的初始点可确定单元234,例如,单元234可 确定为包含点236的单元。根据一个或多个实施方式,单元网格200中的一组单元构成邻域单元,可基于每 个单元相对于初始单元234的位置来限定这些单元。在图2的例子中,框202中的单元包 括具有作为初始单元的单元234的单元邻域202,单元234包含初始点236。如同单元网格 200的单元220以及其他网格,单元234包括至少一个点,例如左上方的点238,岂可包含一 个或多组坐标。
根据本发明的一个或多个实施方式,从单元204的初始单元开始,在图2的例子中 为单元234,每次一个单元执行搜索,接着在邻域202中的单元204重复,针对每个单元执行 地理数据存储器108的查询114。与邻域202中的单元相关的数目不需要对应搜索单元的 顺序。搜索单元的顺序可为随机的。例如,在搜索单元1后,搜索单元7,然后是单元3等。 搜索单元的顺序可基于对应于单元邻域202中单元的初始点236的位置。这种情况下,可 首先搜索作为初始单元的单元1,接下来是单元4,之后为单元3。 另一非限定性的例子为,可基于一个单元比另一单元产生更多的POIs的预期来 确定单元的搜索顺序。例如,假定单元5预期比单元1产生出更多的POIs。即使初始位置 位于单元1,可以先搜索单元5。当初始点236比所示情形更靠近单元1和5之间的共有边 界时,这可能更加有效。根据一个或多个实施方式,可针对单元邻域中搜索的单元和搜索的单元邻域递增 且重复地执行搜索。根据一个或多个这样的实施方式,在搜索结果120返回到应用程序102 前,搜索单元邻域202中的所有单元204。在这些实施方式中,可对于单元204执行查询 114,并且查询结果可由过滤模块126过滤。对于单元邻域202中的下一单元204重复该步 骤。搜索单元邻域202中的单元204和过滤搜索的每个单元的结果之后,对单元邻域202 中搜索的所有单元编译过滤的搜索结果。明显地,例如并行处理技术的技术可用于优化搜 索。根据一个或多个实施方式,为单元邻域202编译的搜索结果包括搜索结果102的 第一增量,其可在例如搜索单元邻域202中的所有单元204完成后的时间点返回到应用程 序102。应用程序102可选择继续搜索,例如,实际上扩展搜索区域。可替换地,CSM 104在 将为单元邻域202编译的搜索结果120返回到应用程序120之前可选择扩展搜索区域。在 任一情况下,本发明的实施方式不需搜索在前搜索区域即能扩展要搜索的地理区域,例如, 可利用搜索在前搜索单元之外的单元来执行扩展搜索。图4给出了根据本发明的一个或多个实施方式包括两个单元邻域的搜索的例子。 图2中的单元邻域202如图4所示。如前文所述,搜索单元邻域202中的单元204,并编译 关于单元邻域202的搜索结果。另一单元邻域402包括单元404,例如,单元编号为10到 25。可搜索单元邻域402中的单元404以扩展搜索区域。根据搜索邻域404的单元404编 译的搜索结果可补充根据搜索单元邻域202中单元204编译得到的搜索结果。CSM 104的CIM 124可基于初始点236确定邻域202的单元202并确定搜索邻域 202的单元202的顺序。当要搜索的单元邻域402与单元邻域202相随时,CSM 124可确定 邻域402的单元404以及搜索单元404的顺序。在确定单元邻域402的单元404过程中, CIM 124可确定单元邻域202的单元204,这样被用于单元邻域402的搜索不包括单元邻域 202的单元204。如此,可扩展搜索区域,例如,获得附加搜索结果,不需要重复搜索属于之 前搜索区域的单元。图6给出了根据本发明的一个或多个实施方式确定的邻域单元的另一个例子。单 元邻域中的单元编号为1到4。在图6的例子中,初始点靠近单元1和4的交叉部。根据一 个或多个实施方式,CIM 124可使用初始点的位置来确定邻域单元。在所示例子中,邻域被 确定为单元1到4.当然,可使用初始确定的单元之外的单元扩展搜索。图3给出了根据本发明的一个或多个实施方式利用邻域单元进行搜索的处理步骤流程图的例子。例如,可由CSM 104执行这些步骤。在步骤302,CSM104接收搜索请求, 例如搜索请求110。在步骤304,CSM 104的CIM 124可根据接收的搜索请求中的信息确定 邻域单元。在步骤306,从确定的邻域单元中获得初始单元。在步骤308,从地理数据存储 器108取得例如为POIs的地理对象。获取的POIs区域在被搜索的当前单元中具有确定的 相应位置。在步骤310,过滤搜索结果,例如采用CSM 104的过滤模块126。过滤步骤可采用 搜索请求110表明的搜索标准。可执行的过滤器的一个例子可基于采用搜索请求110中包 含的信息确定的距离或者搜索区域。还有一非限定性的例子为,可基于获取的搜索单元的 POIs的名称、分类和/或子分类过滤。
在步骤312,判断是否搜索了单元邻域中的全部单元。如果不是,程序执行步骤 314以确定邻域中下一单元。如果判断邻域中所有单元均被搜索过,程序执行步骤316,判 断是否获得了预定数量的结果。如果是,程序执行步骤320以返回结果。如果在步骤316指 示附加搜索,程序执行步骤318扩大搜索范围并执行搜索,例如,执行步骤306、308、310和 314。这里根据一个或多个实施方式描述的情形为,扩大搜索区域不包括在前搜索的区域。 一旦搜索了新的扩大的搜索区域,在步骤316判断是否获取了预定数量的搜索结果。如果 不是,可继续执行步骤318以进一步扩大搜索范围。当在步骤316中判断获得了预定数量的结果,执行步骤320将结果返回给应用程 序102。如果搜索了多个邻域,针对每个邻域编译的搜索结果可被聚合并返回给应用程序 102。在图3所示的例子中,由CSM 104判断是否扩大搜索。可替换地,可由应用程序 102执行该判断。这种情况下,搜索邻域单元得到的结果可返回到应用程序102,这样应用 程序可基于返回的结果判断是否扩大搜索区域。在图3所示的例子中,在搜索完邻域中的所有单元之后,在步骤316执行判断。或 者,步骤316可在搜索完邻域的部分单元之后执行判断。由于搜索区域被划分为单元邻域 的多个单元,可通过搜索邻域中在前搜索单元之外的单元来扩大搜索。图5给出了根据本发明的一个或多个实施方式扩大搜索区域的处理步骤的流程 图的例子。在步骤512,判断是否扩大搜素区域。如前所述,例如,可基于应用程序102或者 CSM 104发出的指令扩大该搜索区域。如果不需要扩大该搜索区域,处理结束。如果判断结果为扩大该搜索区域,程序执行步骤504确定包括结合本发明的一个 或多个实施方式说明的在前搜索过的单元之外的邻域单元。在步骤506,获得扩大搜索区域 的初始单元,并获取位于确定单元中的POIs。在步骤510,过滤获取的结果。在步骤512,判 断是否搜索了包含扩展搜索区域的邻域单元中的所有单元。如果不是,执行步骤512以确 定邻域中的下一单元并执行步骤506。如果在步骤516确定已搜索了邻域中的所有单元,执 行步骤516返回搜索结果。根据本发明的多个实施方式,搜索包括被确定为最接近初始点的多个单元。每一 单元包含待搜索的地理区域的一部分,给定单元的该部分比搜索区域要小。应用程序102 可确定搜索区域的最大尺寸以及搜索的初始点。可使用初始点的例如纬度和经度坐标的地 理位置来确定初始单元。可基于对应于搜索的初始点或中心点的地理坐标以及单元网格中 单元的地理坐标和边界来确定该初始单元。类似地,可基于例如POI和多个单元以及单元边界的地理坐标动态或静态地确定相对于单元网格中多个单元的POI位置。根据一个或者多个实施方式,最近邻域搜索使用包含用以确定单元邻域以及包含 在单元邻域中的单元的圆环的螺旋方式。搜索从初始单元开始并向搜索区域外围进发。如 上所述,搜索区域可递增地、重复地增长,不包括在前搜索的单元,并可在任意点停止。根据 一个或多个实施方式,可通过数值R增加初始半径或当前半径来确定单元邻域。邻域中的 多个单元具有几何形状,并且该单元邻域的几何形状基于邻域中多个单元的形状,例如正 方形或三角形。根据采用螺旋方法的一个或多个实施方式,可从搜索中排除位于单元邻域 角位置 处的单元,例如三角形单元邻域的角。在例如对象更密集地靠近初始点时,该方法是 有用的。根据一个或多个实施方式,在螺旋搜索的情形下,该搜索区域被划分为多个环,其 可由例如初始索引值为1索引,每个环由与其相关的半径来表征。半径的取值范围从0开 始,其环绕包含例如初始搜索点的单元。与当前环相关的半径值可增加R的数值以获得下 一环的半径。可通过单元尺寸信息,例如以米为单位的一些测量单位的最小单元宽度和高 度来确定R的数值。环可确定单元邻域并用于确定属于单元邻域的单元。例如,最外环可 限定搜索区域。根据一个或多个这样的实施方式,初始环半径为0,并且包含一个单元,例如包含 初始点的单元。后继的每个环具有通过对当前半径增加值R确定的半径。每个半径包含其 中心到搜索区域中心的距离小于或等于环的半径的多个单元。当前环中符合与在前环或后 继环连接条件的单元被排除。根据一个或多个实施方式,通过实际距离的平方与一归一化 系数的乘积计算用于给定单元的距离。当半径值超过搜索区域半径时,该半径被置为该搜索区域半径。根据一个或多个 实施方式,该环为倒数第二个环。并非排除全部位于环内的单元。用于当前搜索处理的最 后一个环的半径与倒数第二个环相同。例如,最后的搜索可包括与搜索半径指定的搜索区 域交叉的但并非全部容纳于其中的单元。例如,与最后一个环相关执行的搜索中包含单元 的中心位于与整个搜索区域相关的半径之外。根据一个或多个实施方式,搜索环被划为四个象限,例如右、左、上、下象限。这些 象限可确定搜索单元邻域/环中单元的顺序。一个非限定性的例子为,中心单元可用作右 象限和左象限之间的水平转变点。例如,右象限包含位于被确定为当前单元邻域的中心单 元的水平位置右方的单元,例如,确定位于右象限的单元的相应水平位置大于或者等于中 心单元相关的水平位置。可使用例如与单元相关的χ-坐标值的坐标值确定单元的水平位 置。X-坐标值大于或者等于中心单元的X-坐标值的那些单元位于右象限,并且余下的水平 位置小于中心单元的水平位置的单元不在右象限,落入左象限。可基于单元的上边缘中心 是否比下边缘中心到搜索区域中心更远来确定单元位于上象限。类似地,比如,可基于单元 的下边缘中心是否比上边缘中心到搜索区域中心更远来确定单元位于下象限。根据至少一个实施方式,在螺旋搜索中,每次一个象限的一行来搜索单元邻域/ 环中的单元,例如从象限的外行开始。从例如最靠近初始点的最内单元开始搜索位于象限 当前行中的单元一直到该行的最外单元。对于第一个单元,测量从例如初始搜索点的搜索中心到单元边缘的距离以确定上 象限到下象限的转变。在该位置,可确定用来确定上象限和下象限之间转变点的垂直位置,例如一 y-坐标值。下象限从其中的底部行开始,并在垂直转变到达的位置结束。
根据一个或多个实施方式,在螺旋搜索中,对于给定的行,可通过到初始搜索点和 当前以及在前环的半径的单元距离来确定当前单元邻域包含的单元。对于最外环中的单 元,距离可为到该单元最近的角的距离,而不是到单元中心的距离。单元距离可用于确定哪 些单元属于当前环,是否处理了当前行中的所有单元,和/或是否终止当前行并开始在新 行中搜索。如果单元距离大于当前环的半径,从一行跳到新的一行。或者,如果单元距离小 于或者等于在前环的半径,该单元属于在前环,无需被搜索。如果两个条件均不满足,确定 该单元属于当前环并可被搜索。确定当前环一行中的单元可以使得针对当前环中的后续行中的单元计算的单元 距离最小化。例如,处理当前环中某一行时,跳过与在前环关联的搜索过的行中的单元,直 到确定出未搜索的与在前环关联的行中的第一个单元。可保持第一个单元的水平位置,这 样在开始新的行时,可使用这一水平位置确定新的一行中对应于保持的水平位置的单元, 例如,可从该水平位置而不是初始搜索点开始下一行。这样递进可避免重复的距离计算。图 7给出了根据本发明的一个或者多个实施方式通过在前行的至少一个单元来确定作为当前 环一部分的后继行的单元。图7的例子中示出了三个单元行。可基于计算的距离或与当前环的在前行相关的 判断来判定单元属于当前环、属于在前环,或者不属于当前环或者在前环。通过计算距离, 标记为“X”的单元被确定为当前环的一部分。通过计算距离,标记为“<”的单元被确定为 在前环的一部分。通过计算距离,标记为“>”的单元为不是在前环或者当前环的一部分。 可使用这里说明的技术或者一些已知或者之后阐述的其它技术来计算距离。符号“--”指 定的单元,不对其计算距离。在图7所示的第一行中,前四个单元(由左向右读取)标记为“X”,其指示对这些 单元计算了距离,并且对于每个单元计算的距离表示该单元属于当前环。与第五个单元相 关的计算距离表示该单元不属于在前环或者当前环。例如,第一行的第五个单元属于后继 环。基于与第一行中第五个单元相关的输出,不需要计算例如第一行中第六、第七和第八单 元这三个单元到第五单元右侧的距离。针对第二行的第一、第二和第三单元的每一个计算距离,并且计算的距离用以判 断这些单元属于在前环。针对第二行中第四、第五、第六和第七单元计算的距离用来判断第 四、第五和第六单元属于当前环以及第二行中的第七单元不属于当前或在前环。基于对第 七单元的判断,不需要计算有关第二行中第八单元的距离。关于第二行的判断用于处理第三行,对于一些单元来说可避免这样的距离计算, 例如第三行的第一、第二和第三单元。如前所述,确定属于当前环的在前行中的第一单元的 水平位置可确定对应于被确定的水平位置的后续处理行的单元。用于新行的距离计算可从 确定的单元开始。在图7的例子中,第二行中的第四个单元的位置用来确定对于第三行中 的第一、第二和第三单元可跳过距离计算,以及可从第三行的第四单元开始距离计算。图8给出了根据本发明的一个或多个实施方式的螺旋搜索采用的给定环包含的 环和单元的例子。术语“n:n”指定每个单元,其中第一个“η”确定环,并且第二个“η”表示 给定环中的搜索序列。例如,“3:4”确定该单元属于第三个环并且为搜索的第三个环的第 四个单元。横越网格中的单元从初始环的初始单元开始,指定为“1:1”,可看出该运动为螺旋形式。另外,可能使得环和环中的单元可见。可以看出,与后继环关联的半径递增地大于 在前环的半径。当处理当前环时,可避免与在前环相关的在前处理的单元之处理过程。 显而易见的,任何搜索序列均可用于本发明的实施方式。在图8中的例子中,对于 给定的环,搜索序列从上象限和右象限开始,比如搜索上象限的单元并且搜索向位于右象 限的单元进发。例如,对于处理的第三环,上象限和右象限的搜索包括指定为“3:1”、“3:2” 和“3 3”的单元。该例中上象限和下象限之间的转变在单元“3 3”和“3 5”之间。因此, 在处理完“3:3”单元后,处理继续到下象限和右象限,从“3:4”单元开始,进而执行“3:5” 单元。刚刚说明的反映序列的序列可用于左象限以及正被搜索的上象限和左象限的单元, 例如“3:6”和“3:7”单元,之后为正被搜索的下象限和左象限,例如被指定为“3:8”、“3:9” 和“3:10”的单元。根据一个或多个实施方式,可由地理数据库系统106和CSM 104的一个或者另一 个或者二者一起来执行过滤。接下来给出了根据本发明一个或者多个实施方式用于执行搜 索的对象类的例子和示例应用编程接口(API)的方法。可使用定义了在单元邻域和/或搜索区域中多个单元中进行迭代的函数的 ImapObjectsIterator类。对于给定单元,可使用SetQuery函数设置过滤器和搜索标准。 过滤器确定给定单元中的对象。本发明中实施方式使用的另一函数或方法的例子为确定单 元标识符的函数,该单元标识符例如为单元的唯一标识符、给定的一组世界坐标,例如GPS 坐标、映射识别符和映射层标识符。对于给定的单元,可使用一函数通过获取的单元标识符 得到边界框。可使用另一函数获得用于与给定的单元相邻的若干单元的单元标识符。函数 的变化可返回给定方向上与给定单元相邻的单个单元,例如北、南、东、西、东北、西北、东南寸。SetSpiralQuery函数可用于初始化查询,例如螺旋查询。该方法选取以例如GPS 坐标的世界坐标表示的初始搜索点以及以例如米为测量单元表示的搜索距离作为输入。可 传送布尔值到该函数,其可用作过滤开关,例如通过数据库系统106打开或关闭过滤。例如 被搜索的当前单元的一部分位于搜索区域之外时,可使用这样的过滤。可检查例如POI的 每个对象的坐标来确定哪些对象位于搜索区域内部或者外部,这样只有位于搜索区域内部 的那些对象被提供给CSM 104。这样,例如,可跳过位于搜索区域之外的对象。例如可在搜 索范围被确定时应用这类过滤。不过,如果未限定搜索距离,例如,在获取了足够数量的对 象后可中止搜索。这样,地理数据库系统106不需要过滤已获取的对象,并且布尔标记可设 置为“关”。对于非限制的搜索区域,距离输入可被设置为大的数值。GetCurrentSpirallndex函数返回当前环的索引。该函数可用来搜索一个环到下 一环的转变。GetCurrentSpirallndex函数返回例如以米为单位的当前环半径。如上所述, 最后两个环的半径可相同。GetSpiralDeltaR返回用以增加环半径的数值R。例如,返回的 数值可通过R增加用于下一环的当前半径。根据一个或多个实施方式,当确定该环包含多个“空”单元,例如不包括任意对象 的单元时,跳过一个或多个环是可能的。这样可通过大于R的数值来增加半径,并且可通过 比1大的数值增加环的索引。相反,半径增长的数值可小于R,例如当搜索接近搜索区域边 界时。CnearestSearch类可执行层组的搜索,例如同时执行多个层。例如,可搜索多个类别中的POIs。该类中的ExecuteSearch函数接收组索引和可使用SearchParams数据结构定 义的搜索参数。例如,搜索结果可存储在容器中并可由GetNumFound和GetFoundObject函 数获取。该类可支持本文说明的增量搜索,包括圆形和螺旋搜索。作为SearchParams数据 结构一部分的区域类型参数area_tp可识别搜索类型,例如螺旋搜索中的“SPIRAL_SRCH”。 布尔标记imlimit_area可识别搜索区域为“unlimited”。如前所述,非限定的搜索区域可 用于搜索直到找到若干对象。例如,如果设置了该标记,search_distance值被忽略并且对 象过滤可被关闭。当在多个层上进行搜索时,用于所有层的环并行增长。一般地,该组中多个层的单 元尺寸彼此不同。这样,搜索工具试图尽可能紧密地保持所有层的当前环半径。例如,可由应用程序102的使用者或者应用程序102管理该搜索,并通过搜 索提示对象进行控制。抽象类CnearestSearchNotifier可用于该目的。可从该抽 象类派生出子类以创建自定义的通知符。当设置了 SearchParams的通知器成员时, 可触发对应于识别的事件响应的通知器函数。例如,在处理获得的对象之后可调用 CnearestSearchNotifier: :0bject函数。另一非限定性的例子为,在每个环被处理后,可调 用CnearestSearchNotifier: :Ring函数。例如,当搜索包括多个层时,在一组层上而不是 在每一层时可调用Ring函数。通知器函数,例如Object或Ring通知器函数,可以向布尔 值形式的通知返回响应,其用于判断是否继续或中止检索。例如,如果返回值为TRUE,可继 续当前搜索,反之,如果值为FALSE,结束该搜索。可使用CnearestSearchTool类函数查询搜索的当前状态。GetNumFound()函数返 回当前存储在搜索结果容器的多个对象。GetNumlteratedO返回被迭代的多个对象。由于 并非所有的对象被接受为搜索结果的部分,例如过滤的结果,比如迭代对象的数目可大于 或等于搜索结果容器中存储的对象的数目。GetNumReliableO函数返回容纳于搜索结果中并被认为最接近的对象的估计数 量。当被请求数目的对象被放入结果容器时,并非所有均为实际最接近的对象。随着搜索 进行,一些对象可被更好的对象替换。当环并非最优时,例如该环由属于该环的矩形单元 限定,并且下一环的单元可能包括比当前环中找到的一些对象更接近搜索中心的对象,会 出现上述情况。这也是搜索可能在找到对象的数目超过一阈值数目时仍可能继续的一个原 因。继续搜索并判断在前迭代中是否遗漏了对象。判断是否中止搜索的一个方法为,根据当前环搜索中找到的对象缺失一起的若干 对象得到中止搜索的判定。更特别地,一旦找到足够数目的对象并且当前环的搜索不能得 出其它附加的和/或更好的对象时,可中止该搜索。然而,该方法要求搜索至少一个环,不 需要从该环中生成有意义的搜索结果。这种方法存在显而易见的缺陷。可替换地,可使用 GetNumReliable函数确定搜索过程中可中止该搜索和避免处理不必需的最后一个环的点。 该函数返回近似最接近搜索中心点的对象的估计数目。可比较该数目与多个请求的对象以 判断是否中止搜索。根据一个或多个实施方式,该函数使用经验方法进行估计。经验公式 应用程序可在处理了一定数目的环之后开始,例如第三个环之后开始。例如,对每个处理的 环可更新可信对象的数目。该函数提供的信息可协助应用程序102的使用者和/或应用程 序自身来判断是否中止搜索。本发明的实施方式可在通用微处理器或其它处理设备中实施。如果以软件形式实施,该技术可具体化为例如随机读取存储器(RAM)、只读存储器(ROM)、非 易失性随机读取 存储器(NVRAM)、电子擦除可编程只读存储器(EEPR0M)、FLASH存储器等计算机可读介质上 的指令或程序代码。这些指令使得一个或多个处理器执行或者被配置以执行本发明中所说 明的功能。还有非限定性的一些例子为,所说明的一个或多个实施方式可部分或整体地作为 构成特殊应用集成电路的电路配置的硬件电路实现,或者作为加载到非易失性存储器的韧 件程序,或者作为从数据存储介质加载或者加载到数据存储介质的软件程序,其作为机器 可读编码,该编码为例如微处理器或其它数字信号处理单元的一组逻辑元件可执行的指 令。数据存储介质可为比如半导体存储器(其可非限定性的包含静态或动态RAM、ROM和/ 或flash RAM)或铁电物质、双向开关半导体元件、聚合体或相变存储器;或者例如磁盘或 光盘的盘类介质。本领域技术人员将认识到本发明的方法和系统可通过多种方式实现,并且这些 方式不会被前述的示例实施方式和例子所限定。也就是说,以硬件和软件或韧件组合的各 种方式,由一个或多个组件执行的功能元件,以及单个函数,均可分布在客户端或服务器位 置或两者处的软件应用程序中。在这点上,这里说明的不同具体实施方式
的任何特征可结 合在单个或多个实施方式中,并且具有比这里说明的所有特征或多或少有所替换的实施方 式是可能的。整体或者部分功能可通过现在已知的或者以后会知晓的方式分布在多个组 件中。因此,在获得这里说明的函数、特征、接口或者优先选择过程中,得到混合的软件/硬 件、韧件组合是可能的。而且,本发明的范围覆盖执行所述特征和功能以及接口的已知的通 用方式,并且现在或之后的本领域技术人员可以理解,这里说明的硬件或软件或韧件组件 均可进行变换和修改。本发明旨在覆盖权利要求精神和范围内包含的各种修改和类似的配 置。权利要求的范围应对应最广义的解释,以便包含所有此类修改和类似的结构。本发明 包含以下权利要求的任一实施方式和所有实施方式。
权利要求
一种计算机执行的用于从地理数据库获取信息的方法,其特征在于所述方法包括接收搜索请求,所述搜索请求表明包括一初始位置的搜索标准;根据所述初始位置,从与一地理数据库相关的一网格单元确定一邻域单元;从所述邻域中每次一个单元搜索所述地理数据库以获取所述地理数据库中确定的多个POIs中的若干兴趣点(POIs),获取的每个POI在所述邻域单元中具有相应的位置。
2.根据权利要求1所述的方法,其特征在于其中所述搜索所述地理数据库还包括 确定所述邻域单元的一当前单元;执行所述地理数据库搜索以获取所述多个POIs中的若干个POIs,获取的每个POI在所 述当前单元中具有相应的位置;以及根据所述搜索标准过滤获取的关于所述当前单元的所述多个Ρ0Ι,以生成用于所 述当前单元的一组POIs结果。
3.根据权利要求1所述的方法,其特征在于其中所述确定邻域单元还包括 通过所述初始点和到初始点的距离来确定一地理区域;从所述网格单元中确定所述邻域单元,所述邻域对应于确定的所述地理区域的至少一 部分。
4.根据权利要求1所述的方法,其特征在于其中所述搜索所述地理数据库还包括每次 一个单元来搜索所述地理数据库,直到获取预定数量的POIs。
5.根据权利要求1所述的方法,其特征在于其中所述搜索所述地理数据库还包括每次 一个单元搜索所述地理数据库,直到搜索完所述邻域中所有单元以获取所述多个POIs中 的若干个。
6.根据权利要求5所述的方法,其特征在于其中所有单元已被搜索的所述邻域单元包 括一在前邻域,该方法还包括从该网格单元确定一新的邻域,该新邻域单元不包含所述在前邻域中的单元; 从新邻域中每次一个单元搜索地理数据库以获取所述多个POlS中的若干个,获取的 每个POI在所述新邻域的单元中具有相应的位置。
7.根据权利要求6所述的方法,其特征在于其中所述搜索所述地理数据库还包括从所 述新邻域中一个单元搜索所述地理数据库,直到获取预定数量的POIs。
8.根据权利要求6所述的方法,其特征在于其中所述搜索所述地理数据库还包括从所 述新邻域中每次一个单元搜索所述地理数据库,直到搜索完所述新邻域中的所有单元以获 取所述多个POIs中的若干个。
9.根据权利要求6所述的方法,其特征在于其中所述新邻域单元对应一新的地理区 域,该新的地理区域由所述初始点和到所述初始点的距离所限定,该距离比限定所述在前 搜索的邻域单元对应的地理区域的距离大。
10.根据权利要求6所述的方法,其特征在于所述确定新的邻域单元还包括 通过所述初始点和到初始点的距离确定一新的地理区域;从所述网格单元中确定所述新的邻域,所述新的邻域对应所确定的所述地理区域的至 少一部分。
11.根据权利要求10所述的方法,其特征在于其中所述到所述初始点的距离比用于确 定在前搜索的邻域单元对应的地理区域到所述初始点的距离大。
12.—种存储包含从地理数据库获取信息的方法的程序代码的计算机可读介质,其特 征在于该方法包括接收搜索请求,所述搜索请求表明包括一初始位置的搜索标准; 根据所述初始位置从与一地理数据库相关的一网格单元确定一邻域单元; 从邻域中每次一个单元搜索所述地理数据库以从所述地理数据库中确定的多个POI 获取若干兴趣点(POlS),获取的每个POI在所述邻域单元中具有相应的位置。
13.根据权利要求12所述的介质,其特征在于其中所述搜索所述地理数据库还包括 确定所述邻域单元的一当前单元;执行所述地理数据库搜索以获取所述多个POIs中的若干个,获取的每个POI在所述当 前单元中具有相应的位置;以及通过所述搜索标准过滤获取的关于所述当前单元的所述多个P0IS,以生成用于所 述当前单元的一组POIs结果。
14.根据权利要求12所述的介质,其特征在于其中所述确定一邻域单元还包括 通过所述初始点和到初始点的距离来确定一地理区域;从所述网格单元中确定所述邻域单元,[所述邻域对应确定的所述地理区域的至少一 部分。
15.根据权利要求12所述的介质,其特征在于其中所述搜索所述地理数据库还包括每 次一个单元搜索所述地理数据库,直到获取了预定数量的POI s。
16.根据权利要求12所述的方法,其特征在于其中所述搜索所述地理数据库还包括 每次一个单元搜索所述地理数据库,直到搜索完所述邻域的所有单元以获取所述多个POIs 中的若干个。
17.根据权利要求16所述的介质,其特征在于其中所有单元已被搜索的所述邻域单元 包括一在前邻域,该方法还包括从网格单元确定一新的邻域,该新的邻域单元不包含所述在前邻域中的单元; 从新邻域中每次一个单元搜索地理数据库以获取所述多个POIs中的若干个,获取的 每个POI在所述新的邻域的单元中具有相应的位置。
18.根据权利要求17所述的介质,其特征在于其中所述搜索所述地理数据库还包括从 所述新邻域中每次一个单元搜索所述地理数据库,直到获取了预定数量的POIs。
19.根据权利要求17所述的介质,其特征在于其中所述搜索所述地理数据库还包括每 次从所述新邻域中一个单元搜索所述地理数据库,直到搜索完所述新邻域中的所有单元, 从而获取所述多个POIs中的若干个。
20.根据权利要求17所述的介质,其特征在于其中所述新的邻域单元对应一新的地理 区域,该新的地理区域由所述初始点和到所述初始点的距离所限定,该距离比限定所述在 前搜索邻域单元对应地理区域的距离大。
21.根据权利要求17所述的介质,其特征在于所述确定一新的邻域单元还包括 根据所述初始点和到所述初始点的距离来确定一新的地理区域;从所述网格单元中确定所述新的邻域单元,所述新的邻域对应确定的所述地理区域的 至少一部分。
22.根据权利要求21所述的介质,其特征在于其中所述到所述初始点的距离比确定对应于在前搜索的邻域单元的地理区域到所述初始 点的距离大。
全文摘要
公开了从邻域单元中每次一个单元搜索地理数据库以获取地理对象的方法和装置。可通过网格单元和一初始点或中心点来限定单元邻域。第一邻域基于到初始搜索点的接近距离被限定,并与由搜索点和在多个方向上到初始搜索点的距离限定的第一地理区域一致。在使用多个单元邻域时,每个后继单元邻域均被限定,从而其可排除属于在前搜索的单元邻域的单元。后继邻域对应一地理区域,其到初始点的距离比与在前搜索邻域相关的距离大。
文档编号G06F17/30GK101821732SQ200880102748
公开日2010年9月1日 申请日期2008年9月10日 优先权日2007年9月10日
发明者亚历山大·维彻斯基 申请人:神达电脑股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1