地址匹配方法、装置、设备及存储介质与流程

文档序号:19943591发布日期:2020-02-14 23:32阅读:330来源:国知局
地址匹配方法、装置、设备及存储介质与流程
本发明涉及地理信息处理
技术领域
,尤其涉及一种地址匹配方法、装置、设备及存储介质。
背景技术
:地址匹配(address-matching),又称为地理编码(geo-coding),是将文字性的描述地址与其空间的地理位置坐标建立起对应关系的过程。目前的地址匹配主要采用基于相似度的方式进行匹配。基于相似度的地址匹配简要过程为:将文字性描述的地址进行地址元素的拆分,对拆分得到的每一级地址元素逐级与地址数据库中的数据通过相似度算法进行匹配,最后用最高相似度对应的数据来匹配这个地址。基于相似度的地址匹配,地址匹配效率较低。技术实现要素:本发明实施例提供一种地址匹配方法、装置、设备及存储介质,能够提高地址匹配效率。一方面,本发明实施例提供了一种地址匹配方法,方法包括:获得待匹配的地址信息;将地址信息按照九级地址结构进行划分;确定所划分得到的前七级地址对应的经度和纬度;根据经度和纬度,对前七级地址进行地址匹配;根据所划分得到的后两级地址的名称,对后两级地址进行地址匹配;根据与前七级地址匹配的地址以及与后两级地址匹配的地址,确定与地址信息匹配的地址。另一方面,本发明实施例提供了一种地址匹配装置,装置包括:获得模块,用于获得待匹配的地址信息;划分模块,用于将地址信息按照九级地址结构进行地址信息划分;确定模块,用于确定所划分得到的前七级地址对应的经度和纬度;第一匹配模块,用于根据经度和纬度,对前七级地址进行地址匹配;第二匹配模块,用于根据所划分得到的后两级地址的名称,对后两级地址进行地址匹配;第三匹配模块,用于根据与前七级地址匹配的地址以及与后两级地址匹配的地址,确定与地址信息匹配的地址。再一方面,本发明实施例提供一种地址匹配设备,设备包括:存储器和处理器;存储器用于存储可执行程序代码;处理器用于读取存储器中存储的可执行程序代码以执行本发明实施例提供的地址匹配方法。再一方面,本发明实施例提供一种计算机可读存储介质,其特征在于,计算机可读存储介质上存储有计算机程序指令;计算机程序指令被处理器执行时实现本发明实施例提供的地址匹配方法。本发明实施例的地址匹配方法、装置、设备及存储介质,通过经度和纬度对待匹配的地址信息的前七级地址进行地址匹配,通过名称对待匹配的地址信息的后两级地址进行地址匹配,能够提高地址匹配效率。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1示出了本发明实施例提供的地址匹配方法的流程示意图;图2示出了本发明实施例提供的地球的经纬度模型;图3示出了本发明实施例提供的地址匹配装置的结构示意图;图4示出了能够实现根据本发明实施例的地址匹配方法及装置的计算设备的示例性硬件架构的结构图。具体实施方式下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细描述。应理解,此处所描述的具体实施例仅被配置为解释本发明,并不被配置为限定本发明。对于本领域技术人员来说,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更好的理解。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。为了解决现有技术问题,本发明实施例提供了一种地址匹配方法、装置、设备及存储介质,来提高地址匹配效率。下面首先对本发明实施例提供的地址匹配方法进行介绍。如图1所示,图1示出了本发明实施例提供的地址匹配方法的流程示意图。地址匹配方法可以包括:s101:获得待匹配的地址信息。s102:将地址信息按照九级地址结构进行划分。s103:确定所划分得到的前七级地址对应的经度和纬度。s104:根据所确定的经度和纬度,对前七级地址进行地址匹配。s105:根据所划分得到的后两级地址的名称,对后两级地址进行地址匹配。s106:根据与前七级地址匹配的地址以及与后两级地址匹配的地址,确定与地址信息匹配的地址。在本发明的一个实施例中,九级地址结构为:省/市、市/区、县、镇/乡、社区/村、街道,楼、楼层和房间号。第一级地址为一级行政区划名称;第二级地址为二级行政区划名称;第三级地址为三级行政区划名称;第四级地址为四级行政区划名称;第五级地址为村区名称;第六级地址为街道巷名称;第七级为楼号名称;第八级为楼层名称;第九级为门牌号名称。一级行政区划名称指行政区划中直属中央政府管辖行政区,如省级行政区、直辖市、自治区、特别行政区等。示例:河北省、北京市和宁夏回族自治区、香港特别行政区。二级行政区划名称指行政区划直属一级行政管辖行政区,如地区、省会、地级市、自治州、盟等。示例:昌平区、承德市、石家庄市、阿坝州、锡林郭勒盟。三级行政区划名称指行政区划直属二级行政管辖行政区,如县、县级市、市辖区、自治县等。示例,遵化市、双滦区、丰宁满族自治县。四级行政区划名称指行政区划直属三级行政管辖行政区,如乡、镇、民族乡等。示例:万胜永乡、大阁镇、南关蒙古族乡。村区名称为由当地政府权威确定或已经约定俗称使用的自然村名称。示例:永安社区、白塔村。街道巷名称为由当地政府权威确定或已经约定俗称使用的街道巷名称。如:西直门内大街、西直门外大街、中关村北大街。示例性的,假设地址信息为:广东省深圳市南山区西丽镇平山村大学城街道101栋4楼402室。将该地址信息按照九级地址结构进行划分,得到该地址信息对应的九级地址如表1所示。表1第一级地址广东省第二级地址深圳市第三级地址南山区第四级地址西丽镇第五级地址平山村第六级地址大学城街道第七级地址101栋第八级地址4楼第九级地址402室确定该地址信息对应的九级地址的前七级地址对应的经度和纬度。结果如表2所示。表2地址级别地址名称纬度经度第一级地址广东省113.27270123.137955第二级地址深圳市114.06613422.548554第三级地址南山区113.93693622.538972第四级地址西丽镇114.00027122.599314第五级地址平山村113.97361322.590407第六级地址大学城街道113.97199922.589742第七级地址101栋113.97461922.590947在本发明的一个实施例中,确定待匹配的地址信息对应的九级地址的前七级地址对应的经度和纬度,可以通过各种地图(比如百度地图、搜狗地图、谷歌地图、腾讯地图和高德地图等等)的开放的用于确定纬度和经度的应用程序编程接口(applicationprogramminginterface,api)进行确定。地球的形状接近于一个球体,可以根据球面上两点的经度和纬度计算出这两点之间的最短弧长。图2示出了本发明实施例提供的地球的经纬度模型。图2中,ja为球面上a点的经度,wa为a点的纬度;jb为球面上b点的经度,wb为b点的纬度。o为球心。以地球中心为球心,z轴指向地球的北极,x轴指向子午面与赤道的焦点,y轴位于赤道面上且按右手系与x成90°夹角。建立空间三维立体坐标系。a点对应的三维空间坐标为:xa=r*cos(wa)*cos(ja),ya=r*cos(wa)*sin(ja),za=r*sin(wa)。r为地球半径。b点对应的三维空间坐标为:xb=r*cos(wa)*cos(ja),yb=r*cos(wa)*sin(ja),zb=r*sin(wa)。由两点间的距离公式可得:ab2=(xa-xb)2+(ya-yb)2+(za-zb)2。其中,ab为a点和b点两点间的直线距离。球面上的点满足x2+y2+z2=r2。即xa2+ya2+za2=r2,xb2+yb2+zb2=r2。进而得出ab2=2r2(1-cos(wa)*cos(wb)*cos(jb-ja)-sin(wa)*sin(wb))。又在三角形aob中,根据余弦定理可得:ab2=oa2+ob2-2*oa*ob*cos(∠aob)。推得:cos(∠aob)=1-(ab2/2r2)。根据弧长公式,推得a点和b点两点间的弧长sab=r*∠aob=r*arccos(cos(wa)cos(wb)cos(jb-ja)+sin(wa)sin(wb))。基于此,在本发明的一个实施例中,根据所确定的经度和纬度,对前七级地址进行地址匹配,可以包括:根据所确定的经度和纬度以及球面上两点间的弧长计算公式,对前七级地址进行地址匹配。在本发明的一个实施例中,根据所确定的经度和纬度以及球面上两点间的弧长计算公式,对前七级地址进行地址匹配,可以包括:将预设标准位置信息表中、距离所确定的经度和纬度对应的位置的最短弧长对应的位置,确定为与前七级地址匹配的地址。其中,预设标准位置信息表的表结构如表3所示。表3预设标准位置信息表中的部分表数据如表4所示。表4id字段名称值1address_1_lat23.1411742address_1_lng113.2724043address_2_lat22.5510134address_2_lng114.064531………13address_7_lat22.59186114address_7_lng113.97372915address_8_name4楼16address_9_name4-2在本发明的一个实施例中,可以利用如下java代码进行前七级地址进行地址匹配。publicstaticdoublegetdistance(doublelat1,doublelng1,doublelat2,doublelng2){doubleradlat1=rad(lat1);doubleradlat2=rad(lat2);doublea=radlat1-radlat2;doubleb=rad(lon1)-rad(lon2);doubles=2*math.asin(math.sqrt(math.pow(math.sin(a/2),2)+math.cos(radlat1)*math.cos(radlat2)*math.pow(math.sin(b/2),2)));s=s*earth_radius;s=s*1000;returns;}其中,上述java代码中,lng1第一个点经度,lat1第一点纬度;lng2第二点经度,lat2第二点纬度。rad函数为角度转弧度函数;math.asin为反正弦函数;math.sqrt为平方根函数;math.pow为求幂次方函数;math.cos为余弦函数;math.sin为正弦函数;earth_radius为地球半径;s的最终返回值即为第一个点和第二个点的弧长,且单位为米。在本发明的一个实施例中,lng1可以为对待匹配的地址信息按照九级地址结构进行划分后,所确定的前七级地址对应的经度;lat1可以为对待匹配的地址信息按照九级地址结构进行划分后,所确定的前七级地址对应的纬度。lng2和lat2为预设标准位置信息表中存储的经度和纬度。利用java代码进行前七级地址进行地址匹配,计算量较大,效率较低。基于此,在本发明的一个实施例中,可以利用结构化查询语言(structuredquerylanguage,sql)进行前七级地址进行地址匹配。基于此,在本发明的一个实施例中,将预设标准位置信息表中、距离所确定的经度和纬度对应的位置的最短弧长对应的位置,确定为与前七级地址匹配的地址,可以包括:利用结构化查询语言(structuredquerylanguage,sql),将预设标准位置信息表中、距离所确定的经度和纬度对应的位置的最短弧长对应的位置,确定为与前七级地址匹配的地址。示例性的,利用sql确定与前七级地址匹配的地址的sql语句如下:select*fromstandard_locationorderbyacos(sin(('.$lat.'*3.1415)/180)*sin((latitude*3.1415)/180)+cos(('.$lat.'*3.1415)/180)*cos((latitude*3.1415)/180)*cos(('.$lon.'*3.1415)/180-(longitude*3.1415)/180))*rasclimit1;其中,standard_location为预设标准位置信息表,'.$lat.'为从standard_location表中得到纬度,'.$lon.'为从standard_location表中得到经度,latitude和longitude分别为对待匹配的地址信息按照九级地址结构进行划分后,所确定的前七级地址对应的纬度和经度。acos为反余弦函数;sin为正弦函数;cos为余弦函数;r为地球半径;asc为对结果进行升级排列;limit1为查询后显示返回排在第一位的数据。通过上述sql语句即可查找出预设标准位置信息表中、距离所确定的经度和纬度对应的位置的最短弧长对应的位置。在本发明的一个实施例中,为了提高地址的匹配效率,可以在将预设标准位置信息表中、距离所确定的经度和纬度对应的位置的最短弧长对应的位置,确定为与前七级地址匹配的地址之前,还可以根据所确定的经度和纬度对预设标准位置信息表中的位置进行过滤。其中,根据所确定的经度和纬度对预设标准位置信息表中的位置进行过滤的sql语句如下:select*fromstandard_locationwherelatitude>'.$lat.'-xandlatitude<'.$lat.'+xandlongitude>'.$lon.'-xandlongitude<'.$lon.'+x。其中,x为过滤条件。可以理解的是,上述sql语句含义为:以所确定的前七级地址对应的纬度和经度为圆心,以x度为半径,筛选standard_location表中对于所确定的经度和纬度大于或小于x度范围内的经度和纬度。最终在进行地址匹配时,仅对筛选后的数据与所确定的经度和纬度进行匹配。进而能够提高地址匹配效率。在本发明的一个实施例中,还可以进一步的利用预设弧长对匹配的经度和纬度进行过滤。基于上述,本发明实施例提供的利用sql确定与前七级地址匹配的地址的sql语句如下:select*fromstandard_locationwherelatitude>'.$lat.'-xandlatitude<'.$lat.'+xandlongitude>'.$lon.'-xandlongitude<'.$lon.'+xandacos(sin(('.$lat.'*3.1415)/180)*sin((latitude*3.1415)/180)+cos(('.$lat.'*3.1415)/180)*cos((latitude*3.1415)/180)*cos(('.$lon.'*3.1415)/180-(longitude*3.1415)/180))*6380000<yasclimit1。其中,该语句中x的作用为:对预设标准位置信息表中的位置进行过滤;该语句中y的作用为:在sql执行的过程直接过滤掉弧长大于y所对应的经度和纬度。在经过经度和纬度匹配后,对于第八级地址和第九级地址,即后两级地址,可以直接根据后两级地址的名称,对后两级地址进行地址匹配。在本发明的一个实施例,根据所划分得到的后两级地址的名称,对后两级地址进行地址匹配,可以包括:将预设标准位置信息表中同时包括后两级地址的名称的位置,确定为与后两级地址匹配的地址。示例性的,sql语句如下:select*fromstandard_locationwherea.address_8_namelike‘%input.address_8_name%’anda.address_9_namelike‘%input.address_9_name%’。其中,input为待匹配的地址信息;input.address_8_name为待匹配的地址信息的第八级地址的名称;input.address_9_name为待匹配的地址信息的第九级地址的名称;%为sql语句中的通配符,代表一个或多个字符;like为sql的模糊匹配运算符。通过上述sql语句即可查找出预设标准位置信息表中、与待匹配的地址信息的后两级地址匹配的地址。在本发明的一个实施例,根据所划分得到的后两级地址的名称,对后两级地址进行地址匹配,可以包括:从后两级地址的名称中提取数字特征;将预设标准位置信息表中包括数字特征对应的位置,确定为与后两级地址匹配的地址。第一步,可以利用正则表达式从后两级地址的名称中提取数字特征。stringregex="[0-9]";patternp=pattern.compile(regex);matcheraddress_8_name_match=p.matcher(input.address_8_name);matcheraddress_9_name_match=p.matcher(input.address_9_name)。其中,regex代表正则表达式,[0-9]表示的含义为查找在0-9之间的字符。input为待匹配的地址信息;input.address_8_name为待匹配的地址信息的第八级地址的名称;input.address_9_name为待匹配的地址信息的第九级地址的名称。pattern为java.util.regex包下的一个类,用于创建一个正则表达式,也可以说创建一个匹配模式。matcher方法用于快速匹配字符串。示例性的,待匹配的地址信息为广东省深圳市南山区西丽镇平山村大学城街道101栋4楼402室。则input.address_8_name为4楼,input.address_9_name为402室。通过正则表达式regex="[0-9]和matcher方法匹配,提取出数字特征address_8_name_match为4;address_9_name_match为402。然后,将提取的数字特征与预设标准位置信息表中中的数据进行匹配。具体的sql语句如下:select*fromstandard_locationwherea.address_8_namelike‘%address_8_name_match%’anda.address_9_namelike‘%address_9_name_match%’。基于上述,本发明实施例提供的基于前七级的经度和纬度以及后两级地址的名称相似度进行地址信息匹配的sql语句如下:select*fromstandard_locationwherea.address_8_namelike‘%input.address_8_name%’anda.address_9_namelike‘%input.address_8_name%’andlatitude>'.$lat.'-xandlatitude<'.$lat.'+xandlongitude>'.$lon.'-xandlongitude<'.$lon.'+xandacos(sin(('.$lat.'*3.1415)/180)*sin((latitude*3.1415)/180)+cos(('.$lat.'*3.1415)/180)*cos((latitude*3.1415)/180)*cos(('.$lon.'*3.1415)/180-(longitude*3.1415)/180))*r<yasclimit1。基于上述,本发明实施例提供的基于前七级的经度和纬度以及后两级地址的名称中的数字特征的相似度进行地址信息匹配的sql语句如下:select*fromstandard_locationwherea.address_8_namelike‘%address_8_name_match%’anda.address_9_namelike‘address_9_name_match’andlatitude>'.$lat.'-xandlatitude<'.$lat.'+xandlongitude>'.$lon.'-xandlongitude<'.$lon.'+xandacos(sin(('.$lat.'*3.1415)/180)*sin((latitude*3.1415)/180)+cos(('.$lat.'*3.1415)/180)*cos((latitude*3.1415)/180)*cos(('.$lon.'*3.1415)/180-(longitude*3.1415)/180))*r<yasclimit1。本发明实施例的地址匹配方法,通过经度和纬度对待匹配的地址信息的前七级地址进行地址匹配,通过名称对待匹配的地址信息的后两级地址进行地址匹配,能够提高地址匹配效率。相比于现有技术,本发明实施例不单单能够对待匹配的地址信息的前七级地址进行匹配,还能够对待匹配的地址信息的后两级地址进行匹配,即能够对待匹配的地址信息进行完全匹配。与上述的方法实施例相对应,本发明实施例还提供一种地址匹配装置。如图3所示,图3示出了本发明实施例提供的地址匹配装置的结构示意图。地址匹配装置可以包括:获得模块301,用于获得待匹配的地址信息。划分模块302,用于将地址信息按照九级地址结构进行地址信息划分。确定模块303,用于确定所划分得到的前七级地址对应的经度和纬度。第一匹配模块304,用于根据所确定的经度和纬度,对前七级地址进行地址匹配。第二匹配模块305,用于根据所划分得到的后两级地址的名称,对后两级地址进行地址匹配。第三匹配模块306,用于根据与前七级地址匹配的地址以及与后两级地址匹配的地址,确定与地址信息匹配的地址。在本发明的一个实施例中,第一匹配模块304,具体可以用于:根据所确定的经度和纬度以及球面上两点间的弧长计算公式,对前七级地址进行地址匹配。在本发明的一个实施例中,第一匹配模块304,具体可以用于:将预设标准位置信息表中、距离所确定的经度和纬度对应的位置的最短弧长对应的位置,确定为与前七级地址匹配的地址。在本发明的一个实施例中,第一匹配模块304,具体可以用于:利用结构化查询语言sql,将预设标准位置信息表中、距离所确定的经度和纬度对应的位置的最短弧长对应的位置,确定为与前七级地址匹配的地址。在本发明的一个实施例中,本发明实施例提供的地址匹配装置还可以包括:过滤模块(图中未示出),用于根据所确定的经度和纬度对预设标准位置信息表中的位置进行过滤。在本发明的一个实施例中,第二匹配模块305,具体可以用于:将预设标准位置信息表中同时包括后两级地址的名称的位置,确定为后两级地址匹配的地址。在本发明的一个实施例中,第二匹配模块305,具体可以用于:从后两级地址的名称中提取数字特征;将预设标准位置信息表中包括所提取的数字特征对应的位置,确定为与后两级地址匹配的地址。本发明实施例图3所示的地址匹配装置的各部分细节与以上图1所示的本发明实施例的地址匹配方法类似,本发明实施例在此不再赘述。本发明实施例的地址匹配装置,通过经度和纬度对待匹配的地址信息的前七级地址进行地址匹配,通过名称对待匹配的地址信息的后两级地址进行地址匹配,能够提高地址匹配效率。相比于现有技术,本发明实施例不单单能够对待匹配的地址信息的前七级地址进行匹配,还能够对待匹配的地址信息的后两级地址进行匹配,即能够对待匹配的地址信息进行完全匹配。图4示出了能够实现根据本发明实施例的地址匹配方法及装置的计算设备的示例性硬件架构的结构图。如图4所示,计算设备400包括输入设备401、输入接口402、中央处理器403、存储器404、输出接口405、以及输出设备406。其中,输入接口402、中央处理器403、存储器404、以及输出接口405通过总线410相互连接,输入设备401和输出设备406分别通过输入接口402和输出接口405与总线410连接,进而与计算设备400的其他组件连接。具体地,输入设备401接收来自外部的输入信息,并通过输入接口402将输入信息传送到中央处理器403;中央处理器403基于存储器404中存储的计算机可执行指令对输入信息进行处理以生成输出信息,将输出信息临时或者永久地存储在存储器404中,然后通过输出接口405将输出信息传送到输出设备406;输出设备406将输出信息输出到计算设备400的外部供用户使用。也就是说,图4所示的计算设备也可以被实现为地址匹配设备,该地址匹配设备可以包括:存储有计算机可执行指令的存储器;以及处理器,该处理器在执行计算机可执行指令时可以实现结合图1至图3描述的地址匹配方法及装置。本发明实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现本发明实施例提供的地址匹配方法。需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(asic)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、rom、闪存、可擦除rom(erom)、软盘、cd-rom、光盘、硬盘、光纤介质、射频(rf)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。还需要说明的是,本发明中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本发明不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。以上所述,仅为本发明的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本发明的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1