standardize_address — 使用词典表、地名表和规则表将输入地址转换为 stdaddr 格式。
stdaddr standardize_address(
text lextab, text gaztab, text rultab, text address)
;
stdaddr standardize_address(
text lextab, text gaztab, text rultab, text micro, text macro)
;
使用词典表名称、地名表名称、规则表名称和地址,将输入地址转换为 stdaddr 格式。
变体 1:将地址作为单行输入。
变体 2:将地址作为两部分输入。一个 micro
包含标准邮政地址的第一行,例如 house_num street
,另一个 macro
包含标准邮政地址的第二行,例如 city, state postal_code country
。
可用性:2.2.0
此方法需要 address_standardizer 扩展。
使用 address_standardizer_data_us 扩展
CREATE EXTENSION address_standardizer_data_us; -- only needs to be done once
变体 1:单行地址。这对于非美国地址效果不佳
SELECT house_num, name, suftype, city, country, state, unit FROM standardize_address('us_lex', 'us_gaz', 'us_rules', 'One Devonshire Place, PH 301, Boston, MA 02109');
house_num | name | suftype | city | country | state | unit ----------+------------+---------+--------+---------+---------------+----------------- 1 | DEVONSHIRE | PLACE | BOSTON | USA | MASSACHUSETTS | # PENTHOUSE 301
使用与 tiger 地理编码器打包在一起的表。此示例仅在您安装了 postgis_tiger_geocoder
时有效。
SELECT * FROM standardize_address('tiger.pagc_lex', 'tiger.pagc_gaz', 'tiger.pagc_rules', 'One Devonshire Place, PH 301, Boston, MA 02109-1234');
为了便于阅读,我们将使用 hstore 扩展来转储输出 CREATE EXTENSION hstore; 您需要安装
SELECT (each(hstore(p))).* FROM standardize_address('tiger.pagc_lex', 'tiger.pagc_gaz', 'tiger.pagc_rules', 'One Devonshire Place, PH 301, Boston, MA 02109') As p;
key | value ------------+----------------- box | city | BOSTON name | DEVONSHIRE qual | unit | # PENTHOUSE 301 extra | state | MA predir | sufdir | country | USA pretype | suftype | PL building | postcode | 02109 house_num | 1 ruralroute | (16 rows)
变体 2:作为两部分地址
SELECT (each(hstore(p))).* FROM standardize_address('tiger.pagc_lex', 'tiger.pagc_gaz', 'tiger.pagc_rules', 'One Devonshire Place, PH 301', 'Boston, MA 02109, US') As p;
key | value ------------+----------------- box | city | BOSTON name | DEVONSHIRE qual | unit | # PENTHOUSE 301 extra | state | MA predir | sufdir | country | USA pretype | suftype | PL building | postcode | 02109 house_num | 1 ruralroute | (16 rows)