Os relagtórios estatísticos e mapas do OSM-Stable requerem normalização dos nomes de via, tanto nos mapas de linhas (tabela planet_osm_roads) relativas a highway e railway, como pontos (planet_osm_point) contendo tag addr:street.
Tecnicamente, analisando nesta issue as estatísticas de nomes conforme:
CREATE or replace FUNCTION stable.addrstreet2lexname(nome text) RETURNS text AS $f$
SELECT trim( stable.name2lex($1,true,true,true), '.' )
$f$ LANGUAGE SQL IMMUTABLE;
COMMENT ON FUNCTION stable.addrstreet2lexname
IS 'Normaliza nome de tag addr:street com name2lex()'
;
CREATE table stable.kx_street_names AS
SELECT name, array_agg(distinct pt) AS from_pt, count(*) n_names, sum(n) n_occurs
FROM (
(select
stable.addrstreet2lexname(tags->>'addr:street') AS name, true pt,
count(*) n
from planet_osm_point
where tags?'addr:street'
group by 1,2
)
UNION
(select
stable.addrstreet2lexname(tags->>'name'),
false pt , count(*) n
from planet_osm_roads
where tags?'name' AND (tags?'highway' OR tags?'railway')
group by 1,2
)
UNION
(select
stable.addrstreet2lexname(tags->>'official_name'),
false pt , count(*)
from planet_osm_roads
where tags?'official_name' AND (tags?'highway' OR tags?'railway')
group by 1,2
) -- só tem uns 10 a 100 itens de official_name
) t GROUP BY 1 ORDER BY 1
; -- 50348
---------------------
CREATE VIEW stable.vw01main_street_dicnames AS
SELECT p, count(*) n from (
select regexp_split_to_table(name,'\.') AS p
from stable.kx_street_names
) t
GROUP BY p
HAVING count(*)>100
order by 2 desc, 1
;
CREATE VIEW stable.vw01main_street_dicnames AS
SELECT name_part, from_pt, count(*) n from (
select regexp_split_to_table(name,'\.') AS name_part, from_pt
from stable.kx_street_names
) t
GROUP BY name_part, from_pt
HAVING count(*)>100
order by 2 desc, 1
;
São duas decisões a tomar:
- Normalização: está boa a sugestão dos lexnames? Ideia é poder reusar o formato nas URLs de busca.
- Precisamos criar uma convenção de separação automatica de prefixo (como nos Correios separa-se o prefixo de logradouro do resto do nome), e abreviação das palavras mais frequentes.
Exemplo:
| palavra |
freq_dic |
prefixo? |
Abreviar? |
| rua |
27461 |
sim |
não |
| avenida |
10231 |
sim |
sim |
| jose |
2568 |
não |
não |
| joao |
1764 |
não |
não |
| estrada |
1743 |
sim |
sim |
| rodovia |
1733 |
sim |
sim |
| antonio |
1592 |
não |
não |
| doutor |
1572 |
não |
sim |
| praca |
1316 |
sim |
sim |
| silva |
1041 |
não |
não |
| francisco |
987 |
não |
não |
| coronel |
747 |
não |
sim |
| ... |
... |
... |
... |
Tabela completa para completar manualmente as colunas "prefixo?" e "abreviar?".
Os relagtórios estatísticos e mapas do OSM-Stable requerem normalização dos nomes de via, tanto nos mapas de linhas (tabela
planet_osm_roads) relativas a highway e railway, como pontos (planet_osm_point) contendo tag addr:street.Tecnicamente, analisando nesta issue as estatísticas de nomes conforme:
São duas decisões a tomar:
Exemplo:
Tabela completa para completar manualmente as colunas "prefixo?" e "abreviar?".