关于地理编码Geocoding

最近在做一些企业数据的地理编码地址匹配的工作,弄得焦头烂额,没时间研究写程序,想用arcgis的Geocoding模块来操作实现,也很麻烦。关键是即使这样实现了,误差也很大。

写程序的话,思路是按道路和村镇空间数据来匹配,先根据道路进行匹配,因为没有详细的门牌号数据,所以就只能在定好的道路两侧随机分布,如果没有道路的地址信息,就采用村镇范围或点位数据进行匹配,也是随机的分布在范围内。

如果用arcgis的Geocoding模块,也是用道路和村镇数据建立定位器,作为参考主题,当然道路和村镇名都是唯一的,然后再进行地址匹配,但问题比较大,一是系统自带的只有北美的数据,地址信息特点跟国内不同,二是不太支持中文,所以得先把地址信息中的道路和村镇信息进行提取,然后英文编码,同样的,道路和村镇主题也是英文编码,然后再匹配,工作量也很大。

相信灵图等地图服务提供商企业肯定有北京等大城市的详细的地址信息数据编码和数据库,如果他们能开放这样的服务就好了,会大大促进整个行业的信息共享。还有一家叫北京图信时代科技有限公司的公司,貌似提供这样的服务。

(转)

地理编码又称地址匹配,是在含地址的表格数据与相关主题之间建立联系,并为表格数据创建一个相应的点图层,即对表格数据进行空间定位。地理编码的过程是先对含地址的每个记录和带有地址属性的要素主题(参考主题)进行比较,如果找到匹配,参考主题上的地理坐标就被分配给相应的记录,这样,一个纯粹的只具有地址信息的表格数据文件就可以同时具有地理坐标信息,从而可以在地理信息系统中作为地图显示并进行进一步的分析。

 

1. 2 ArcGIS中的地理编码

目前常用的GIS软件都具备地理编码功能,ArcGISGeocodingMap InfoMapMarker,并且地理编码方式基本相同。在ArcGIS中地理编码前,首先要确定一个参考主题,并建立地理编码索引。地理编码索引是根据编码所用的地址类型确定反映地址信息的相关字段,如选择US Streets则需要确定反映右起始门牌、左起始门牌、右终止门牌、左终止门牌以及路名的字段,ArcGIS中以地址定位器的方式来表现地理编码索引。建立地理编码索引后,就可以对包含地址的数据表格进行地理编码。

 

ArcGIS中内置了很多常用的地址定位器,这些地址定位器根据参考主题的不同可以分成两种类型:基于道路的定位器和基于地块的定位器。基于道路的定位器通过道路名和门牌号码实现地址定位,在参考主题中每一个路段都具有道路名和起止门牌号码信息,在地理编码时,首先根据地址信息中的道路名找到参考主题中的相同名称路段(一般情况下有多个路段) ,然后根据地址信息中的门牌号及每个路段的起止门牌号码信息找到门牌号所在路段,最后根据门牌号及该路段的起止门牌号码信息进行内插确定该记录在该路段上的位置。基于地块的定位器是通过标识地块惟一性的信息进行地址定位的,在参考主题中每一地块都具有惟一的标识信息,这里的地块可以是行政区、邮政编码区、街坊等,根据地址中的标识信息,查找参考主题中具有相同标识的记录(地块) ,并定位到该地块中。

 

 ArcGIS中组合地址定位器存在的问题及解决方法

2. 1  国外的软件不完全适合中国

美国是地理编码应用最早、最广泛的国家,早在20世纪70年代就建立了全国的地理编码标准,并开发了通用的地理编码软件工具,成功地应用于TIGER 软件系统,在历次全国人口普查统计中发挥了巨大作用。虽然国外地址编码技术已经很成熟,有了成型的应用产品,但无论是TIGER 软件系统,还是Map Info公司开发的MapMarker,或是ESR I公司的Geocoding都不是十分适合中国的国情。

我们不能直接使用国外开发的这些成熟的地理编码软件的主要原因有:

1)中国现有的地名、地址体系异常复杂,地名混乱、无序,缺乏规律性和统一的标准;

2)国外特别是美国公司的产品都是根据美国街道、街区的特色开发出来适合美国的地址匹配技术,而且这些公司开发的地理编码软件中附带大量美国的地址数据库和地图;

3)国外的软件一般对英文的支持很好,但是对中文的支持有时会不尽如人意,有些功能需要打补丁才能支持中文。

 

2. 2 ArcGIS中地址定位器存在的问题

ArcGIS虽然内置了很多地址定位器,而且其中一些地址定位器的地址模型也基本能符合国内地址定位的要求,但是能够把这些零散的地址定位器组合到一起的组合定位器却不能支持中文。假如需要建立一个地址定位模型,其中需要实现两种类型地址信息的定位,一种是街道+门牌号,另一种是小区名。据此首先根据街道主题能够提供的信息创建一个类型是US Streets的地址定位器,然后根据小区主题创建一个类型是Single Field的地址定位器。这样就可以分别使用这两个定位器,来定位这两种类型的地址,但是当两个定位器合在一起创建组合定位器的时候,我们发现不管输入什么地址,定位器给出的结果都是不能匹配的。

 

但是综合使用多种定位器是提高地址匹配准确性的策略之一 ,而且在实际使用中一个地区的地址很少能够用一种形式的定位器全部涵盖。有两种方法来解决这个问题,一种是在程序里面对每个地址循环使用不同的地址定位器匹配,这涉及到匹配拟合度的比较,而且需要设置匹配的域值,然后最后决定匹配的结果,这个过程实现起来比较复杂;另一个方法就是建立一个组合定位器,这需要解决当前版本不能支持中文的问题。

 

既然组合定位器能够支持英文,就设法把中文的地址匹配转化成英文的地址匹配。

原文地址:https://www.cnblogs.com/luspa/p/1636049.html