名称

Pagc_Normalize_Address — 给定一个文本街道地址,返回一个复合 norm_addy 类型,其中包含标准化的道路后缀、前缀和类型,街道、街道名称等被分解成单独的字段。此函数仅使用与 tiger_geocoder 打包的查找数据(不需要 tiger 人口普查数据)。需要 address_standardizer 扩展。

概要

norm_addy pagc_normalize_address(varchar in_address);

描述

给定一个文本街道地址,返回一个复合 norm_addy 类型,其中包含标准化的道路后缀、前缀和类型,街道、街道名称等被分解成单独的字段。这是地理编码过程中的第一步,将所有地址转换为标准化的邮政格式。除了与地理编码器打包在一起的内容之外,不需要其他数据。

此函数仅使用与 tiger_geocoder 预加载并位于 tiger 架构中的各种 pagc_* 查找表,因此您不需要下载 tiger 人口普查数据或任何其他附加数据来使用它。您可能需要在 tiger 架构中的各种查找表中添加更多缩写或替代名称。

它使用位于 tiger 架构中的各种控制查找表来规范化输入地址。

此函数返回的 norm_addy 类型对象中的字段,按以下顺序排列,其中 () 表示地理编码器所需的字段,[] 表示可选字段

Normalize_Address 相比,大小写和格式略有不同。

可用性:2.1.0

此方法需要 address_standardizer 扩展。

(address) [predirAbbrev] (streetName) [streetTypeAbbrev] [postdirAbbrev] [internal] [location] [stateAbbrev] [zip]

address_standardizer 扩展的本机 standardaddr 目前比 norm_addy 更丰富,因为它旨在支持国际地址(包括国家)。standardaddr 等效字段为

house_num,predir, name, suftype, sufdir, unit, city, state, postcode

增强:2.4.0 norm_addy 对象包含附加字段 zip4 和 address_alphanumeric。

  1. address 是一个整数:街道号码

  2. predirAbbrev 是 varchar:道路的方向前缀,例如 N、S、E、W 等。这些使用 direction_lookup 表进行控制。

  3. streetName varchar

  4. streetTypeAbbrev varchar 街道类型的缩写版本:例如 St、Ave、Cir。这些使用 street_type_lookup 表进行控制。

  5. postdirAbbrev varchar 道路方向后缀的缩写 N、S、E、W 等。这些使用 direction_lookup 表进行控制。

  6. internal varchar 内部地址,例如公寓或套房号码。

  7. location varchar 通常是城市或管辖省份。

  8. stateAbbrev varchar,两位字符的美国州缩写。例如 MA、NY、MI。这些由 state_lookup 表控制。

  9. zip varchar,5 位数的邮政编码。例如 02109。

  10. parsed boolean - 表示地址是否由规范化过程形成。normalize_address 函数在返回地址之前将其设置为 true。

  11. zip4 9 位数邮政编码的后 4 位。可用性:PostGIS 2.4.0。

  12. address_alphanumeric 完整的街道号码,即使它包含字母字符,例如 17R。使用 Pagc_Normalize_Address 函数可以更好地解析此号码。可用性:PostGIS 2.4.0。

示例

单个调用示例

SELECT addy.*
FROM pagc_normalize_address('9000 E ROO ST STE 999, Springfield, CO') AS addy;


 address | predirabbrev | streetname | streettypeabbrev | postdirabbrev | internal  |  location   | stateabbrev | zip | parsed
---------+--------------+------------+------------------+---------------+-----------+-------------+-------------+-----+--------
    9000 | E            | ROO        | ST               |               | SUITE 999 | SPRINGFIELD | CO          |     | t

批量调用。目前,postgis_tiger_geocoder 包装 address_standardizer 的方式存在速度问题。这些问题有望在以后的版本中得到解决。为了解决这些问题,如果您需要批量地理编码的速度,请调用生成 normaddy 的批量模式,建议您直接调用 address_standardizer 的 standardize_address 函数,如下所示,这与我们在 Normalize_Address 中所做的类似,该函数使用在 Geocode 中创建的数据。

WITH g AS (SELECT address, ROW((sa).house_num, (sa).predir, (sa).name
  , (sa).suftype, (sa).sufdir, (sa).unit , (sa).city, (sa).state, (sa).postcode, true)::norm_addy As na
 FROM (SELECT address, standardize_address('tiger.pagc_lex'
       , 'tiger.pagc_gaz'
       , 'tiger.pagc_rules', address) As sa
        FROM addresses_to_geocode) As g)
SELECT address As orig, (g.na).streetname, (g.na).streettypeabbrev
 FROM  g;

 orig                                                |  streetname   | streettypeabbrev
-----------------------------------------------------+---------------+------------------
 529 Main Street, Boston MA, 02129                   | MAIN          | ST
 77 Massachusetts Avenue, Cambridge, MA 02139        | MASSACHUSETTS | AVE
 25 Wizard of Oz, Walaford, KS 99912323              | WIZARD OF     |
 26 Capen Street, Medford, MA                        | CAPEN         | ST
 124 Mount Auburn St, Cambridge, Massachusetts 02138 | MOUNT AUBURN  | ST
 950 Main Street, Worcester, MA 01610                | MAIN          | ST

另请参阅

Normalize_AddressGeocode