各种基于浏览器的系统允许用户输入地理位置的名称,并作为响应接收该位置的地图。除了显示道路和道路名称之外,这些地图还可以显示和突出建筑物的足迹(footprint)。这些系统还可以允许用户搜索该地区(area)的商业类别,并在地图上显示识别匹配商业位置的标记。
在某些地理位置,诸如城市地区,由于诸如商业的兴趣点密度高,要显示的标记数量可能非常大。在考虑与用于显示地图信息的技术相关联的底层硬件和软件约束的同时,需要有效地处理这样的信息,以便能够快速地呈现和显示地图信息。
技术实现要素:
本发明的实施例涉及以有效的方式识别、处理和显示与地图信息相关联的数据点聚类的技术。实施例特别涉及用于基于数据点的迭代聚类和过滤来处理地图信息以识别用于显示的所请求的数据点的聚类的方法和系统,以及用于生成表示聚类的多边形的方法和系统。
处理和显示呈现地图信息的方式的改进可以优化诸如服务器和用户终端之类的计算机系统上的资源,释放资源以运行其他应用和过程。特别是在存储和电力资源有限的便携式设备中,处理和显示地图信息的方式的改进会使得在处理地图信息的同时显示器活动的时间减少,从而确保节省电力,并且更快地满足用户的要求。有效地处理地图信息还可以导致用户终端和托管地图信息的服务器之间的通信的改进,因为可以优化要传送到终端的信息。
参考本发明的实施例描述的技术可以通过以有效的方式使用兴趣点信息来实现一个或多个这样的益处,从而可以减少要处理和/或显示的数据量,而不会丢失显示的地图中的任何相关联的信息内容。通过对数据点进行适当的聚类和过滤,某些数据点可以被排除在考虑之外,而聚类过程使得地图的地理区域(region)能够被集中处理。生成多边形以表示这样的区域使得能够集中处理多边形内的数据。
附图说明
图1是根据本公开的方面的系统的功能图。
图2是地图的示例。
图3是地图的路段图形的示例。
图4是基于特定于边缘(edge)的信息确定的分数的示例。
图5是基于与多个边缘相关的信息确定的分数的示例。
图6是过滤之前的图形的示例。
图7是初始过滤后的图形的示例。
图8是附加过滤后的图形的示例。
图9是附加过滤后的聚类的示例。
图10是显示与聚类相关联的路段的示例。
图11是路段图形的另一个示例。
图12是基于poi的物理接近度过滤边缘的示例。
图13是基于poi的物理密度确定分数的示例。
图14是确定节点对之间的最短路径的示例。
图15是确定任何节点对之间的最短路径的示例。
图16是在基于poi的物理接近度和密度进行过滤之后的图11的图形的示例。
图17是地图的示例,包括建筑物足迹。
图18是基于路段足迹生成的多边形的示例。
图19是基于建筑物足迹生成的多边形的示例。
图20是基于路段和建筑物足迹生成的多边形的示例。
图21是基于图19和图20的多边形生成的多边形的示例。
图22是在地图上显示图21的多边形的示例。
图23-24是根据本公开的方面的流程图。
具体实施方式
概观
该技术涉及基于沿着路段的兴趣点(pointofinterest,poi)的接近度来生成和显示地理区域的地图。例如,地图可以由图形表示,使得每个节点表示交叉点,每个边缘(edge)表示连接到交叉点的路段,并且每个边缘基于特定标准被分配分数。作为示例,标准可以基于路段的poi总数(例如,餐馆)、分配给路段上的poi的分数、路段的poi相对于其物理长度的密度、路段的poi相对于交叉点的物理距离以及分配给相邻段的分数。可以迭代地过滤图形,直到识别出小的路段聚类。可以通过概述相关联的段和在段的阈值距离内的poi足迹来向用户显示聚类。
作为说明,图2示出了可以存储在诸如图1中所示的系统的存储器中的路段和poi的地图。如图3所示,地图可以通过图形建模,其中每个边缘表示路段,并且每个节点表示一个或多个路段与另一个路段的交叉点。每个边缘可以被初始分配一个分数,该分数基于特定于该路段上的poi的信息,例如,位于该路段上的poi的数量以及这些poi相对于其他poi的排名。
分配给路段的分数也可以基于相邻段的分数。如图4所示,边缘ab的分数的一部分可以被添加到相邻边缘bc,并且更小的部分可以被添加到与边缘bc相邻的边缘。在这方面,路段的基于poi的分数可以扩散到该段的直接和间接相邻处(neighbor)。
实际上,分配给路段的分数可以基于许多其他路段。例如,如图5所示,当每个边缘的初始分数被扩散到其他段时,该分数的逐渐减小的部分可以被添加到间接相邻的边缘,直到没有剩余可添加。结果,如果单个边缘与分数相对较高的多个边缘相邻,则可以多次更新该边缘的分数。图6示出了每个段的总分数。
可以基于各种标准来过滤地图的图形。例如,标准可以至少部分地基于特定于单个路段的特征,诸如丢弃具有低于阈值的分数的边缘。边缘的丢弃可以迭代地以越来越大的阈值继续,这可能最终导致图形对从图形中所表示的另一个路段断开的相连接的路段的聚类进行建模。作为示例,图7和图8示出了作为迭代地提高阈值的结果而形成的聚类。
还可以基于取决于多于一个段的特征的标准来过滤图形。例如,可以迭代地过滤聚类,直到聚类的大小小于基于面积的(area-based)阈值。作为示例,如图8所示,如果要求聚类是十个段或更小,则聚类851将满足阈值,并且被排除在如上所述的附加过滤之外。但是,因为聚类850具有十个以上的段,所以它将继续被过滤直到它达到图9中所示的大小。
过滤后的图形表示聚类地图(clusteredmap)。图10提供了如何向用户显示包含一个或多个聚类的聚类地图的示例。
可以基于poi相对于路段、交叉点和彼此的物理位置来进一步过滤段的每个聚类。图11示出了其中图形中的边缘、节点和poi标记的位置相对于相关联的路段、道路交叉点和poi的地理位置成比例的图形。
用于进一步过滤的标准之一可以基于poi相对于交叉点的地理位置来修剪段。如图12所示,如果在交叉点的阈值距离内没有poi,则可以从图形中移除连接到交叉点的相关联的节点的所有边缘。
用于修剪的另一个标准可以是基于路段的poi相对于该段的物理长度的密度。例如,如图13所示,可以基于边缘的相关联的段的物理长度和位于该段上的poi的数量来为每个边缘计算虚拟长度值。交叉点对之间的虚拟距离可用于修剪来自聚类的附加路段。例如,系统可以基于边缘的虚拟长度确定从每个节点到每个其他节点的最短路径,并且可以从图形中移除不沿着这些路径中的至少一个路径的任何边缘。在这方面,图14示出了节点a和e之间的最短路径,图15示出了节点c和每个其他节点之间的最短路径。图16示出了当移除不在至少一对节点之间的最短路径上的任何边缘时图形将如何出现。
路段的聚类可用于识别和显示用户可能感兴趣的区域。图17示出了其中作为前述过滤和修剪的结果识别出路段750-51的地图。如图18所示,可以为这些段中的每个段生成多边形,其中每个多边形的每个边缘与段的足迹的边缘相距固定的距离。
还可以为具有与一个段相关联的特征的每个建筑物生成多边形。例如,如图19所示,可以为在该段上具有访问路线的任何建筑物(例如,门或车道)生成多边形,并且多边形包含满足特定标准的poi(例如,用于选择结合图2描述的poi的类别)。多边形的边缘可以与相关建筑物的足迹的边缘相距固定的距离。
如图20和图21所示,可以选择与特定段的多边形相交的所有特定建筑物的多边形,并将其与特定段的多边形组合以形成一个大多边形。如图21所示,可以填充多边形内部的孔和多边形边缘上的狭窄空间,并且可以移除外边缘上的小突起。
如图22所示,可以在地图上向用户显示多边形,从而突出显示包含可能是用户感兴趣的相对密集的poi群的区域。可以通过选择其中出现该区域的城镇或邻域(neighborhood)的名称、用于选择poi的类别、该区域常见的商业类别或者通过选择最长道路的名称来确定和显示该区域的名称。
示例系统
图1示出了一种其中可以实施本文所公开的技术的可能的系统100。在该示例中,系统100可以包括计算设备110和160。计算设备110可以包含一个或多个处理器112、存储器114和通常存在于通用计算设备中的其他组件。尽管图1在功能上将处理器112和存储器114中的每一个表示为设备110内的单个块,其也被表示为单个块,但是系统可以包括并且本文描述的方法可以涉及可以存储或不存储在同一物理外壳内的多个处理器、存储器和设备。例如,下面描述为涉及单个组件(例如,处理器112)的各种方法可以涉及多个组件(例如,负载均衡服务器场中的多个处理器)。类似地,下面描述为涉及不同组件(例如,设备110和设备120)的各种方法可以涉及单个组件(例如,不是执行下面描述的确定的设备120,设备120可以将相关数据发送到设备110以进行处理,并且接收确定的结果以进行进一步处理或显示)。
计算设备110的存储器114可以存储可由处理器112访问的信息,包括可以由处理器执行的指令116。存储器114还可以包括可以由处理器112检索、操纵或存储的数据118。存储器114可以是能够存储可由相关处理器访问的信息的任何类型的存储装置,例如能够存储非暂时性数据的介质。作为示例,存储器114可以是硬盘驱动器、固态驱动器、存储器卡、ram、dvd、可写入存储器或只读存储器。另外,存储器可以包括分布式存储系统,其中诸如数据118的数据被存储在多个不同的存储设备上,这些存储设备可以物理地位于相同或不同的地理位置。
指令116可以是要由处理器112或其他计算设备执行的任何指令集。在这方面,术语“指令”、“应用”、“步骤”和“程序”在本文中可互换使用。指令可以以目标代码格式存储,以便由处理器立即处理,或者以包括脚本或独立源代码模块的聚集的另一计算设备语言存储,这些脚本或集合是按需解释或预先编译的。下面更详细地解释指令的功能、方法和例程。处理器112可以是任何传统处理器,诸如市场上能买到的cpu。或者,处理器可以是专用组件,诸如asic或其他基于硬件的处理器。
可以根据指令116由计算设备110检索、存储或修改数据118。例如,尽管这里描述的主题不受任何特定数据结构的限制,但是数据可以作为具有许多不同字段和记录的表或xml文档存储在计算机寄存器、关系数据库中。数据还可以以任何计算设备可读格式(诸如但不限于二进制值、ascii或unicode)格式化。此外,数据可以包括足以识别相关信息的任何信息,诸如数字、描述性文本、专有代码、指针、对存储在其他存储器(诸如在其他网络位置)中的数据的引用或者由函数用来计算相关数据的信息。
计算设备110可以位于网络160的一个节点处,并且能够直接和间接地与网络160的其他节点通信。尽管图1中仅描绘了少数计算设备,但是典型系统可以包括大量连接的计算设备,每个不同的计算设备位于网络160的不同节点处。本文描述的网络160和中间节点可以使用各种协议和系统互连,使得网络可以是因特网、万维网、特定内联网、广域网或本地网络的一部分。网络可以利用标准通信协议,诸如以太网、wi-fi和http、一个或多个公司专有的协议以及前述的各种组合。作为示例,计算设备110可以是能够经由网络160与计算设备120通信的web服务器。计算设备120可以是客户端计算设备,并且服务器110可以通过使用网络160来经由显示器122向设备120的用户125发送和呈现信息来显示(或提供用于显示的)信息。尽管在如上所述发送或接收信息时获得了某些优点,但是本文描述的主题的其他方面不限于任何特定的信息发送方式。
计算设备120可以与服务器110类似地配置,具有如上所述的处理器、存储器和指令。计算设备120可以是旨在供用户使用的个人计算设备,并且具有通常与个人计算设备结合使用的所有组件,诸如中央处理单元(centralprocessingunit,cpu)、存储数据和指令的存储器、诸如显示器122的显示器(例如,具有屏幕的监视器、触摸屏、投影仪、电视或可操作以显示信息的其他设备)、用户输入设备162(例如,鼠标、键盘、触摸屏、麦克风等)和照相机163。
计算设备120还可以是能够通过诸如因特网的网络与服务器无线地交换数据的移动计算设备。仅作为示例,设备120可以是移动电话或诸如支持无线的pda、平板pc、可穿戴计算设备或能够经由因特网获得信息的上网本的设备。该设备可以被配置为使用诸如谷歌的android操作系统、microsoftwindows或appleios的操作系统操作。在这方面,在本文描述的操作期间执行的一些指令可以由操作系统提供,而其他指令可以由安装在设备上的应用提供。根据本文描述的系统和方法的计算设备可以包括能够处理指令并向(或从)人和/或其他计算机(包括缺少本地存储能力的网络计算机和用于电视的机顶盒)发送数据的其他设备。
计算设备120可以包括用于确定设备的地理位置和方向的组件130。例如,该组件可以包含诸如gps接收器131之类的电路,以确定该设备的纬度、经度和高度位置。该组件可以包括用于基于在客户端设备120处接收的其他信号(诸如如果客户端设备是蜂窝电话,则在蜂窝电话的天线处从一个或多个蜂窝电话塔接收的信号)来确定设备的位置的软件。它还可以包括磁罗盘132、加速计133和陀螺仪134,以确定设备定向的方向。
服务器可以存储地图相关的信息,诸如道路的名称和位置。道路的位置可以存储为一个或多个路段,其中每个段表示在两个地理位置之间延伸的道路或道路的一部分。例如,如果名为“主街道”的道路分别与名为“第一街道”、“第二街道”和“第三街道”的道路交叉,则主街道在第一街道和第二街道之间延伸的部分可以被存储为一个段,并且主街道在第二街道和第三街道之间延伸的部分可以被存储为另一个段。单个路段可以作为一系列更小的路段存储在存储器中。例如,如果主街道在与第一街道和第二街道的交叉点之间延伸的段是弯曲的,则该段可以被存储为一系列线性路段,其中每个线性路段由位于道路上的一对纬度/经度位置定义。第一街道和第二街道之间的段也可以被存储为一系列抛物线路段,其中每个抛物线路段由位于道路上的三个纬度/经度位置定义。路段可以可选地表示其他地理导向的路径,诸如仅限行人的小道。
地图相关的信息可以包括兴趣点(poi),诸如餐馆、商业、建筑物、公园、湖泊或与地理位置相关联的用户可能感兴趣的任何其他项目。除了poi的名称和位置之外,系统可以将poi与一个或类别(例如,“餐馆”)相关联。
可以使用一个或多个参考系统将位置存储在存储器中,例如,纬度/经度位置、街道地址、街道交叉点、相对于地图边缘的x-y坐标(诸如当用户点击地图时的像素位置)、建筑物名称以及能够识别地理位置的其他参考系统中的其他信息(例如,测量地图上的批号和块数)。地理位置也可以被存储为前述的范围(例如,城市的位置可以由其边界的地理位置来定义),并且系统可以将位置从一个参考系统转换到另一个参考系统。例如,服务器110可以访问地理编码器以将存储为街道地址的位置转换为纬度/经度坐标(例如,从“1500amphitheatreparkway,mountainview,ca”到“37.423021°,-122.083939°”)。
系统还可以存储可以从其中确定地理位置上的对象的足迹的信息。例如,服务器可以将建筑物的足迹存储为多边形,该多边形的顶点与特定的纬度/经度位置相一致。还可以基于一个或多个假设来确定足迹。作为示例,如果系统仅能够访问路段的端点的纬度/经度,则系统可以确定路段的足迹是在两个端点之间延伸的矩形,并且与典型的双车道一样宽。
系统还可以指示建筑物是否具有到路段的访问路线。例如,数据118可以指示建筑物具有面向并且在特定路段的特定距离内的公共入口(在这种情况下可以假设到路段的访问道路)或者在特定路段和公共入口之间存在人行道。
示例方法
现在将描述确定并向用户显示感兴趣的商业的、地理区域的地图的方法。应当理解,不必以下面描述的精确顺序执行以下操作。相反,可以以不同顺序或同时处理各种步骤。
地理区域可以在由系统识别的更大地理地区内。例如,服务器110可以经由客户端设备120从用户125接收关于特定城镇的信息的请求。服务器110还可以通过迭代地选择和处理存储在数据118中的城镇来识别地理地区。
系统可以检索与要处理的地理地区相关联的地图信息。图2提供了作为这种地区的示例的地图。在这方面,地图200由互连的路段(诸如段210-212)组成。
地图信息可以包括该地区内的poi的位置和类别。包含在相互步行距离内的餐馆相对高集中的地理地区经常受到用户的欢迎。因此,系统可以基于与餐馆类别相关联的poi来识别兴趣区域。餐馆的位置在地图200中被显示为泪滴形状。因此,地图200表示有四个餐厅位于段210上、一个餐厅位于段211上、一个餐厅位于段212上。另一类poi可能包括面向消费者的商店。
系统可以基于地图信息生成图形,其中每个边缘表示路段,并且每个节点表示一个或多个路段与另一个路段的交叉点。在这方面,图3中的边缘310、311和312分别表示路段210、211和212,并且节点321表示路段210和路段211的交叉点。
图形的每个边缘可以与基于位于相关联的路段上的poi的数量的分数值相关联。例如,310、311和312的边缘可以分别基于位于路段210、211和212上的餐馆的数量初始分配4、1和1的分数。(为了便于参考,其余的图形主要是用字母而不是参考数字来指代节点和边缘。)只有当一个poi具有到该段的访问路线时,该poi才可以被认为位于该段上。附加地或替代地,当poi在段的阈值距离内或者具有在与该段相关联的地址编号范围内的街道地址时,可以认为poi位于该段上。
总分数还可以取决于分配给各个poi的分数。例如,在搜索该地区中的所有餐馆时出现较高的餐馆可以被分配比其他餐馆更高的分数,在这种情况下,具有相等数量的餐馆的路段初始可能具有不相等的分数。
分配给路段的分数也可以基于相邻段的分数。如上所述,边缘310(下文中,边缘“ab”)的分数331可以初始被分配为值4,因为有4个poi位于路段211上。因为边缘ab在节点b处与边缘bc直接相交,所以边缘ab的初始分数的一部分可以被添加到边缘bc的分数。例如,可以将比边缘ab的分数331小1的值添加到边缘bc的分数332,即,分数332的值可以增加3。边缘cd在节点c处直接与边缘bc相交,因此边缘cd的分数333也可以增加,但是增加量小于边缘bc的增加量。作为示例,由于边缘bc的分数331增加了3,因此边缘cd的分数333可以增加2。该增加的一部分依次地被添加到相邻边缘de,例如,边缘ed的分数334可以增加1。增加量归因于原始源边缘可以继续下降,直到没有剩余可增加。例如,边缘ef的分数没有增加,因为从边缘ed的增加(+1)中减去1等于增加0。
与具有已更新的分数的边缘相邻的任何边缘也可以更新其分数。因此,源自单个边缘的变化可能会在整个图形中扩散。如图4所示,由于分配给边缘ab的分数,边缘cg、gh、gi、cj的分数也增加。
因此,与路段相关联的分数不仅可以基于位于该段上的poi的数量,还可以基于位于许多其他段上的poi的数量。例如,如图5和图6所示,边缘bc的分数532基于位于其相关联的段(1)上的poi的数量和由于相邻边缘ab的分数331而导致的增加(+3),导致总分数4分。边缘gi在其相关联的路段(图2的段240)上没有poi。即便如此,边缘gi的分数540相对高,因为它分别从分配给边缘ab、ik和kl的初始分数331、541和542接收到+1、+2和+1的增加。
在前述示例中,由于不同的路段导致的路段的增加与两个路段之间的道路交叉点的最低数量成正比和成反比。然而,也可以以其他方式调整相邻边缘的分数。作为示例,增加的程度可以随着每个交叉点指数地减小,可以基于两个不同路径上的交叉点的最低数量,并且可以基于段之间的物理距离。
不是仅基于其相关联的边缘的初始和更新后的分数来选择可能感兴趣的段,而是还可以基于各种标准来过滤图形。
该标准可以包括特定于单个边缘/段的特征。作为示例,可以将每个边缘的分数与预定阈值进行比较,并且如果其具有低于该阈值的分数则从图形中丢弃。图7显示了移除任何不满足标准“分数≥2”的边缘(诸如边缘de和ef)的结果。
该图的这种过滤可以迭代地以越来越大的阈值继续,这可能导致该图形最终表示从相连接的路段的其他聚类断开的相连接的路段的聚类。作为示例,如图8所示,在不能满足标准“分数≥3”的边缘被丢弃之后,边缘的两个聚类850和851可以被保留在图形中。
还可以基于取决于多于一个段的标准来过滤图形。例如,前述的迭代过滤可以继续,直到边缘的聚类相对于基于面积的阈值达到特定大小。作为示例,如图8所示,如果要求聚类是十个段或更小,则聚类851将满足阈值,因为它仅具有三个段(pq、qn、qr)。结果,聚类851将被排除在附加过滤之外。另一方面,聚类850具有十个以上的段,因此它将继续被过滤,例如,聚类850的基于段的阈值可以增加到“分数≥4”。如图9所示,聚类850随后满足基于面积的标准。基于面积的阈值还可以定义范围。例如,如果阈值分数的增加导致聚类变得太小,则可以完全地从图形中移除整个聚类。
在前述示例中,路段聚类的大小基于其关联的边缘的总数。然而,聚类的大小也可以以其他方式确定。作为示例,大小可以基于所有段的经组合的物理长度、段的最短或最长非重叠路径中的段数量、段的最短或最长非重叠路径的物理长度、由聚类中最外面的交叉点的地理位置定义的多边形内的总公顷(英亩)或前述的组合。
过滤后的图形表示可以向用户显示的聚类地图。图10提供了如何向用户显示包含一个或多个聚类的聚类地图的示例。浏览器1010显示类似于结合图2描述的地图的地图1020,但该地图还包括识别分别与图形聚类850和851相关联的段1050和1051的聚类的视觉特征。
可以通过基于poi相对于路段、交叉点和彼此的地理位置修剪图形来进一步过滤段的每个聚类。作为说明,图11示出了图形1110,其中边缘的长度以及节点和相关联的poi的位置相对于与路段、交叉点和poi相关联的地理位置大致成比例。例如,边缘ab表示100m长的第一路段。边缘af表示与第一路段相交的第二路段,并且从该交叉点到下一交叉点的距离是144m。每个泪滴形状表示poi,例如,图1110上的poi指示符1180-82相对于节点c和e的位置相对于在与这些节点相关联的交叉点之间延伸的路段上的三个poi的地理位置等比例。作为另一示例,从poi1150到由节点h表示的交叉点的地理距离是32m。
修剪的一个标准可以基于poi相对于交叉点的地理位置。例如,如果在交叉点的阈值距离内没有poi,则可以从图形中移除连接到交叉点的相关联的节点的所有边缘。作为示例,图12的参考圆1280示出了25m(半径)的阈值距离。参考圆1280以十字准线1290为中心,十字准线1290对应于poi1180的位置。如图所示,节点c在十字准线1290(即poi1180的位置)的25米阈值距离内。因此,在节点c的阈值距离内存在至少一个poi,因此节点c基于该特定标准而幸存于修剪。关于参考圆1281(表示距离poi1182的位置25m的地区)和节点e来说也是如此。因为节点c和e都幸存于修剪,边缘ce也幸存于修剪。或者,可以通过基于他们在交叉点的阈值距离内的poi的数量确定分数并且丢弃具有低于阈值的分数的边缘来修剪边缘。
另一方面,在节点h的阈值距离内没有poi。如参考圆1250所示,最近的poi是poi1150,并且离节点h表示的交叉点超过25m。因此,节点h和连接到该节点的所有边缘(例如,边缘bh和ch)从图形1110中被丢弃。
可以基于行人在探索不同poi时愿意行走特定距离的可能性来选择阈值距离。在这方面并且在至少一些情况下,阈值距离被设置为50m。预定阈值可以基于系统接收的数据来确定。例如,如果特定城市中的行人交通数据指示行人倾向于每天走得比平均距离更长,则与该城市相关联的预定阈值距离可以自动设置为比为其他城市设置的平均阈值成比例地大的值。
修剪的另一个标准可以基于沿着路段的poi密度。例如,如图13所示,与段相关联的分数可以表示基于边缘的相关联的段的物理长度和位于该段上的poi的数量为每个边缘计算的虚拟长度值。可以根据函数计算该值
vs=max(l-d*n,0)
其中
vs=段s的虚拟长度,
max(x,0)=返回x或0的函数,以较大者为准,
l=段s的物理长度,
d=等于(基准长度)/(基准长度内优选的最小poi数)的系数,和
n=位于段s上的poi的数量。
图13中所示的值基于每100m道路的优选最小值4个poi,即d=100/4=25。作为示例,由于在边缘ab上存在三个poi并且与边缘相关联的物理长度是100m,因此有ab=max(100-25*3,0)=25的虚拟长度1310。没有poi位于边缘fg上,因此其虚拟长度1320等于其100m的物理长度。边缘ce长70m并且有3个poi位于其上,这意味着边缘ce的平均密度为每100m4.2个poi。这超过了每100m道路4个poi的优选最小值,因此,边缘ce的虚拟距离1330为零。
交叉点对之间的虚拟距离可用于修剪来自聚类的路段。作为示例,系统可以基于边缘的虚拟长度确定从每个节点到每个其他节点的最短路径,并且可以从图形中移除不沿着这些路径中的至少一个的任何边缘。如图14所示,边缘ab的虚拟长度1310和边缘bc的虚拟长度1425是50。因此,节点c从a经由边缘ab和bc的虚拟距离是75。边缘ce的虚拟长度1330为零,因此节点c从a经由边缘ab、bc和ce的总虚拟距离1340是75。从节点a到节点e的任何其他路径的虚拟长度将长于75。结果,边缘ab、bc和ce共同表示节点a和e之间的最短路径,因此,不会基于poi密度丢弃这些边缘。
图15示出了从节点c到图形1110中的其他节点中的每个其他节点的最短可能路径。例如,从节点c到节点f的最短路径是沿着边缘cd和cf。边缘ab、bc、cd、df、ce和eg也位于从节点c到至少一个其他节点的最短路径上,因此它们不会基于poi密度被修剪。标准的所有对最短路径算法可用于识别所有节点对之间的最短路径。标准的所有对最短路径算法可用于识别所有节点对之间的最短路径。
图16示出了从图形1110的至少一个节点到任何其他节点的最短路径上的所有边缘。边缘af、cg、dg和fg不在任何最短路径上,因此从图形1110中被修剪。结果,幸存的边缘ab、bc、ce、cd、eg和df可以表示基于poi共同识别行人特别感兴趣的地理区域的路段。
通过减小聚类的大小,系统可以降低聚类将表示商业路段核心周围的非商业(例如,住宅)路段的球形的可能性,或者单个聚类将包括通过非商业区域连接的两个单独的商业区域的可能性。另一方面,通过如上所述的初始地扩散分数,系统可以降低段的聚类被路段的小间隙分开的可能性。此外,当如上所述计算虚拟距离时,幸存的路段倾向于形成遵循高度商业化的街道的路径。
在前述示例中,系统通过在多个阶段中过滤图形来生成图16所示的图形,包括基于边缘的路段上的poi数量、与边缘的路段相邻的路段上的poi数量、相连接的段的总数、poi与道路交叉点的接近度以及poi的密度,大致按该顺序进行过滤。然而,系统100的其他实施例可以放弃这些阶段中的一个或多个、以不同的顺序应用这些阶段、或者使用结合一个阶段与另一个阶段讨论的分数和标准。作为示例,结合图3讨论的初始分数可以基于段的poi密度,图13中讨论的虚拟距离可以基于反映在如结合图12讨论的交叉点的阈值距离内的段的poi的数量的分数,并且系统可以放弃结合图12讨论的修剪。
图10提供了如何向用户显示兴趣区域的一个示例。图17-22提供了显示兴趣区域的另一个示例。
图17示出了路段的地图,其中路段1750和1751被确定为用户可能感兴趣。该地图还显示了附近建筑物的足迹,诸如建筑物1701-03。
系统可以生成与特定路段相关联的多边形。例如,如图18所示,可以基于路段1751的足迹1851生成多边形1861。如在足迹1851的右侧的特写视图1810中所示,多边形1861的每个边缘可以与足迹的边缘平行并且离足迹的边缘固定距离。可以基于路段1750的足迹1850类似地生成多边形1860。
还可以为具有与一个或多个段相关联的特征的每个建筑物生成多边形。作为示例,如图19所示,该特征可能要求建筑物具有到相关段的访问路线。在这方面,系统可以生成用于建筑物1701的多边形1901,因为它具有从建筑物到路段1851的人行道1921。尽管建筑物1702比建筑物1701更靠近路段1851,但是系统可能不会生成用于建筑物1702的多边形,因为其访问路线1922不延伸到段1850或1851。将为建筑物1704生成多边形,因为即使它具有到段1850-51之外的路段的访问路线1934,但它也具有到段1850的访问路线1924。附加或替代特征可以要求建筑物的足迹在相关段的阈值距离内。另一个特征可以要求建筑物具有至少一个poi,该poi与用于选择poi以识别用户可能感兴趣的段的标准相匹配。例如,如果基于在段或附近段上有多少餐馆来识别段1850-51,则如果建筑物1705不包含餐馆,则不会为它生成多边形。
为建筑物生成的多边形的边缘可以与建筑物的足迹的边缘平行并且距建筑物的足迹的边缘固定距离1945。
所有生成的多边形可以组合成单个多边形。如图20所示,基于建筑物的足迹生成的所有多边形1901-05和基于路段的足迹生成的所有多边形1860-61可以组合在一起。在这方面,图21中所示的多边形2100的无阴影部分2130表示多边形1901-05和1860-61的并集。可以填充诸如孔2150的多边形2100内的孔,可以填充沿着像间隙2140-541的外边缘的窄间隙2140,并且可以移除像突起2160那样的窄突起。
可以在地图上向用户显示多边形,以突出显示用户可能感兴趣的区域。作为示例,浏览器2200可以在地图2210上在与相关道路和建筑物足迹相对应的位置处显示多边形2100。地图中显示的对象的视觉特征可以基于它们与多边形的相关性而改变。作为示例,以下项目中的一个或多个的颜色可以相同或不同:多边形2100的背景2290;多边形内且与包含相关poi的建筑物相关联的建筑物足迹1701、1702、1704、1706和1707;多边形内且不与包含相关poi的建筑物相关联的建筑物足迹1705、多边形内的道路足迹2240;多边形外的建筑物足迹1702和1703;多边形外的道路足迹以及多边形外的地图背景。
还可以确定和显示该区域的名称。例如,名称2250可以通过选择在其中出现该区域的城镇或邻域的名称、具有最大poi数量的邻域或道路的名称、用于选择poi的类别、该区域中常见的商业类别或具有多边形的最大足迹地区的道路的名称来确定。当该区域基于邻域名称,并且存在与该区域内、包含或以其他方式接近该区域的邻域一致的多个名称时,可以对这些名称进行排名,并且可以基于相关联的邻域的地理边界与该区域的边界相一致的接近程度以及该名称的在线流行度来选择名称。
尽管许多前述的示例集中于使用餐馆来识别商业走廊,但是可以使用其他类别的poi来识别其他类型的感兴趣地区。仅作为示例,诸如识别具有许多博物馆、旅游景点、昂贵的精品店和儿童友好型餐馆的地区。此外,与文化身份相关联的poi可用于识别也与该文化身份相关联的地区(例如,纽约市的小意大利(littleitalyofnewyorkcity))。
图23是处理地图信息以识别兴趣区域的计算机实施的方法的流程图。在框2310处,接收包括由多个边缘连接的多个节点的地图,其中每个边缘具有基于预定标准的分配的分数。在框2320处,通过将每个边缘的分数与预定过滤阈值进行比较并丢弃具有低于阈值的分数的边缘来过滤地图。在框2330处,通过识别包含连续边缘的一个或多个聚类并生成包含一个或多个聚类的聚类地图来处理过滤后的地图。在框2340处,将一个或多个聚类中的每个聚类的大小与面积阈值(areathreshold)进行比较,并将小于面积阈值的聚类识别为兴趣区域。在框2350处,从聚类地图中移除兴趣区域。在框2360处,确定在框2340处所识别的所有聚类是否小于阈值。如果是,则在框2380处,输出包括所识别的兴趣区域中的每个所识别的兴趣区域的处理后的地图。如果不是,则在框2370处,增加预定过滤阈值,并且该方法返回到框2320。该方法因此继续迭代地执行框2320-2350,其中具有被移除的区域的聚类地图在框2330处利用增加的预定过滤阈值被过滤,其中执行迭代直到在框2340处识别的所有聚类小于面积阈值。
图24是显示地图的计算机实施的方法的流程图。在框2410处,基于位于该段上的poi的数量来识别路段。在框2420处,识别具有与路段相关联的特征的地理位置上的对象。在框2430处,生成多边形,其中多边形边缘的位置基于路段的足迹和地理位置上的对象的足迹。在框2440处,提供显示路段和相对于路段的地理位置的多边形的地图。
由于在不脱离如权利要求所定义的本发明的情况下,可以利用上述特征的这些和其它变化和组合,因此实施例的前述描述应当作为说明而非如权利要求所定义的本发明的限制。本发明的示例的提供(以及表述为“诸如”、“例如”、“包括”等的子句)不应被解释为将本发明限制于具体示例;相反,这些示例仅用于说明许多可能方面中的一些。类似地,对“基于”等的引用意味着“至少部分地基于”。