地理编码系统设计与实现

郭会,宋关福,马柳青,王少华

(1 中国科学院地理科学与资源研究所,北京100101;2 中国科学院研究生院,北京 100039;3北京超图地理信息技术有限公司,北京,100085)

论文来源:中国测绘学会九届四次理事会暨2008年学术年会论文集

摘要:针对大部分的地理位置信息都采用文本方式进行描述,而非地理坐标,本文提出了地理编码关键技术和实现方法,主要包括地址标准化、地址匹配、地理编码量化等

关键词: 地理编码,地理信息系统,地址模型,地址标准化,量化

1 地理编码概述

地理编码也称地址匹配,是指将地址映射成地理坐标的过程,提供了一种把描述成文本地址的地理位置信息转换成地理坐标的方式[1]。计算机无法通过文字叙述直接找到目标位置,无法直接获取其具体的经纬度坐标。例如,用“北京市海淀区复兴路11 号 ”来表示中国中央电视台的位置,计算机无法仅从“北京市海淀区复兴路 11 号” 获得中央电视台的具体坐标位置。地理编码可以利用地址数据库来建立地址与地理坐标空间的对应关系[2]。地理编码是各种算法程序的集合,主要采用结构化的数据模型,将各种兴趣事件或者现象的文本地址与地址数据库进行匹配[3]。

随着 GIS 在人们的生产生活中的作用越来越重要,对于根据文本地址快速、准确的查找其地理坐标的需求日益明显。在互联网服务领域,基于位置的服务被越来越多的应用,采用地理编码技术,地图搜索引擎和地图服务网站的准确度和响应速度将得到提高(如图 1);在公共服务领域,紧急情况下获得的地址往往是不完整的、甚至是不准确的,而需要计算机系统快速、准确定位;SARS 期间,有关单位每天上报的新增病例信息中,也包括描述性住址,若要进行流行病学分析,就需要获取其坐标位置[0]。通过地理编码,可以实现原有信息系统和空间信息的融合,将日常的经济、社会、人文、历史、旅游、商业等一系列城市生活中的信息空间化,用于在空间信息支持下进行空间分析和决策应[2]。

2 地理编码设计与实现

地理编码系统流程如图 2 所示,主要包括地址标准化、地址匹配和地址量化三个关键步骤。为了实现这三个关键步骤,还需要相应的地址模型、地址词典、地址数据库以及相应的量化规则。

例如,要对“北京市海淀区复兴路 11号”地址进行地理编码,首先要进行地址切分、标准化,即转化为 “北京”(市名)、“市” (市级单位)、“海淀”(区名)、“区”(区级单位)、“复兴”(街道名)、“路”(街道单位)、 “11”(门牌号码)、“号”(门牌后缀)等结构化的、标准化的词组。然后,根据一定的地址匹配策略与GIS系统标准地址库中的地址信息进行比对,获得相匹配的地址记录集,并通过插值等方式获取一个对应的空间地理坐标值。最后,地理编码量化就是对地理编码过程的好坏程度进行数字化评价,将与“北京市海淀区复兴路 11 号”相匹配的一组地址,按照匹配程度由高到低的呈现给用户。

2.1 地址标准化

地址标准化,又称地址规范化,就是将一般形式的地址字符串转化为计算机能够理解的结构化的单词组[1]。地址字符串的转化(又称为分词)需要借助地址词典。中文地址词典可以从《中国地名用词库》(CPWORD)[4]中获取。在本系统中,地址词典可以根据地址数据库中的地址进行统计学习,生成地址词典。如要将“北京市海淀区”分解为“北京市”、“海淀区”,则需要地址词典中出现高频词“北京市”、“海淀区”。词组的结构化的组成方式就是地址模型,不同的国家和地区具有不同的地址表述方式,也就有不同的地址模型。大多数地址都是按照地址的层级关系来描述的(比如 “北京市海淀区复兴路 11 号”中“北京市” >“海淀区”>“复兴路”>“11 号”),我们可以构建基于层级地址的地址模型(Level Based Model, LBM )[5]。表 1 是本系统采用的中文城市地址的地址模型。

地址切分是地址标准化的关键。地址切分就是根据输入地址字符串、地址词典、地址模型,将地址分解为不同的词组。西文地址分解可以按照空格、标点等进行单词分割,中文地址分解需要借助地名语料库(地址词典)进行中文分词,中文地名分词可参看文献[4]。

地址切分后,需要对地址各个关键词进行标准化处理。(1)缩写和简写标准化。 “中科院”标准化为“中国科学院”、“发改委”标准化为“发展与改革委员会”等。(2)别名与别称标准化。 “鲁”标准化为“山东”、“沪”标准化为“上海”、“晋”标准化为“山西”。(3)少词或者多词标准化。 “北京海淀”、“北京市的海淀区”标准化为“北京市海淀区”[5]。

2.2 地址匹配

地址匹配就是将标准化后的地址各个元素与地址数据库中的各条记录按照一定的规则进行匹配,从而获得匹配记录的过程[1]。地址匹配的关键是对地址数据库的查询和比较。为了减少查询和比较次数,同时保证匹配的成功率和准确率,实现模糊匹配,较好的方法就是为地址数据库中的地址字段建立索引。根据不同的地址模型,可以对某个权重较高字段建立索引。如英文地址中对街道名称创建索引。建立索引后,减少了数据库的读取次数和比较次数,将地址匹配缩小在较小的范围内。

与此同时,由于用户输入地址存在错别字、同音字、未标准化等情况,为了实现模糊匹配,在创建索引时,还需要考虑各种语言的拼写习惯。中文地址的索引,可以采用汉语拼音首字母进行索引。例如,“北京”、 “宝鸡”均被索引为“BJ”,“河南”、“湖南”、 “海南”、“淮南”被索引为“HN”。(如图 3所示)。

在某些地址格式(如美国街道地址)中,门牌号码均匀分布于街道两侧。其街道左右两边分别为奇偶门牌号码[6]。根据具体的地址模型,可以对门牌号码进行插值处理,获得精确的匹配坐标点[1]。