Pagc_Normalize_Address — Für einen gegebenen Adressentext wird der zusammengesetzte Datentyp norm_addy
zurückgeben, der ein Suffix und ein Präfix für die Straße, einen normierten Datentyp, die Straße, den Straßennamen etc. enthält und diese einzelnen Attributen zuweist. Diese Funktion benötigt lediglich die "lookup data", die mit dem Tiger Geokodierer paketiert sind (Tiger Census Daten werden nicht benötigt). Benötigt die Erweiterung "address_standardizer".
norm_addy pagc_normalize_address(
varchar in_address)
;
Für einen gegebenen Adressentext wird der zusammengesetzte Datentyp norm_addy
zurückgeben, der ein Suffix und ein Präfix für die Straße, einen normierten Datentyp, die Straße, den Straßennamen etc. enthält und diese einzelnen Attributen zuweist. Dies ist der erste Schritt beim Geokodieren, der alle Adressen in eine standardisierte Postform bringt. Es werden keine anderen Daten, außer jenen die mit dem Geokodierer paketiert sind, benötigt.
Diese Funktion verwendet lediglich die verschiedenen Lookup-Tabellen "pagc_*", die mit tiger_gecoder vorinstalliert wurden und sich im Schema tiger
befinden. Es ist deshalb nicht nötig Tiger Census Daten oder sonstige zusätzliche Daten herunterzuladen um diese Funktion zu verwenden. Möglicherweise stellt sich heraus, dass Sie Lookup-Tabellen im Schema tiger
um weitere Abkürzungen und alternative Namensgebungen erweitern müssen.
Verwendet verschiedene Kontrolltabellen im Schema tiger
zum Normalisieren der Eingabeadressen.
Die Attribute des Objekttyps norm_addy
, die in dieser Reihenfolge von der Funktion zurückgegeben werden, wobei () für ein verbindliches Attribut und [] für ein optionales Attribut steht:
Bei Normalize_Address gibt es geringfügige Abweichungen beim Format und bei der Groß- und Kleinschreibung.
Verfügbarkeit: 2.1.0
This method needs address_standardizer extension.
(address) [predirAbbrev] (streetName) [streetTypeAbbrev] [postdirAbbrev] [internal] [location] [stateAbbrev] [zip]
Die native "standardaddr" der Erweiterung "address_standardizer" ist ein bisschen reichhaltiger als "norm_addy", da es für die Unterstützung internationaler Adressen (inklusive Länder) entworfen wurde. Die entsprechenden Attribute von "standardaddr" sind:
house_num,predir, name, suftype, sufdir, unit, city, state, postcode
Erweiterung: 2.4.0 die zusätzlichen Felder "zip4" und "address_alphanumeric" wurden zum Objekt "norm_addy" hinzugefügt.
address
ist eine Ganzzahl: Die Hausnummer
predirAbbrev
ist ein Textfeld variabler Länge: Ein Präfix für die Straßenrichtung, wie N, S, E, W etc. Wird durch die direction_lookup
Tabelle gesteuert.
streetName
varchar
Das Textfeld streetTypeAbbrev
mit variabler Länge beinhaltet eine abgekürzte Version der Straßentypen: z.B. St, Ave, Cir. Diese werden über die Tabelle street_type_lookup
kontrolliert.
Das Textfeld postdirAbbrev
mit variabler Länge beinhaltet Suffixe für die Abkürzungen der Straßenrichtung; N, S, E, W etc. Diese werden über die Tabelle direction_lookup
kontrolliert.
internal
ein Textfeld variabler Länge mit einer zusätzlichen Adressangabe, wie Apartment- oder Suitenummer.
location
ein Textfeld variabler Länge, üblicherweise eine Stadt oder eine autonome Provinz.
stateAbbrev
ein Textfeld variabler Länge mit dem zwei Zeichen langen Bundesstaat der USA. z.B. MA, NY, MI. Diese werden durch die Tabelle state_lookup
beschränkt.
Das Textfeld zip
mit variabler Länge enthält den 5-Zeichen langen Zip-Code. z.B. 02109
parsed
boolesche Variable - zeigt an, ob eine Adresse durch Normalisierung erstellt wurde. Die Funktion "normalize_address" setzt diese Variable auf TRUE, bevor die Adresse zurückgegeben wird.
zip4
die letzten 4 Zeichen des 9 Zeichen langen Zip-Codes. Verfügbarkeit: PostGIS 2.4.0.
address_alphanumeric
Vollständige Hausnummer, auch wenn sie Buchstaben wie bei "17R" enthält. Kann mit der Funktion Pagc_Normalize_Address besser geparst werden. Verfügbarkeit: PostGIS 2.4.0.
Beispiel für einen Einzelaufruf
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 (Stapelverarbeitung). Zurzeit gibt es Geschwindigkeitsprobleme bezüglich des Wrappers des postgis_tiger_geocoder für den address_standardizer. Dies wird hoffentlich in späteren Versionen behoben. Wenn Sie Geschwindigkeit für den Aufruf einer Stapelverarbeitung zur Erstellung von normaddy benötigen, können Sie diese Probleme umgehen, indem Sie die Funktion "standardize_address" des address_standardizer direkt aufrufen. Dies wird nachfolgend gezeigt und entspricht ungefähr der Aufgabe unter Normalize_Address wo Daten verwendet werden, die unter Geocode erstellt wurden.
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