实施例一:
如图1所示,为本发明实施例一中地址匹配的方法步骤示意图,所述方法包括以下步骤:
步骤101:接收待查询地址。
在具体实践中,可以是用户通过进行地址匹配的网站提供的对话框输入待查询地址,并通过点击“提交”或“查询”按键的触发,作为向进行地址匹配的网站发起的地址查询请求。
步骤102:将所述待查询地址切分为多个地理词。
在本步骤中,切分得到的多个地理词中可以包括独立地理词和依赖地理词,也可以只包括独立地理词。
步骤103:根据地址数据库中已建立的地理词与地理范围的对应关系,查询将待查询地址切分后得到的各地理词对应的地理范围。
在步骤103的方案中,将待查询地址切分为多个地理词后,可以从地址数据库已建立的地理词与地理范围的对应关系中进行查询,得到待查询地址切分后的每个地理词可能的地理范围列表(其中有的地理词可能只对应一个地理范围,有的地理词可能对应多个地理范围)。
步骤104:根据查询得到的各地理范围的相交关系,确定各地理范围的关联度。
在本步骤中,优选的,可以通过如下方式根据查询得到的各地理范围的相交关系,来确定各地理范围的关联度,包括:
针对步骤103中查询得到的各地理范围,分别确定与之相交的其他地理范围,并根据所述与之相交的其他地理范围对应的地理词的数量,来确定各地理范围的关联度。
由于地理词对应的地理范围反映在地图上是一个区域,因此,在步骤103中查询得到的一个地理范围与其他地理范围之间可能存在交集也可能没有存在交集。
在实际应用中,确定地理范围之间是否存在相交关系的具体实施方式有很多,本发明实施例对此并不限制,本领域技术人员可以根据自己的需求自行设计,以下给出两种具体实施方式用以说明:
第一种方式:地理范围是地理词反映在地图上的一个区域范围,通常以包含有该区域范围内的经纬度坐标集合形式体现,在实际应用中,可以通过判断两个地理范围的经纬度坐标集合之间是否有重合的经纬度坐标,如果有,则认为两地理范围之间存在相交关系,否则,认为两地理范围之间不存在相交关系。
该方式适用情况较广,无论地理范围的形状是否规则,均可采用该方式进行判断。
第二种方式:对于地理范围的形状具体为圆形的情况,比如地理范围是将地理词所在已知地址的坐标为圆心,该地理词的级别对应的范围值为半径确定的,则在判断任意两个地理范围是否存在相交关系时,可以先判断这两个地理范围的圆心是否重合,若是,则确定这两个地理范围相交;否则,进一步判断两个地理范围的圆心之间距离是否大于这两个地理范围的半径之和,若大于,则确定这两个地理范围不相交,若小于,则确定这两个地理范围相交。
若某一地理范围与之相交的其他地理范围对应的地理词的数量越多,表示该地理范围的关联度越高。
例如:待查询地址为“北京市海淀区中山公园”,切分后得到的地理词为“北京市”、“海淀区”、“中山公园”,其中,在执行完成步骤103后,查询确定“北京市”对应一个地理范围(称之为地理范围1),“海淀区”对应一个地理范围(称之为地理范围2),“中山公园”对应两个地理范围,这两个地理范围反映在地图中时,一个是位于北京市的地理范围(称之为地理范围3A),一个是位于上海市的地理范围(称之为地理范围3B)。
此情况下,“北京市”对应的地理范围1与地理范围2和地理范围3A都相交,即地理范围2和地理范围3A对应的地理词分别为“海淀区”、“中山公园”,因此,与地理范围1相交的地理范围所对应的地理词的数量为2,即地理范围1的关联度为2;同理,可以确定与地理范围2相交的地理范围所对应的其他地理词的数量为2,即地理范围2的关联度为2;与地理范围3A相交的地理范围所对应的其他地理词的数量为2,即地理范围3A的关联度为2;与地理范围3B相交的地理范围所对应的其他地理词的数量为0,即地理范围3B的关联度为0。
根据以上确定的各地理范围与其他地理范围之间的相交关系,可以看出,地理范围:地理范围3A、地理范围1和地理范围2,其关联度最高,均为2,因此,认为上述关联度最高的3个地理范围为与待查询地址匹配度最高的地理范围。
可见,关联度用于表示与待查询地址的匹配程度。本发明实施例并不限于上述方式获得地理范围的关联度,本领域技术人员可以根据各地理词对应的地理范围的相交关系,自行设计获得关联度的具体实现方式,只要该关联度能表示与待查询地址的匹配程度即可。
比如可以针对步骤103中查询得到的各地理范围,分别确定与之相交的其它地理范围的数量,来确定各地理范围的关联度。若某一地理范围与之相交的其他地理范围的数量越多,表示该地理范围的关联度越高。
也可以是,针对步骤103中查询得到的各地理范围,确定与其他地理范围的交集度,并根据交集度,来确定各地理范围的关联度。
所述交集度是指与某地理范围与其它地理范围的交集中,交集的大小,交集越大,表示该地理范围的交集度越高。特殊地,若两个地理范围存在包含关系,则表示这两个地理范围的交集度最高;若两个地理范围没有交集,则表示这两个地理范围的交集度为0。
在确定各地理范围的关联度时,可以分别计算步骤103中查询得到的任一地理范围(例如地理范围A)与其他各地理范围之间的交集度,并将分别计算得到的交集度求和作为地理范围A与其他地理范围的交集度之和。交集度之和越大,表示该地理范围的关联度越高。
步骤105:选取关联度满足预置条件的地理范围,根据选取得到的地理范围确定与所述待查询地址相匹配的位置信息。
本步骤根据关联度足够高(即满足预置条件)的地理范围,确定与待查询地址相匹配的位置信息。
在具体实现中,可以将地理范围的关联度由高到低的顺序进行排列,根据其中关联度最高的或排序在前几的地理范围来确定位置信息。也就是说,预置条件包括:
关联度最高;或,关联度由高至低选取预置级别,如选取关联度最高和次高的情况。
在按照预置条件确定出关联度满足所述预置条件的地理范围后,需要根据确定出的所述地理范围来确定与所述待查询地址相匹配的位置信息,确定方法具体包括,从关联度满足预置条件的地理范围中,选取关联度相同的多个地理范围,并根据选取的所述地理范围,确定与所述待查询地址相匹配的位置信息,具体的实现方式为:
从关联度满足所述预置条件的地理范围中,分别确定关联度相同的各个地理范围。在关联度相同的多个地理范围中,查找各地理范围对应的地理词中,级别最低的地理词对应的地理范围,并根据查找到的地理范围确定与所述待查询地址相匹配的位置信息。
其中,根据查找到的地理范围确定与所述待查询地址相匹配的位置信息,一种实现方式是:直接将查找到的地理范围确定为与所述待查询地址相匹配的位置信息。实际应用中,也可以将查找到的地理范围进行调整,比如缩小等处理,将调整后的地理范围作为与所述待查询地址相匹配的位置信息。
举例说明,假设待查询地址为“北京市海淀区中山路中山公园”,切分后的地理词为“北京市”、“海淀区”、“中山路”和“中山公园”,“北京市”对应的地理范围1;“海淀区”对应地理范围2;“中山路”对应地理范围3A和地理范围3B,其中,地理范围3A位于北京,地理范围3B位于南京;“中山公园”对应地理范围4A和地理范围4B,其中,地理范围4A位于北京,地理范围4B位于南京。
则以上各地理范围的关联度为:
地理范围1的关联度为3;地理范围2的关联度为3;地理范围3A的关联度为3;地理范围4A的关联度为3;地理范围3B的关联度为1;地理范围4B的关联度为1。
若预置条件为关联度最高,则:
需根据关联度最高即为3的4个地理范围(地理范围1、地理范围2、地理范围3A、地理范围4A),确定与待查询地址相匹配的位置信息。
若预置条件为关联度由高至低选取前两个级别的关联度,则:
需分别根据关联度最高即为3的4个地理范围共同来确定与所述待查询地址相匹配的位置信息_1,和根据关联度次高即为1的2个地理范围来确定与所述待查询地址相匹配的位置信息_2。
其中,根据关联度最高即为3的4个地理范围共同来确定与所述待查询地址相匹配的位置信息1的方法,较优地,首先,在关联度相同的多个地理范围中,即关联度为3的4个地理范围中,查找该4个地理范围对应的地理词中级别最低的地理词(“中山公园”)对应的地理范围4A;再将查找到的地理范围4A确定为与所述待查询地址相匹配的位置信息_1。
根据关联度次高即为1的2个地理范围来确定与所述待查询地址相匹配的位置信息_2的方法同上,根据关联度为1的2个地理范围共同来确定与所述待查询地址相匹配的位置信息_2,较优地,在关联度为1的2个地理范围中,查找该2个地理范围对应的地理词中级别最低的地理词(“中山公园”)对应的地理范围4B;再将查找到的地理范围4B确定为与所述待查询地址相匹配的位置信息_2。
上述确定位置信息时所使用的地理范围如果是以独立地理词对应的地理范围时,直接以该地理范围来确定位置信息;如果是依赖地理词对应的地理范围,则需根据该依赖地理词及其从属的独立地理词一并确定位置信息。
需要说明的是,当预置条件为关联度最高时,此时得到的位置信息即为与待查询地址匹配度最高的一个,即最准确的一个位置信息。而当预置条件为关联度由高至低选取预置级别时,则得到的位置信息即为多个,也就是说,如果预置条件为选取关联度最高和次高两个级别时,则相应得到的位置信息即为与待查询地址匹配度最高和次高的两个位置信息,即最准确和次准确的两个位置信息;在具体实现中,还可以将得到的多个位置信息根据准确程度的高低进行排序,按照准确定由高至低的顺序进行展示。
在通过步骤105得到与待查询地址相匹配的位置信息后,可以将该位置信息通过地图中的直观显示或其他方式向用户展示;另外,为了使用户能够更加直观地获知查询结果,本步骤105中还可以进一步将关联度满足预置条件的地理范围中,将关联度相同的多个地理范围对应的地理词进行组合,得到匹配地址,并将匹配地址和与待查询地址相匹配的位置信息共同向用户展示。优选的,匹配地址与位置信息是相互对应的,比如,预置条件为关联度最高,则此时分别根据关联度最高的多个地理范围得到准确度最高的位置信息和匹配地址;若预置条件为选取关联度最高和次高两个级别,则此时分别根据关联度最高的多个地理范围得到准确度最高的位置信息_1和匹配地址_1,根据关联度次高的多个地理范围得到准确度次高的位置信息_2和匹配地址_2。
本实施例一的方案还包括在地址匹配的过程中,更新地址数据库的步骤。
在进行地址匹配过程中时,所述将待查询地址切分为多个地理词,在所述地址数据库中查询各地理词对应的地理范围,具体包括:
将待查询地址切分为多个地理词后,若切分后的多个地理词包含依赖地理词,则在地址数据库中查询在所述依赖地理词所从属的独立地理词下,是否有所述依赖地理词与地理范围的对应关系:
若查询到,则直接查询出对应的地理范围;
若没有查询到,则以该依赖地理词所从属的独立地理词为父节点,根据该父节点下已建立的其他依赖地理词与地理范围之间的对应关系,确定所述待查询地址切分后的依赖地理词对应的地理范围。具体地,可通过插值算法根据该父节点下已建立的其他依赖地理词与地理范围之间的对应关系,确定待查询地址切分后的依赖地理词对应的地理范围。所述插值算法是指:利用某一个函数和已知参数,计算出与该已知参数相关的其他参数。优选的,本实施例中使用的插值算法也不限于:利用与待计算的其他参数相邻的已知参数,来计算所述其他参数。
例如,待查询地址切分后包含的依赖地理词为“6号院”,其所从属的独立地理词为“明光路”,且以“明光路”为父节点时,已建立的依赖地理词与地理范围之间的对应关系包括:“4号院”、“5号院”、“7号院”和“8号院”分别与地理范围之间的对应关系,但没有建立“6号院”与地理范围之间的对应关系。为了确定“6号院”对应的地理范围,可以对已建立对应关系的“4号院”和“8号院”的地理范围进行差值算法处理,得到的结果作为“6号院”的地理范围,即在“4号院”的地理范围的中心点和“8号院”的地理范围的中心点之间取中间值,以该中间值作为“6号院”作为地理范围的中心点,再以“6号院”级别对应的范围值为半径确定以“明光路”为父节点时,“6号院”的地理范围。
较优地,为了进一步提高确定的“6号院”的地理范围的准确性,本实施例可以利用与“6号院”相邻的“5号院”和“7号院”的地理范围,来插值计算“6号院”的地理范围,其计算方式与上述针对“4号院”和“8号院”的地理范围进行差值算法的方式相同,此处不再赘述。
再例如,待查询地址切分后包含的依赖地理词为“路口北”,其所从属的独立地理词为“明光路”,且“明光路”为父节点时,已建立的依赖地理词与地理范围之间的对应关系包括:“路口西”与地理范围之间的对应关系,“路口东”与地理范围之间的对应关系,但没有建立“路口北”与地理范围之间的对应关系。为了确定“路口北”对应的地理范围,可以通过插值算法估计出路口北与地理范围之间的对应关系,即在“路口西”的地理范围的中心点和“路口西”的地理范围的中心点之间取中间值,将该中间值往北设定距离的点作为“路口北”的地理范围的中心点,进而再以“路口北”级别对应的范围值为半径确定以“明光路”为父节点时,“路口北”的地理范围。
在地址匹配过程中,当确定出依赖地理词对应的地理范围后,可以包括将该依赖地理词及其地理范围的对应关系添加到所述地址数据库中,以更新、丰富地址数据库中的内容。
需要说明的是,本发明实施例在进行地址匹配之前还可以进一步包括如下步骤:
将已知地址切分为多个地理词,并在地址数据库中建立地理词与该地理词所在地理范围的对应关系。
在地址数据库中建立的地理词与其地理范围的对应关系,具体是各已知地址切分后的地理词与该地理词在地图中对应的某个地理区域的对应关系。地址数据库中的一个地理词可以对应地图中某一个地理范围(区域范围),也可以对应多个地理范围。例如,假设“中山路”在北京和上海都有,则在地址数据库中,地理词“中山路”便对应两个地理范围。
优选的,通常会预先在地址数据库中设置好各地理词与该地理词所在地理范围的对应关系,当需要进行地址匹配时,便可以直接使用地址数据库中已建立的地理词与其地理范围的对应关系,而无需每次地址匹配时重新建立。
在地址数据库中建立地理词和地理范围对应关系的实现方式将在后续内容中进行详细说明。
本发明实施例一的方案,是以各地理词对应的地理范围的相交关系,来判断各地理范围的关联度,进而根据关联度确定待查询地址的位置信息。也就是说,某一地理范围与其它地理范围的相交关系越大,则说明该地理范围的关联度越高,其在地址匹配中匹配的准确性越高,从而,可以根据关联度足够高(即满足预置条件)的地理范围,确定出与待查询地址相匹配的位置信息。可见,利用各地理词所在地理范围的相交关系实现地址匹配,无需对已知地址进行穷举,能够有效提高地址匹配的准确性。
下面详细描述在地址数据库中建立地理词与该地理词所在地理范围的对应关系的过程。
如图2所示,为在地址数据库中建立地理词与地理范围的对应关系的示意图,包括以下步骤:
步骤201:将已知地址切分为多个地理词。
所述已知地址可以包括相关管理部门中记录的地址,还可以包括一般用户可能会感兴趣的大厦、小区、医院、学校等地标性建筑物或建筑群的地址。
在将已知地址切分为地理词时,可能存在以下两种情况:
第一种情况:多个已知地址切分后包括同一地理词,例如:已知地址“北京市中山公园”和“上海市中山公园”中包括同一地理词“中山公园”。再例如:已知地址“北京市图书大厦”、“中关村图书大厦”和“海淀区图书大厦”中包括同一地理词“图书大厦”。
第二种情况:一个地理词只出现在一个已知地址中,例如:地理词“海淀大厦”只出现在已知地址“北京市海淀区海淀大厦”中。
也就是说,在将大量的已知地址进行切分时,还同时记录相同的地理词切分得到的数量,对数量统计后可以发现有的地理词在切分完成后只出现1次,有的地理词会出现多次。
另外,切分得到的地理词可以是独立地理词,也可以是依赖地理词。
每个地理词(包括独立地理词和依赖地理词)都有其相应的级别,地理词与其级别的配置方式可以是:按照地理词所表示的行政区域级别来配置地理词的级别,地理词所表示的行政区域的级别越高,该地理词的级别越高。例如:以下地理词“北京”、“海淀区”、“中关村街道”所表示的行政区域级别依次降低,则“北京”、“海淀区”、“中关村街道”这三个地理词的级别也依次降低。
各地理词级别分别与不同的范围值相对应,对于不同级别的地理词,所对应的范围值也不同,优选的,级别越高的地理词对应的范围值越大,级别越低的地理词对应的范围值越小,通常而言,对于相同级别的地理词,所对应的范围值相同或接近。
例如,地理词“海淀区”的级别高于地理词“中关村”,因此,地理词“海淀区”级别对应的范围值大于地理词“中关村”级别对应的范围值,由于地理词的地理范围与该地理词的范围值相关,因此,地理词“海淀区”的地理范围反映在地图上的区域大于地理词“中关村”的地理范围反映在地图上的区域。
本实施例的方案中,为不同级别的地理词设定范围值的操作,可以是在为切分后的地理词配置级别时,根据地理词的级别为该地理词设定对应的范围值;也可以是当需要使用范围值时,根据地理词的级别来设定对应的范围值;等等。
步骤202:针对每个地理词,分别判断各地理词是独立地理词还是依赖地理词,对于独立地理词,执行步骤203;对于依赖地理词,执行步骤204。
由于独立地理词可以直接反映地图中的坐标,而依赖地址词不能单独描述某个位置,而需要与其所从属的独立地址词共同来反映地图中的位置信息,因此,对于步骤201划分得到地理词,要分别根据其是独立地理词和依赖地理词的不同而分别处理。
具体的,假设步骤201中划分后得到的多个地理词均为独立地理词,则对该多个地理词均采用步骤203确定其各自所在地理范围;若步骤201中划分后得到的多个地理词有独立地理词,也有依赖地理词时,则针对其中的独立地理词采用步骤203确定其各自所在地理范围,针对其中的依赖地理词采用步骤204确定其各自所在地理范围。
步骤203:直接确定独立地理词所在地理范围,并跳转至步骤205。
在本步骤的方案中,可以根据独立地理词在地图中的坐标,确定该独立地理词在地图中的地理范围。
在本实施例方案中,可以将独立地理词进一步划分为两种类型,一种类型是道路类型,另一种是非道路类型。道路类型的地理词反映在地图中的表现形式是道路或街道,如地理词“长安街”就是道理类型;非道路类型的地理词是相对于道路类地理词而言的,除道路类型的地理词外的其他独立地理词为非道路类型的地理词,如“海淀区”就是非道路类型的地理词。
在确定该独立地理词在地图中的地理范围时,首先判断该独立地理词是否是道路类型,并根据判断结果分别确定独立地理词的地理范围。
1、若独立地理词是道路类型的地理词:
按照该地理词的级别对应的范围值,以该地理词所在的道路段及该道路段两侧所述范围值内的地理信息,作为该地理词所在地理范围。
需要说明的是,道路类地理词所在的道路段是指:该地理词坐标所在的道路线段,即地图上包含该地理词坐标的路径段区域,该路径段可以是直线段也可以是曲线段。比如,地理词“苏州街”所在的道路段,即包含苏州街坐标的路径段,地理词“南京路”所在的道路段,即包含南京路坐标的路径段。
道路段两侧所述范围值内的地理区域是指:以道路段为中心,分别向其两侧扩展所述范围值,得到的地理区域。比如,某地理词所在的道路段为一条直线段,则向其两侧扩展所述范围值后,得到的地理区域为以该直线段为中心的一个矩形区域;若某地理词所在的道路段为一条曲线段,则向其两侧扩展所述范围值后,得到的地理区域为以该曲线段为中心向两侧扩展的区域。
例如,地理词是“平安大街”,该地理词的级别对应的范围值为10m,则“平安大街”的地理范围即以“平安大街”坐标所在道路段为中心,分别向其两侧扩展10m后形成的区域。
2、若独立地理词是非道路类型的地理词:
按照该地理词的级别对应的范围值,以该地理词的坐标为中心,距离该中心所述范围值内的地理区域,作为该地理词所在地理范围。
例如,地理词是“科技大厦”,该地理词的级别对应的范围值为10米,该地理词反映在地图上对应的地理范围是“科技大厦”的坐标为中心,距离该中心10米内的地理区域。
在确定地理词的地理范围时,因为有的地理词对应的地理范围并不唯一,在具体实践中,可以根据该地理词切分前的已知地址确定该地理词对应的地理范围是否唯一,而针对该地理词的各地理范围可以采用上述确定方法分别确定。具体的,根据该地理词切分前的已知地址确定该地理词对应的地理范围是否唯一的方法包括但不限于以下两种方式:
第一种方式:确定地理词切分前的各已知地址的坐标,是否相同或距离足够接近(如距离小于设定门限值等),若是,则确定各已知地址切分后的该地理词对应唯一的地理范围,否则,确定各已知地址切分后的该地理词对应多个地理范围。
例如:地理词是“科技大厦”,该地理词在切分前的已知地址为“北京市海淀区科技大厦”和“上海市普陀区科技大厦”。比较这两个已知地址的坐标,由于这两个已知地址的坐标距离比较远,因此,可确定地理词“科技大厦”对应的地理范围有两个。
第二种方式:确定地理词切分前的各已知地址的坐标,以每个已知地址的坐标为中心,判断该地理词级别对应的范围值内所构成的地理区域是否相同或相近似(如地理区域重合度较高),若是,表示该地理词对应唯一的地理范围;否则,表示该地理词对应多个地理范围。
例如:地理词是“科技大厦”,该地理词的级别对应的范围值为10米,地理词“科技大厦”在切分前的已知地址为“北京市海淀区科技大厦”和“上海市普陀区科技大厦”。比较以“北京市海淀区科技大厦”的坐标为中心,距离该中心10米内的地理区域_1和以“上海市普陀区科技大厦”的坐标为中心,距离该中心10米内的地理区域_2,由于地理区域_1和地理区域_2不相同且不相近似,因此,地理词“科技大厦”对应的地理范围有两个。
步骤204:根据该依赖地理词及其从属的独立地理词共同确定该依赖地理词的所在地理范围。
一般的依赖地理词是表示门牌号和方向的地理词,不能直接用于表示地图中的坐标,因此,依赖地理词只有与其从属独立地理词结合在一起才有意义。在步骤201切分地理词后,若某一地理词是依赖地理词,则从包括该依赖地理词的各个已知地址中确定其从属的独立地理词。当依赖地理词从属的独立地理词为多个时,取与该依赖地理词关系最近的独立地理词结合,确定其地理范围。
需要说明的是,确定依赖地理词地理范围的方法与步骤203中确定独立地理词地理范围的方法道理相同,所不同的是,需将依赖地理词与其从属的独立地理词结合,作为一体确定地理范围,详细的:
判断该依赖地理词与其从属的独立地理词结合后是否是道路类型;
若是,则按照该依赖地理词的级别对应的范围值,以该依赖地理词与其从属的独立地理词结合后所在的道路段,及该道路段两侧在所述范围值内的地理区域,作为该依赖地理词所在地理范围;
否则,按照该依赖地理词的级别对应的范围值,以该依赖地理词与其从属的独立地理词结合后的坐标为中心,距离该中心在所述范围值内的地理区域,作为该地理词所在地理范围。
即依赖地理词对应地理范围的确定方法具体步骤同步骤203,此处不多赘述。
另外还需要说明的是,当依赖地理词所从属的独立地理词有多个时,选取关系最近的独立地理词相结合,一并确定其地理范围,这里所述关系最近的独立地理词具体指与该依赖地理词的级别最接近、依赖关系最接近的独立地理词。
例如,某一依赖地理词是“5号院”,所在的已知地址为“海淀区明光路5号院”,则依赖地理词“5号院”的从属独立地理词可以是“海淀区”和“明光路”。这里,选取与依赖地理词“5号院”关系最近的独立地理词“明光路”结合,共同确定依赖地理词“5号院”的地理范围。
针对“海淀区明光路5号院”这一地址,依赖地理词“5号院”所从属的独立地理词为“明光路”,根据“明光路5号院”这一已知地址在地图中的坐标为中心,将依赖地理词“5号院”的级别对应的范围值为半径,确定依赖地理词“5号院”在对应的地理范围。
进一步的,本发明实施例所述方法还可以包括:
判断多个已知地址切分后是否包括同一地理词;是则:
在该多个已知地址中,获取各已知地址之间距离小于设定值的已知地址;
判断所述距离小于设定值的各已知地址是否均落入该同一地理词对应的地理范围内;若是,则将该地理范围作为该同一地理词所在地理范围;否则,扩大上述步骤203或204中的范围值,将扩大范围值后确定的地理范围作为该同一地理词所在地理范围。
特殊地,不论是针对独立地理词还是依赖地理词,都可能存在多个已知地址切分后包括同一地理词的情况。在实际建立地址数据库的过程中,即向地址数据库中添加地理词与其对应地理范围之间对应关系的过程中,还可以进一步包括判断多个已知地址切分后是否包括同一地理词的步骤,具体的,该判断的步骤可以是在建库过程中,每次对已知地址进行切分时都进行判断,即判断当前切分得到的地理词在地址数据库中是否已包含有相同的地理词;也可以是每隔一段时间进行判断,判断是否有多个已知地址经切分得到同一地理词;还可以是在地址数据库基本建完时进行判断,本发明实施例对此不做限制,只要在建立地址数据库时,经判断存在多个已知地址切分后包括同一地理词,则执行对该同一地理词对应地理范围的调整步骤,即在该多个已知地址中,获取各已知地址之间距离小于设定值的已知地址;判断所述距离小于设定值的各已知地址是否均落入该同一地理词对应的地理范围内;若否,则扩大用于确定地理范围的范围值,将扩大范围值后确定的地理范围作为该同一地理词所在地理范围。
这些包括同一地理词的多个已知地址,在地图上有的较临近,有的却相距较远。以独立地理词“人民医院”为例,可能有10个已知地址切分后包括同一地理词“人民医院”,其中有8个是北京的人民医院,而另外2个是天津的人民医院。因此,对于这一类地理词确定其对应的地理范围时,可以从包括同一地理词的多个已知地址中,获取各已知地址之间距离小于设定值的已知地址,并利用获取的各已知地址来确定该地理词对应的地理范围。
具体地,不论是针对独立地理词还是依赖地理词,本发明实施例都可采用聚类处理的方式从多个已知地址中,获取各已知地址之间距离小于设定值的已知地址,并利用获取的各已知地址来确定该地理词对应的地理范围。所述聚类处理是指将类似的对象划分成至少一个类别的过程,例如,在本步骤中,将已知地址之间距离接近的已知地址划分成一类的过程。
采用聚类处理的方式来确定地理词对应的地理范围的具体实现如下:
首先,确定包括同一地理词的多个已知地址的数量。
然后,若包括同一地理词的已知地址的数量为1时,根据该地理词是否为道路类型利用上述步骤203或步骤204所述方法确定该地理词的地理范围。
例如:只有已知地址“北京市人民医院”包括地理词“人民医院”时,若“人民医院”这一地理词的级别对应的范围值是500米,则可以以“北京市人民医院”的坐标(x1,y1)为圆心,500米为半径,在地图上相应的圆形区域作为地理词“人民医院”的地理范围。
若包括同一地理词的已知地址的数量大于1时,对包括该地理词的已知地址进行聚类处理,将该多个已知地址按相互之间距离的远近进行划分,将相互之间距离足够接近即小于设定值的已知地址划分为一类。本发明实施例中,经聚类处理得到各已知地址之间距离小于设定值的已知地址后,再进一步判断所述距离小于设定值的各已知地址是否均落入该同一地理词对应的地理范围内,若是,则将该地理范围作为该同一地理词所在地理范围;否则,扩大同一地理词级别对应的范围值,将扩大范围值后确定的地理范围作为该同一地理词所在地理范围。
例如,有10个已知地址包括独立地理词“人民医院”,其中3个已知地址为“北京市人民医院”,3个已知地址为“北京市人民医院南路”,3个已知地址为“北京市人民医院住院部”,1个已知地址为“天津市人民医院”,其中:“北京市人民医院”、“北京市人民医院南路”、“北京市人民医院住院部”在地图中的位置信息比较接近(即有9个已知地址之间距离小于设定值),而“天津市人民医院”与其它9个包含“人民医院”的已知地址之间距离较远,超出预定值。本实施例通过聚类方式,将9个距离小于设定值的已知地址用于确定地理词“人民医院”对应的地理范围。
以上述地理词“人民医院”为例,经聚类处理后,确定出9个在地图中距离接近的已知地址,以该9个已知地址的坐标为圆心,“人民医院”的级别对应的范围值为半径确定的圆形区域,判断是否该圆形区域均落入地理词“人民医院”利用上述步骤203确定的地理范围内。若均落入,则利用上述步骤203确定的地理范围即为“人民医院”的地理范围;若未全部落入,有超出的区域,则需要扩大步骤203中用于确定地理范围的范围值,使得上述9个圆形区域均能落入,则将扩大范围值后利用步骤203确定的地理范围作为该同一地理词“人民医院”所在地理范围。
上述是以独立地理词“人民医院”为例进行说明的,对于依赖地理词的处理与其类似,此处不再赘述。
步骤205:在地址数据库中建立地理词与该地理词所在地理范围的对应关系。
在步骤203中确定的是独立地理词的地理范围,在步骤204中确定的是依赖地理词的地理范围,下面分别针对独立地理词和依赖地理词对本步骤的实现方式进行说明。
1、当需要在地址数据库中添加独立地理词及地理范围对应关系时,也就是说在步骤203中新确定了一个独立地理词的地理范围时,步骤205的实现方式为:
当需添加独立地理词及其地理范围对应关系时,查询已建立的各独立地理词与地理范围之间的对应关系中,是否已有本次欲添加的所述独立地理词与所述地理范围的对应关系,若没有,则添加所述地理词与所述地理范围的对应关系。
不论在步骤203中确定的独立地理词是道路类型还是非道路类型,在每次为一个独立地理词确定一个地理范围后,都要在地址数据库中建立该独立地理词和地理范围的对应关系,但是,由于已知地址中有不少是重复的地址,重复地址中的独立地理词确定的地理范围相同,因此,在每次确定一个独立地理词以及对应的地理范围后,应首先判定地址数据库中是否与已建立相同的对应关系,进而再确定是否需要向地址数据库中添加对应关系。
假设在步骤203中确定了独立地理词“中关村”的地理范围,则在步骤205中,欲向地址数据库中添加“中关村”与其地理范围之间的对应关系的具体操作方式如下:
查询记录了地址数据库中已建立的独立地理词与地理范围之间的对应关系的hash(哈希)表,判断是否已有“中关村”这一独立地理词与地理范围的对应关系。
若hash表中没有记录“中关村”与任何地理范围的对应关系,表示之前还没有建立过“中关村”这一独立地理词与地理范围之间的对应关系,因此,建立本次确定的地理范围与“中关村”之间的对应关系,并记录在hash表中。
若hash表中已有记录“中关村”与某一地理范围的对应关系,表示之前已经建立过“中关村”这一独立地理词与某一地理范围之间的对应关系,则进一步判断已建立的“中关村”与某一地理范围之间的对应关系与当前在步骤205中确定的“中关村”与地理范围之间的对应关系是否相同。若相同,则无需重复建立相同的对应关系;若不相同,则建立当前在步骤203中确定的地理范围与“中关村”的对应关系,也就是将“中关村”对应的地理范围进行扩展。
特殊地,由于有些地理词有别名,即同一地理词有多种叫法,则需要建立每个别名的地理词与该地理词地理范围之间的对应关系,例如,若“长安街”又名“长安大街”,则需要分别建立“长安街”与地理范围间的对应关系,以及“长安大街”与地理范围间的对应关系。以便于用户在进行地址查询时,根据同一地理词的多种叫法都能进行地址查询。
另外,除了上述地理词别名的特殊情况外,在实际应用中,在进行地址匹配时,用户查询公交站点的情况非常多,为避免对公交站点的处理出现遗漏、差错等,本实施例在地址数据库中建立地理词与该地理词所在地理范围的对应关系时,对表示公交站点的地理词进行特殊处理,即:若对已知地址切分后得到的地理词为公交站点,则直接将在步骤203或步骤204中确定的表示公交站点的地理词及其地理范围的对应关系添加在地址数据库中。
上述以“中关村”这一非道路类型的地理词为例说明本实施例中建立独立地理词与确定的地理范围之间的对应关系的方案,若在步骤203中确定的是道路类型的地理词,也可以按照上述方式在地址数据库中建立对应关系。
2、当需要在地址数据库中添加依赖地理词及地理范围对应关系时,也就是说在步骤204中新确定了一个依赖地理词以及从属的独立地理词的地理范围时,步骤205的实现方式为:
当需添加依赖地理词及其地理范围对应关系时,将该依赖地理词从属的独立地理词作为父节点,查询该父节点下已建立的各依赖地理词与地理范围之间的对应关系中,是否已有本次欲添加的所述依赖地理词与所述地理范围的对应关系,若没有,则在所述父节点下添加所述依赖地理词与所述地理范围的对应关系。
针对依赖地理词建立对应关系的做法与针对独立地理词的做法相似,假设在步骤204中确定了依赖地理词“5号院”以及其从属的独立地理词“明光路”对应的地理范围时,建立依赖地理词与地理范围之间的对应关系的具体方式为:
“5号院”从属的独立地理词为“明光路”,则以“明光路”为父节点,查询“明光路”下已建立依赖地理词与地理范围之间的对应关系中,是否已有“5号院”对应的地理范围。
若有,则进一步判断已建立的“5号院”对应的地理范围与步骤204中确定的“5号院”的地理范围是否相同,若相同,则无需重复建立相同的对应关系;若不相同,则在“明光路”这一父节点下建立本次在步骤204中确定的地理范围与“5号院”的对应关系。
若没有,则在“明光路”这一父节点下建立步骤204中确定的地理范围与“5号院”的对应关系。
特殊地,若“明光路”这一独立地理词对应多个地理范围,则分别根据“明光路”对应的每个地理范围与本次在步骤204中确定的“5号院”的地理范围之间的位置关系,确定包含步骤204中确定的“5号院”的地理范围的“明光路”对应的地理范围,以便在确定出的“明光路”对应的地理范围下,建立依赖地理词“5号院”及其地理范围的对应关系。假设“明光路”对应的地理范围_1包含步骤204中确定的“5号院”的地理范围,则以“明光路”作为父节点,在其地理范围_1内建立依赖地理词“5号院”和其地理范围之间的对应关系。
通过上述步骤201~步骤205的描述,在进行地址匹配之前,预先在地址数据库中建立了地理词与所在地理范围的对应关系,后续可以利用地址数据库中建立所述对应关系,响应用户的地址匹配请求。
需要说明的是,本实施例是以先判断地理词是否是独立地理词,再判断独立地理词是否是道路类型的顺序来实现的,实际应用中不限于先判断地理词是否是道路类型,后判断地理词是否是独立地理词的顺序来实现。
在建立地理词与该地理词在地图中地理范围的对应关系后,就可以进行地址匹配操作,下面通过具体的实例来说明地址匹配操作的过程。
实例一:
第一步:接收用户输入的待查询地址为“北京市海淀区苏州街3号大恒科技大厦”。
第二步:对该待查询地址进行切分后得到以下地理词:“北京市”/城市、“海淀区”/区县、“苏州街”/道路、“3号”/门牌、“大恒科技大厦”/兴趣点(PointofInterest,POI)。其中,“北京市”、“海淀区”、“苏州街”、“3号”、“大恒科技大厦”的级别依次降低。
第三步:分别确定每个地理词对应的所有地理范围。假设:
独立地理词“北京市”对应地理范围1;
独立地理词“海淀区”对应地理范围2;
独立地理词“苏州街”对应地理范围3;
以独立地理词“苏州街”为父节点,依赖地理词“3号”对应地理范围4;
“大恒科技大厦”对应地理范围5。
第四步:由于地理范围2位于地理范围1内,地理范围3位于地理范围2内,地理范围4位于地理范围3内,地理范围5位于地理范围4内,也就是说,与地理范围1相交的其他地理范围对应的地理词数量为4,即地理范围1的关联度为4,地理范围2的关联度为4,地理范围3的关联度为4,地理范围4的关联度为4,地理范围5的关联度为4。假设关联度满足预置条件是指:关联度不小于3,则可以认为上述5个地理范围都满足预置条件。
第五步:由于满足预置条件的5个地理范围的关联度相同,则可以取其中对应级别最低的地理词的地理范围,即以独立地理词“大恒科技大厦”对应的地理范围5,来确定“北京市海淀区苏州街3号大恒科技大厦”的查询结果。
本实例的显示结果可以如图3(a)、图3(b)、图3(c)和图3(d)所示,图3(a)中地理范围1圈住的区域表示地理词“北京市”对应的地理范围在地图中的展示结果,其中A标识点表示地理词“北京市”对应的地理范围的中心点;图3(b)中地理范围2圈住的区域表示地理词“海淀区”对应的地理范围在地图中的展示结果,其中A标识点表示地理词“海淀区”对应的地理范围的中心点;图3(c)中地理范围3圈住的区域表示地理词“苏州街”对应的地理范围在地图中的展示结果,其中A标识点表示地理词“苏州街”对应的地理范围的中心点,B标识点表示地理词“苏州街”所在道路段的中心点;图3(d)中地理范围5圈住的区域表示以地理词“大恒科技大厦”对应的地理范围在地图中的展示结果,其中A标识点表示地理词“大恒科技大厦”对应的地理范围的中心点。
较优地,在展示地址匹配的结果时,还可以进一步以“大恒科技大厦”为父节点,判断地址数据库中是否有该父节点下的依赖地理词与地理范围的对应关系,若有,则进一步判断依赖地理词对应的地理范围是否位于地理范围5内,若有,则表示该依赖地理词对应的地理范围是与已完成的地址匹配结果相关度很高的地理范围,可以一并向用户展示。例如,假设地址数据库中有以“大恒科技大厦”为父节点,依赖地理词“北门”对应的地理范围6,则可以将该地理范围6中心点以B标识点向用户展示。
实例二:
第一步:接收用户输入的待查询地址为“北京市海淀区苏州街3号大恒科技大厦”。
第二步:对该待查询地址进行切分后得到以下地理词:“北京市”/城市、“海淀区”/区县、“苏州街”/道路、“3号”/门牌、“大恒科技大厦”/兴趣点(PointofInterest,POI),其中,“北京市”、“海淀区”、“苏州街”、“3号”、“大恒科技大厦”的级别依次降低。
第三步:分别确定每个地理词对应的所有地理范围,假设在北京市海淀区和朝阳区都有大恒科技大厦。
独立地理词“北京市”对应地理范围1;
独立地理词“海淀区”对应地理范围2;
独立地理词“苏州街”对应地理范围3;
以独立地理词“苏州街”为父节点,依赖地理词“3号”对应的地理范围4;
“大恒科技大厦”对应地理范围5和地理范围6,其中,位于海淀区的大恒科技大厦对应地理范围5,位于朝阳区的大恒科技大厦对应地理范围6。
第四步:地理范围2位于地理范围1内,地理范围3位于地理范围2内,地理范围4位于地理范围3内,地理范围5位于地理范围4内,地理范围6位于地理范围1内,但与地理范围2~地理范围4不相交。也就是说,地理范围1的关联度为4,地理范围2的关联度为4,地理范围3的关联度为4,地理范围4的关联度为4,地理范围5的关联度为4,地理范围6的关联度为1。假设关联度满足预置条件是指:关联度不小于3,则需根据关联度均为4的地理范围1、地理范围2、地理范围3、地理范围4和地理范围5来确定与待查询地址相匹配的位置信息。
第五步:由于地理范围1、地理范围2、地理范围3、地理范围4和地理范围5的相关度都为4,则可以取其中对应级别最低的地理词对应的地理范围(即地理范围5),作为待查询地址“北京市海淀区苏州街3号大恒科技大厦”的查询结果。进一步地,将关联度相同的多个地理范围对应的地理词(北京市、海淀区、苏州街、3号、大恒科技大厦)进行组合,得到匹配地址。