Conforme ultimo post na issue 15, são previstos "arquivos cache" no repositório, ou seja, informações a priori redundantes mas que ajudam a comunidade a analisar e comparar os dados de cada versão estável.
A seguir sugestão de convenção para arquivos cache.
kx_sumary.csv de cada estado
Gerado por
CREATE MATERIALIZED VIEW stable.mvw_osm_city_polygon_summary AS
SELECT -osm_id AS osm_rel_id, ibge_id, 'Q'||wikidata_id AS wikidata_id, name, uf
,round(st_area(way,true)/10000.0)/100 as area_km2
,(SELECT COUNT(*) FROM stable.mvw_osm_city_roads_inside WHERE city_osm_id=v.osm_id) AS roads_inside
,(SELECT COUNT(*) FROM stable.mvw_osm_city_points_inside WHERE city_osm_id=v.osm_id) AS points_inside
FROM vw_osm_city_polygon v
;
SELECT uf, copy_csv(
'kx_sumario.csv',
format('select * from mvw_osm_city_polygon_summary where uf=%L',uf),
true,
'/opt/gits/OSM/stable/data/'|| uf ||'/'
)
FROM vw_brcodes_state;
kx_sumary.csv de cada estado/_roads
Necessário para apresentar a relação entre a road estadual e os municípios que ela serve, e cujos endereços eventualmente estarão referenciando. Um segundo arquivo de nomes municipais talvez seja relevante (o código ref nem sempre é adotado nos endereços).
kx_streets.csv de cada município
Necessário para apresentar a relação entre nome de rua local e nome simplificado (formato URN LEX), utilizado nos arquivos de endereçamento. Relaciona <name_lex,original, ghs_pref_way, ghs_pref_pts>.
Funções de normalização de nomes
CREATE or replace FUNCTION stable.name2lex_pre(
p_name text -- 1
,p_normalize boolean DEFAULT true -- 2
,p_cut boolean DEFAULT true -- 3
,p_unaccent boolean DEFAULT false -- 4
) RETURNS text AS $f$
SELECT
CASE WHEN p_unaccent THEN lower(unaccent(x)) ELSE x END
FROM (
SELECT CASE WHEN p_normalize THEN stable.normalizeterm2($1,p_cut) ELSE $1 END
) t(x)
$f$ LANGUAGE SQL IMMUTABLE;
COMMENT ON FUNCTION stable.name2lex_pre IS 'Pre-processamento de limpeza de name2lex().';
CREATE or replace FUNCTION stable.name2lex(
p_name text -- 1
,p_normalize boolean DEFAULT true -- 2
,p_cut boolean DEFAULT true -- 3
,p_flag boolean DEFAULT false -- 4
) RETURNS text AS $f$
SELECT trim(replace(
regexp_replace(
stable.name2lex_pre($1,$2,$3,$4),
E' d[aeo] | d[oa]s | com | para |^d[aeo] | / .+| [aeo]s | [aeo] |\-d\'| d\'|[\-\' ]',
'.',
'g'
),
'..',
'.'
),'.')
$f$ LANGUAGE SQL IMMUTABLE;
COMMENT ON FUNCTION stable.name2lex IS 'Limpa e converte nome próprio para formato URN LEX BR';
-- stable.name2lex(E'Guarda-chuva d\'Água G\'ente',false,true,true); -- guarda.chuva.agua.g.ente
CREATE or replace FUNCTION stable.geohash_pre(p_geom geometry, p_len int default 3) RETURNS text AS $f$
-- prefixo de geohash até p_len letras (entrequadrantes no nordeste pode ficar com 'a')
SELECT CASE WHEN x='' THEN 'a' ELSE 'x' END
FROM (SELECT substr(ST_Geohash(p_geom),1,p_len)) t(x)
$f$ LANGUAGE SQL IMMUTABLE;
CREATE or replace FUNCTION stable.road_prename(p_name text) RETURNS text AS $f$
-- para usar com tags->'ref', fornece o pre-nome, cortando demais subpartes.
SELECT replace( substring(p_name from '^[^;,/\-]+\-?[^;,/\-]+') , ' ', '')
$f$ LANGUAGE SQL IMMUTABLE;
Conforme ultimo post na issue 15, são previstos "arquivos cache" no repositório, ou seja, informações a priori redundantes mas que ajudam a comunidade a analisar e comparar os dados de cada versão estável.
A seguir sugestão de convenção para arquivos cache.
kx_sumary.csv de cada estado
Gerado por
kx_sumary.csv de cada estado/_roads
Necessário para apresentar a relação entre a road estadual e os municípios que ela serve, e cujos endereços eventualmente estarão referenciando. Um segundo arquivo de nomes municipais talvez seja relevante (o código
ref
nem sempre é adotado nos endereços).kx_streets.csv de cada município
Necessário para apresentar a relação entre nome de rua local e nome simplificado (formato URN LEX), utilizado nos arquivos de endereçamento.
Relaciona
<name_lex,original, ghs_pref_way, ghs_pref_pts>
.Funções de normalização de nomes