地理编码需要参考数据(含有坐标的地址列)。基于参考数据,地理编码器主要完成下列三个方面的事情(图4-16)。
图4-16 Oracle Spatial地理编码的架构
1.解析输入地址
地理编码首先识别一个街道地址的各个组成部分,并把它们分割成可以识别的元素,如街道名称、街道类型、名牌号码、邮编和城市。Oracle Spatial的地理编码可以识别大量的不同国家和不同语言的地址格式。在示例数据中,表GC_PARSER_PROFILEAFS对各个国家的地址格式进行了说明。示例数据中只有一条记录,给出了美国的地址格式说明:
由于各个国家的语言、习惯不同,地址的表达方式也各不相同。为此,国际邮政组织对地址格式进行了官方定义,具体可以参考www.upu.int。
2.通过名称匹配查找地址
一旦地址被解析成可以识别的元素,地理编码就可以从街道名称列表中搜索出一个与给定地址最匹配的编码。这种搜索是模糊的,可以在一定程度上纠正拼写错误,也可以对不同的拼写方式进行转换匹配。对于一个地址不同的关键词,甚至是常见的拼写错误,被存储在参考数据的GC_PARSER_PROFILES表中。如果搜索找不到精确的结果,地理编码就会使用邮编或者城市名字。通过传递匹配模式参数,用户可以自定义是否对搜索结果予以接受。(www.xing528.com)
3.对发现的地址计算空间坐标
一旦合适的街道被定位,地理编码就需要把它转换成地理点。Oracle Spatial中使用的地理编码参考数据包含了每个街道两侧末尾的门牌号码。当输入的查询包含了门牌号码地址的时候,地理编码可以通过插补方法计算该门牌所对应的地理位置。当门牌与其沿路的距离之间有很好的对应关系时,结果将会相当准确;否则,结果将是近似的。一般而言,街道被当作线串,也就是实际街道的中线,Oracle地理编码就是在中线上对地址进行定位。
当输入的地址不完整的时候,Oracle对下列情况进行了处理:
(1)当输入地址中没有给出门牌号码的时候,地理编码将返回这条街道的中心。Oracle地理编码的参考数据存储了预先计算好的中间房子的位置。
(2)当在地址中没有给出街道信息或者给出的街道信息找不到的时候,地理编码返回邮编或城市编码。对于城市则返回城市中心的坐标。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。