Pagc_Normalize_Address — Dado um endereço em texto de uma rua, retorna um tipo composto norm_addy que não tem um sufixo, prefixo e tipo padronizado, rua, nome de rua etc. quebrado e, campos separados. Essa função irá funcionar com os dados lookup compactados com o tiger_geocoder (dados do censo tiger não são necessários). Requer a extensão address_standardizer.
norm_addy pagc_normalize_address(varchar in_address);
Dado um endereço em texto de uma rua, retorna um tipo composto norm_addy que não tem um sufixo, prefixo e tipo padronizado, rua, nome de rua etc. quebrado e, campos separados. Esse é o primeiro passo no processo de geocodificação para tornar todos os endereços normalizados no formato postal. Nenhum outro dado é requerido à parte do que está compactado com o geocoder.
Essa função utiliza as várias lookup tables pagc_* pré carregadas com o tiger_geocoder e localizadas no esquema tiger, então, você não precisa baixar os dados do censo tiger ou qualquer outro tipo de dados para utilizá-la. Talvez você ache necessário adicionar mais abreviações ou nomes alternativos para as lookup tables no esquema tiger.
Utiliza várias tables lookup de controle localizadas no esquema tiger para normalizar o endereço de entrada.
Campos no tipo de objeto norm_addy retornou pela função nessa ordem, onde () indica um campo requerido pelo geocoder, [] indica um campo opcional:
Existem pequenas variações no revestimento e formatação do Normalize_Address.
Disponibilidade: 2.1.0
This method needs address_standardizer extension.
(address) [predirAbbrev] (streetName) [streetTypeAbbrev] [postdirAbbrev] [internal] [location] [stateAbbrev] [zip]
O standardaddr natural da extensão address_standardizer é um pouco mais rico que norm_addy, já que foi desenvolvido para suportar endereços internacionais (incluindo países). Os campos equivalentes do standardaddr são:
house_num,predir, name, suftype, sufdir, unit, city, state, postcode
Enhanced: 2.4.0 norm_addy object includes additional fields zip4 and address_alphanumeric.
address é um inteiro: O número da rua
predirAbbrev is varchar: Prefixo direcional para rua como N, S, L, O etc. Esse são controlados usando a table direction_lookup.
streetName varchar
A versão varchar streetTypeAbbrev abreviada dos tipos de rua: ex: St., Av., Cir. Elas são controladas usando a tables street_type_lookup.
As direções varchar postdirAbbrev abreviadas N, S, L, O etc. Elas são controladas utilizando a table direction_lookup.
Varchar interno endereço interno como um apartamento ou número de suíte.
Varchar localização normalmente uma cidade ou província governante.
Os estados varchar stateAbbrev dos EUA de dois caracteres. ex: MA, NY, MI. Estes são controlados pela table state_lookup.
zip varchar 5-digit zipcode. e.g. 02109.
parsed booleana - indica se um endereço foi formado pelo processo normalizador. A função normalize_address coloca isso como verdade antes de retornar o endereço.
zip4 last 4 digits of a 9 digit ZIP Code. Availability: PostGIS 2.4.0.
address_alphanumeric Full street number even if it has alpha characters like 17R. Parsing of this is better using Pagc_Normalize_Address function. Availability: PostGIS 2.4.0.
Exemplo de chamada única
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
Batch call. Existem issues de velocidade com a forma que o postgis_tiger_geocoder empacota o address_standardizer. Elas serão solucionadas em edições posteriores. Para funcionar em volta delas, se você precisa de velocidade para geocodificação agrupada para gerar um normaddy em modo agrupado, você é instigado a usar a função address_standardizer standardize_address diretamente, como é mostrado abaixo, que é similar ao exercício que fizemos em Normalize_Address que usa os dados criados em 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