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。
address
是一个整数:街道号码
predirAbbrev
是 varchar:道路的定向前缀,例如 N、S、E、W 等。这些通过 direction_lookup
表进行控制。
streetName
varchar
streetTypeAbbrev
varchar 街道类型的缩写版本:例如 St、Ave、Cir。这些通过 street_type_lookup
表进行控制。
postdirAbbrev
varchar 道路的定向后缀缩写,例如 N、S、E、W 等。这些通过 direction_lookup
表进行控制。
internal
varchar 内部地址,例如公寓或套房号码。
location
varchar 通常是城市或管辖省份。
stateAbbrev
varchar 两位字符的美国州。例如 MA、NY、MI。这些通过 state_lookup
表进行控制。
zip
varchar 5 位数邮政编码。例如 02109。
parsed
布尔值 - 表示地址是否通过规范化过程形成。 normalize_address 函数在返回地址之前将其设置为 true。
zip4
9 位邮政编码的后 4 位数字。可用性:PostGIS 2.4.0。
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