Talk:Pt:Curitiba/Importação IPPUC
Consolidação dos canais
A Importação IPPUC foi discutida mais intensamente a partir de outubro de 2018, no Telegram-Comunidade e no fórum Talk-BR. A seguir um resumo consolidado das principais questões e conclusões.
Cedência dos dados de cartografia da IPPUC
O tópico "Cedência dos dados de cartografia da IPPUC de Curitiba / Importação de numeração predial" teve inicio em 27/outubro. Quatro (4) usuários participaram da discussão, no final houve consenso, todos concordam que a declaração formal está boa e representa uma licença ODbL para os dados.
Metodologia
... em discussão ...
https://lists.openstreetmap.org/pipermail/talk-br/2018-November/012456.html
Relatório de resultados
...
IPPUC to PostGIS
Passo a passo da conversão do zip em tabelas PostGIS.
mkdir sandbox_curitiba; cd sandbox_curitiba
wget http://ippuc.org.br/geodownloads/SHAPES/LOTES_201807.zip
unzip curitiba2018-07.zip
cd curitiba2018-07
shp2pgsql -s 4326 LOTES_201807_wgs84.shp curitiba_lotes201807 > carga.sql
psql postgres://postgres:SuaSenha@localhost/osm_stable_br < carga.sql
- ...
Já no psql confeirir consistência dos dados pela área total:
SELECT count(*) n, sum(st_area(geom,true)) area_tot FROM curitiba_lotes201807;
-- n | area_tot
-- --------+------------------
-- 306336 | 357025038.998847
Gerar um arquivo CSV com todos os centroides é relativamente simples no PostGIS, entretanto o ideal é ter os pontos não no centro, mas nas proximidades do logradouro fixado pelo endereço. Para tanto é preciso fazer uso das vias já delimitadas pelo OSM, conforme tópico abaixo.
Trazendo dados do Stable e cruzando com IPPUC
O Planet/Brazil do OSM pode ser convertido em PostGIS ou GeoJSON conforme convenções do https://github.com/OSMBrasil/stable
---- Curitiba from planet_osm:
ALTER TABLE curitiba_lotes201807 ADD COLUMN street_lexlabel text;
UPDATE curitiba_lotes201807 SET street_lexlabel=stable.name2lex(street);
drop VIEW vw_curitiba_vias;
CREATE VIEW vw_curitiba_vias AS
SELECT osm_id, osm_id2, 'road' as tp,
tags->>'name' as name, stable.name2lex(tags->>'name') lexlabel,
way
FROM planet_osm_roads
WHERE osm_id IN (
select osm_id from stable.city_test_inside
where city_id=297514
) and tags->>'name' > ''
ORDER BY 1,3,2,4
;
-- nomes de via no OSM:
-- SELECT name, array_agg(DISTINCT osm_id order by osm_id) osm_ids
-- FROM vw_curitiba_vias group by 1 order by 1
CREATE VIEW vw_curitiba_vias_lexlabel_equiparadas AS
SELECT vianome_osm, vianome_lote, c.street_lexlabel, array_agg_cat(v.osm_ids) osm_ids
FROM (
SELECT name as vianome_osm, stable.name2lex(name) as lexlabel, count(*), array_agg(osm_id) as osm_ids
FROM vw_curitiba_vias GROUP BY 1,2
) v INNER JOIN (
SELECT DISTINCT street as vianome_lote, street_lexlabel
FROM curitiba_lotes201807
) c
ON v.lexlabel=c.street_lexlabel -- destacar ~40 equiparações com AND vianome_osm!=vianome_lote
GROUP BY 1,2,3
; -- ~300 vias
CREATE VIEW vw_curitiba_lotes201807_vizinhos AS
SELECT street_lexlabel, st_geohash(geom) as geohash
FROM curitiba_lotes201807
;