This chapter documents features found in the extras folder of the PostGIS source tarballs and source repository. These are not always packaged with PostGIS binary releases, but are usually PL/pgSQL based or standard shell scripts that can be run as is.
Essa é uma forquilha do padronizador PAGC (código original para essa porção era Padronizador de endereço PAGC PostgreSQL).
O padronizador de endereços é uma única linha de análise sintática que pega um endereço de entrada e o normaliza baseado em um conjunto de regras armazenado em uma table e helper lex e gaz tables.
O código é construído em uma uńica biblioteca de extensão chamada address_standardizer a qual pode ser instalada com CREATE EXTENSION address_standardizer;. Juntamente com a extensão address_standardizer, uma extensão amostra de dados chamada address_standardizer_data_us é construída, a qual contém gaz, lex e regras tables para dados dos EUA. Essas extensões podem ser instaladas via: CREATE EXTENSION address_standardizer_data_us;
O código para esta extensão pode ser encontrado no PostGIS extensions/address_standardizer e está atualmente autocontido.
Para instruções de instalação consulte: Section 2.3, “Instalando e usando o padronizador de endereço”.
O analisador sintático funciona da direita para a esquerda observando primeiramente os macro elementos para CEP, estado/província, cidade e depois observando os micro elementos para determinar se estamos lidando com uma casa numerada em uma rua ou intersecção ou ponto de referência. Ele normalmente não procura pelo código ou nome do país, mas isso poderia ser introduzido no futuro.
Suposto de ser EUA ou CA com base em: CEP como EUA ou estado/província do Canadá como EUA ou Canadá outro EUA
Esses são reconhecidos utilizando expressões Perl compatíveis. Esses regexs estão atualmente no parseaddress-api.c e são relativamente fáceis de alterar, caso seja necessário.
Esses são reconhecidos utilizando expressões Perl compatíveis. Esses regexs estão atualmente no parseaddress-api.c e são relativamente fáceis de alterar, caso seja necessário.
Essa seção lista os tipos de dados PostgreSQL instalados pela extensão do padronizador de endereço. Note que descrevemos o comportamento de distribuição de papeis desses que são bastante importantes especialmente quando desenvolvem suas próprias funções.
standardize_address função.
Esta seção lista os formatos table utilizados pelo address_standardizer para normalização de endereços. Notar que essas tables não precisam ser nomeadas da mesma maneira que são referidas aqui. Você pode ter diferentes lex, gaz, regras tables para cada país por exemplo ou para seu geocoder de costume. Os nomes dessas table passam pelas funções do padronizador de endereços.
A extensão compactada address_standardizer_data_us contém dados para os padronizadores de endereço dos EUA.
A plpgsql based geocoder written to work with the TIGER (Topologically Integrated Geographic Encoding and Referencing system ) / Line and Master Address database export released by the US Census Bureau.
Existem quatro componentes do geocoder: as funções do carregador de dados, o normalizador de endereço, o endereço geocoder e o geocoder inverso.
Embora seja desenvolvido especificamente pelos EUA, muitos conceitos e funções são aplicáveis e podem ser adaptados a trabalhar com endereços de outros países e outras road networks.
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.
Para instruções de como ativar a extensão no seu banco de dados e também para carregar dados usando ela, vá para Section 2.4.1, “Tiger Geocoder Enabling your PostGIS database”.
|
|
|
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 Enabling your PostGIS database” for details. |
A função Pagc_Normalize_Address como uma queda na substituição para in-built Normalize_Address. Refira-se a Section 2.3, “Instalando e usando o padronizador de endereço” para compilar e para instruções de instalação.
Design:
O objetivo desse projeto é construir um geocoder completamente funcional que pode processar uma string eventual de endereço dos Estados Unidos e, usando os dados normalizados do censo TIGER, produzir um ponto de geometria e avaliação refletindo a localização do endereço dado e likeliness da localização. Quanto maior o número de avaliação, pior o resultado.
The reverse_geocode function is useful for deriving the street address and cross streets of a GPS location.
O geocoder deve ser simples de instalar e usar para qualquer pessoa familiar com o PotGIS, e deve ser mais fácil de instalar e usar em todas as plataformas suportadas pelo PostGIS.
Isso deve ser potente o suficiente para funcionar propriamente, apesar de erros de formatação e ortografia.
Isso deve ser extensível o suficiente para ser utilizado com dados de atualização futuras, ou fontes de dados alternativas com mudanças mínimas de coding.
|
|
|
O esquema |
tiger_data se nenhum esquema é especificado.
county_all, state_all ou código de estado seguido por condado ou estado.
tiger_data se nenhum esquema estiver especificado.
normalized_address (addy) para cada localização, e a avaliação. Quanto menor a avaliação, maior a chance de combinar. Os resultados são separados com menor avaliação em primeiro lugar. Pode passar nos resultados máximos, até 10. Usa dados Tiger (limites, faces, addr), string confusa do PostgreSQL (soundex, evenshtein).
tiger_data. Cada state script retornou como um relato separado.
tiger_data. Cada state script retorna como um registro separado. A versão mais nova suporta mudanças estruturais do Tiger 2010 e também carrega trecho do censo, block groups, e block tables.
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).
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, retorna uma representação impressa dele. Normalmente, usado em conjunto com o 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.