Detta kapitel dokumenterar funktioner som finns i mappen extras i PostGIS-källans tarballs och källförvar. Dessa är inte alltid paketerade med PostGIS binära utgåvor, men är vanligtvis PL/pgSQL-baserade eller standardskalskript som kan köras som de är.
Detta är en förgrening av PAGC-standardiseraren (originalkod för denna del var PAGC PostgreSQL Address Standardizer).
Address Standardizer är en enradig adressparser som tar en inmatad adress och normaliserar den baserat på en uppsättning regler som lagras i en tabell och hjälptabellerna lex och gaz.
Koden är inbyggd i ett enda PostgreSQL-tilläggsbibliotek som heter address_standardizer
som kan installeras med CREATE EXTENSION address_standardizer;.
Förutom address_standardizer-tillägget byggs en exempeldatautökning som heter address_standardizer_data_us
extensions, som innehåller gaz-, lex- och regeltabeller för amerikanska data. Detta tillägg kan installeras via: CREATE EXTENSION address_standardizer_data_us;
Koden för detta tillägg finns i PostGIS extensions/address_standardizer
och är för närvarande fristående.
För installationsanvisningar se: Section 2.3, “Installera och använda adresstandardiseraren”.
Parsern arbetar från höger till vänster och tittar först på makroelementen för postnummer, stat/provins, stad och tittar sedan på mikroelement för att avgöra om det handlar om ett husnummer, en gata, en korsning eller ett landmärke. För närvarande letar den inte efter landskod eller namn, men det kan införas i framtiden.
Antas vara USA eller CA baserat på: postnummer som USA eller Kanada stat/provins som USA eller Kanada annat USA
Dessa identifieras med hjälp av Perl-kompatibla reguljära uttryck. Dessa regex finns för närvarande i parseaddress-api.c och är relativt enkla att göra ändringar i vid behov.
Dessa identifieras med hjälp av Perl-kompatibla reguljära uttryck. Dessa regex finns för närvarande i parseaddress-api.c men kan flyttas till includes i framtiden för enklare underhåll.
Detta avsnitt listar PostgreSQL-datatyperna installerade av Address Standardizer-tillägget. Observera att vi beskriver casting-beteendet för dessa, vilket är mycket viktigt, särskilt när du utformar dina egna funktioner.
standardize_address
.
I det här avsnittet listas PostgreSQL-tabellformaten som används av address_standardizer för normalisering av adresser. Observera att dessa tabeller inte behöver namnges på samma sätt som det som hänvisas till här. Du kan ha olika lex-, gaz-, regeltabeller för varje land till exempel eller för din anpassade geokodare. Namnen på dessa tabeller skickas in i adresstandardiseringsfunktionerna.
Det paketerade tillägget address_standardizer_data_us
innehåller data för standardisering av amerikanska adresser.
En plpgsql-baserad geokodare som är skriven för att fungera med TIGER (Topologically Integrated Geographic Encoding and Referencing system) / Line and Master Address database export som släppts av US Census Bureau.
Geokodaren består av fyra komponenter: dataladdningsfunktionerna, adressnormaliseraren, adressgeokodaren och den omvända geokodaren.
Även om den är utformad specifikt för USA är många av koncepten och funktionerna tillämpliga och kan anpassas för att fungera med andra länders adresser och vägnät.
Skriptet bygger ett schema som kallas tiger
för att rymma alla tigerrelaterade funktioner, återanvändbara uppslagsdata som prefix, suffix och stater för vägtyper, olika kontrolltabeller för att hantera dataladdningen och skelettbaserade tabeller som alla tigerladdade tabeller ärver från.
Ett annat schema som kallas tiger_data
skapas också som innehåller alla folkräkningsdata för varje stat som laddaren hämtar från Census-webbplatsen och laddar in i databasen. I den nuvarande modellen har varje uppsättning delstatstabeller delstatskoden som prefix, t.ex. ma_addr
, ma_edges
etc. med begränsningar som endast gäller för dessa delstatsdata. Var och en av dessa tabeller ärver från tabellerna addr
, faces
, edges
, etc som finns i tiger-schemat
.
Alla geokodningsfunktioner refererar bara till bastabellerna, så det finns inget krav på att dataschemat ska heta tiger_data
eller att data inte kan delas upp i andra scheman - t.ex. ett annat schema för varje stat, så länge alla tabeller ärver från tabellerna i tiger-schemat
.
Anvisningar om hur du aktiverar tillägget i din databas och laddar data med hjälp av det finns på Section 2.4.1, “Tiger Geocoder Aktivering av din PostGIS-databas”.
![]() |
|
Om du använder tiger geocoder (tiger_2010) kan du uppgradera skripten med hjälp av de medföljande upgrade_geocoder.bat / .sh-skript i extras/tiger. En stor förändring mellan |
![]() |
|
Nytt i PostGIS 2.2.0 är stöd för Tiger 2015-data och att Address Standardizer ingår som en del av PostGIS. Nytt i PostGIS 2.1.0-utgåvan är möjligheten att installera tigergeokoder med PostgreSQL-tilläggsmodell om du kör PostgreSQL 9.1+. Hänvisa till Section 2.4.1, “Tiger Geocoder Aktivering av din PostGIS-databas” för detaljer. |
Pagc_Normalize_Address fungerar som en drop-in-ersättning för inbyggda Normalize_Address. Se Section 2.3, “Installera och använda adresstandardiseraren” för kompilerings- och installationsinstruktioner.
Design:
Målet med detta projekt är att bygga en fullt fungerande geokodare som kan bearbeta en godtycklig adressträng i USA och med hjälp av normaliserade TIGER-folkräkningsdata producera en punktgeometri och ett betyg som återspeglar platsen för den givna adressen och sannolikheten för platsen. Ju högre betygssiffra desto sämre resultat.
Funktionen reverse_geocode
, som introducerades i PostGIS 2.0.0, är användbar för att härleda gatuadress och tvärgator till en GPS-position.
Geokodaren ska vara enkel att installera och använda för alla som är bekanta med PostGIS och ska vara lätt att installera och använda på alla plattformar som stöds av PostGIS.
Den ska vara tillräckligt robust för att fungera korrekt trots formaterings- och stavfel.
Den bör vara tillräckligt utbyggbar för att kunna användas med framtida datauppdateringar eller alternativa datakällor med ett minimum av kodändringar.
![]() |
|
|
tiger_data
om inget schema har angetts.
county_all
, state_all
eller state code följt av county
eller state
.
tiger_data
om inget schema har angetts.
normalized_address
(addy) för varje plats och betyg. Ju lägre betyg desto mer sannolik är matchningen. Resultaten sorteras efter lägsta betyg först. Kan valfritt skicka in maximala resultat, standard är 10. Använder Tiger-data (edges, faces, addr), PostgreSQL fuzzy strängmatchning (soundex, levenshtein).
tiger_data-schema
. Varje delstatsskript returneras som en separat post.
tiger_data-schema
. Varje delstatsskript returneras som en separat post. Den senaste versionen stöder strukturella ändringar i Tiger 2010 och laddar även tabeller för census tract, block groups och blocks.
norm_addy-typ
som har vägsuffix, prefix och typ standardiserad, gata, gatunamn etc. uppdelat i separata fält. Den här funktionen fungerar bara med de uppslagsdata som medföljer tiger_geocoder (inget behov av tiger census data).
norm_addy-typ
som har vägsuffix, prefix och typ standardiserad, gata, gatunamn etc. uppdelat i separata fält. Denna funktion fungerar bara med uppslagsdata som paketerats med tiger_geocoder (inget behov av tiger census data). Kräver tillägget address_standardizer.
norm_addy
composite type-objekt och returnerar en vacker utskriftsrepresentation av det. Används vanligtvis tillsammans med normalize_address.
Det finns ett par andra geokodare med öppen källkod för PostGIS, som till skillnad från Tiger Geocoder har fördelen med stöd för geokodning i flera länder
Nominatim använder OpenStreetMap gazeteer-formaterade data. Det kräver osm2pgsql för att läsa in data, PostgreSQL 8.4+ och PostGIS 1.5+ för att fungera. Det är förpackat som ett webbtjänstgränssnitt och verkar utformat för att anropas som en webbtjänst. Precis som tigergekodern har den både en geokodare och en omvänd geokodarkomponent. Från dokumentationen är det oklart om det har ett rent SQL-gränssnitt som tigergekodern, eller om en hel del av logiken implementeras i webbgränssnittet.
GIS Graphy använder också PostGIS och som Nominatim arbetar med OpenStreetMap (OSM) data. Den levereras med en laddare för att ladda OSM-data och liknar Nominatim kan geokoda inte bara USA. Precis som Nominatim körs den som en webbtjänst och förlitar sig på Java 1.5, Servlet-appar, Solr. GisGraphy är plattformsoberoende och har också en omvänd geokodare bland några andra snygga funktioner.