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.
Um geocoder com base plpgsql escrito para trabalhar com o TIGER (Topologically Integrated Geographic Encoding and Referencing system ) / Line and Master Address database export liberado pelo 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.
A script constrói um esquema chamado tiger
para abrigar todas as funções tiger relacionadas, dados reutilizáveis como os prefixos de tipos de rua, sufixos, estados, várias tables de controle para administrar carregamento de dados, e tables da base do esqueleto do qual todas as tables tiger carregadas herdaram.
Outro esquema chamado tiger_data
, também é criado, ele abriga todos os dados do censo para cada estado que o carregador baixa do site do Censo, e carrega dentro do banco de dados. Nesse modelo, cada conjunto de tables estado é prefixado com o código do estado ex: ma_addr
, ma_edges
etc com restrições para executar somente os dados daquele estado. Cada uma dessas tables herda das tables addr
, faces
, edges
, etc localizadas no tiger schema
.
Todas as funções do geocode só fazem referência às tables base , portanto, não existe nenhuma necessidade que os dados do esquema sejam chamados tiger_data
ou eles não possam ser divididos em outros esquemas -- ex: um esquema diferente para cada estado, enquanto todas as tables herdam das tables no esquema tiger
.
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”.
Se você estiver usando o tiger geocoder (tiger_2010), você pode atualizar as scripts usando o acompanhamento upgrade_geocoder.bat / .sh scripts em extras/tiger. Uma mudança maior entre |
O suporte para dados Tiger 2015 e a inclusão do Padronizador de Endereços como parte do PostGIS, são novos no lançamento do PostGIS 2.2.0. O lançamento do PostGIS 2.1.0 tem de novo a habilidade de instalar o geocoder tiger com o modelo de extensão PostgreSQL se você estiver usando o PostgreSQL 9.1+. Refira-se a Section 2.4.1, “Tiger Geocoder Enabling your PostGIS database” para mais detalhes. |
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.
A função reverse_geocode
, introduzida em PostGIS 2.0.0 é útil para derivar o endereço da rua e cruzar ruas de uma localização de GPS.
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.
Existem outras fontes abertas geocoder para o PostGIS, que, ao contrário do tiger geocoder, têm a vantagem do suporte geocoding para muitos países
Nominatim usa dados OpenStreetMap gazeteer formatados. Requer o osm2pgsql para carregar os dados, PostgreSQL 8.4+ e PostGIS 1.5+ para funcionar. É compactado como uma interface de serviço da web e parece ter sido criado para ser chamado como webservice. Assim como o geocoder, ele tem dois componentes: o geocoder e o geocoder reverso. Na documentação não fica claro se ele tem uma interface SQL pura conforme o geocoder ou se tem um bom acordo da lógica implementado na interface da web.
GIS Graphy também utiliza PostGIS e, como Nominatim, funciona com os dados OpenStreetMap (OSM). Ele possui um carregador para carregar dados OSM e, correspondente ao Nominatim, é capaz de geocoding não só nos EUA. Bem como Nominatim, ele executa como webservice e confia no Java 1.5, Servlet apps, Solr. O GisGraphy é uma multiplataforma e também possui um geocoder reverso juntamente com outros aspectos.