standardize_address — 返回一個使用詞法(lex)、地名(gaz)和規則表(rule)的輸入地址的 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
,包含標準的郵政地址第一行,例如 門牌號碼 街道
,和一個 macro,包含標準的郵政地址第二行,例如 城市, 州 郵遞區號 國家
。
可用性: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)