Endereços Postais

From OpenStreetMap Wiki
Jump to navigation Jump to search

Introdução

Nesta página pretende-se apresentar um conjunto de queries que permitam realizar uma análise dos endereços postais existentes no OSM. Começou-se por importar a Base de Dados do OSM (processo descrito em [1]) para o programa pgAdminIII. De seguida foram realizadas as queries, no mesmo programa, de análise dos dados relacionados com as moradas.

Uniformização

De forma a escrever qualquer endereço postal de forma uniformizada e correcta, deve-se fazer uso das seguintes tags:

Tag Presença Tipo de Elementos Valores Descrição
addr:housenumber ou

addr:housename

Obrigatório node area string Número de porta, ou número da casa. Constituído por dígitos e também por outros caracteres alfa-numéricos. Se uma única entrada tem mais que um número de casa ou de porta, separar por ",". Por exemplo: "12b,12c".


Nome da casa. Usado em alguns países, como o Reino Unido e Irlanda, para representar o número da casa.

addr:street Opcional node area string Principal nome associado à rua. Caso nao se tenha conhecimento da mesma, utilizar o nome da rua mais próxima.
addr:state Opcional node area string Identifica os Estados em países como os Estados Unidos ou a Austrália, que têm abreviaturas para os estados nas suas moradas. Para outros países, como Portugal, não é usado.
addr:postcode Opcional node area string Código postal da zona em questão. Diferentes países tem diferentes caracteres e comprimentos para os códigos postais. Em Portugal este código deverá ser constituido por 4 dígitos seguidos de um hífen e de 3 dígitos: xxxx-xxx
addr:city Opcional node area string City é usado em endereços postais de algumas zonas e áreas habitacionais.
addr:country Opcional node area string de duas letras Código de duas letras em maiúsculas ISO 3166-1 alpha-2 (ver wikipedia:ISO 3166-1 alpha-2). Poderá ser necessário uma vez que existe apenas um para cada país. Exemplo: "DE" para Alemanha, "FR" para França, "IT" para Itália e "PT" para Portugal.
addr:full Opcional node area string Endereço postal completo. Pode ser usado além das outras Tags se estas não forem suficientes para representar uma morada.
addr:interpolation Obrigatório way even/odd/all/alphabetic Como interpolar os números de casa que pertencem à rua em questão.


Identificação das tags presentes na Base de Dados

Fazendo uma query do género:

select * from planet_osm_point where "addr:city" is not null;
select * from planet_osm_polygon where "addr:city" is not null;

e substituindo "addr:city" pelas restantes tags, como por exemplo: addr:housenumber; addr:housename; addr:street; addr:postcode; addr:city; addr:country; addr:full; addr:subdistrict; addr:district; addr:province e addr:interpolation, ou simplesmente através da visualização do nome das colunas nas tabelas, chega-se à conclusão que a única tag que contém informação é a addr:housenumber. Isto denota uma grande falha ao nível das moradas associadas a polígonos e pontos no mapa. Assim, as queries apresentadas serão relativas unicamente a addr:housenumber.

Para facilitar a realização das queries foi criada uma tabela (merge) com os parâmetros amenity, name e addr:housenumber, representados quer sob a forma de pontos, quer de polígonos, evitando que a mesma query tenha de ser realizada para as duas tabelas:

create table merge as select name, amenity, "addr:housenumber" from planet_osm_polygon;
insert into merge select name, amenity, "addr:housenumber" from planet_osm_point;


Contagem de registos

Por forma a se ter uma maior percepção da frequência de utilização da tag addr:housenumber pode-se começar por ver quantos registos existem no OSM (relativamente a pontos e polígonos) e quantos deles contêm informação acerca deste parâmetro:

select count(*) as "número de pontos e polígonos" from merge

Total.png

select count(*) as "número de pontos e polígonos com número de porta" from merge where "addr:housenumber" is not null

Total housenumber.png

Farmácias

Em relação às farmácias, por exemplo, comprova-se que, no OSM, o número de farmácias com housenumber é muito reduzido, tendo este parâmetro sido utilizado em apenas metade das farmácias registadas:

select count(*) as "número de farmácias existentes" from merge where amenity = 'pharmacy';

Num farm.png


select count(*) as "número de farmácias com número de porta" from merge where amenity = 'pharmacy' and "addr:housenumber" is not null;

Num farm port.png

O mesmo pode ser feito para hospitais, dentistas, veterinários, escolas, universidades, museus, etc.

Exemplo do tipo de informação

Para ver o tipo de sintaxe usada pelos utilizadores para escrever o número de porta de algum objecto, pode-se realizar a seguinte query:

select name, "addr:housenumber" from merge where amenity = 'pharmacy' and "addr:housenumber" is not null;

Hn ex.png

Facilmente se percebe que os dados não estão uniformizados, nem seguem nenhum standard definido. De entre algumas falhas de uniformização da informação podem-se salientar:

  • O facto de em alguns casos os utilizadores escreverem simplesmente o número de porta e noutros esse número ser antecedido pelos caracteres Nº;
  • O facto de letras e números se encontrarem separados por um hífen, barra, espaço, vírgula, ou simplesmente nao se encontrarem separados.


Conclusão

No que diz respeito ao endereçamento das amenitys marcadas sob a forma de pontos ou polígonos, por parte dos utilizadores do OSM, percebe-se que existem grandes deficiências no seu correcto endereçamento. Nas tabelas constituintes da Base de Dados do OSM são inexistentes praticamente todos os parâmetros do tipo addr:*, encontrando-se apenas informação no que diz respeito a addr:housenumber, e num número muito reduzido de registos. Deste modo, deverá haver, por parte dos utilizadores, uma maior representação e uniformização da informação neste âmbito, estando a análise de endereços postais limitada, neste momento, à falta de informação existente.