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.
The script builds a schema called tiger to house all the TIGER-related functions, reusable lookup data such as road type prefixes, suffixes, states, various control tables for managing data load, and skeleton base tables from which all the TIGER-loaded tables inherit.
Another schema called tiger_data is also created which houses all the census data for each state that the loader downloads from the Census site and loads into the database. In the current model, each set of state tables is prefixed with the state code e.g ma_addr, ma_edges etc with constraints to enforce only that state data. Each of these tables inherits from the tables addr, faces, edges, etc located in the tiger schema.
All the geocode functions only reference the base tables, so there is no requirement that the data schema be called tiger_data or that data can't be further partitioned into other schemas -- e.g. a different schema for each state, as long as all the tables inherit from the tables in the tiger schema.
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”.
|
|
|
If you are using the TIGER Geocoder (tiger_2010), you can upgrade the scripts using the accompanying upgrade_geocoder.bat / .sh scripts in extras/tiger. One major change between |
|
|
|
You can install the TIGER Geocoder with the PostgreSQL extension model. Refer to Section 2.4.1, “Tiger Geocoder Aktivering av din PostGIS-databas” for details. |
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.
The reverse_geocode function is useful for deriving the street address and cross streets of a GPS location.
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.
There are a couple other open source geocoders for PostGIS, that unlike the TIGER Geocoder have the advantage of multi-country geocoding support
Nominatim uses OpenStreetMap gazeteer formatted data. It requires osm2pgsql for loading the data together with PostgreSQL and PostGIS. It is packaged as a webservice interface and seems designed to be called as a webservice. Just like the TIGER Geocoder, it has both a geocoder and a reverse geocoder component. From the documentation, it is unclear if it has a pure SQL interface like the TIGER Geocoder, or if a good deal of the logic is implemented in the web interface.
GIS Graphy can utilize PostGIS and like Nominatim uses OpenStreetMap (OSM) data along with some other sources. It comes with a loader to load OSM data and similar to Nominatim is capable of geocoding not just US. Much like Nominatim, it runs as a webservice and relies on Java 1.5, Servlet apps, Solr. GisGraphy is cross-platform and also has a reverse geocoder among some other neat features.