Talk:Pt:Curitiba/Importação IPPUC

From OpenStreetMap Wiki
Jump to navigation Jump to search

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.

  1. mkdir sandbox_curitiba; cd sandbox_curitiba
  2. wget http://ippuc.org.br/geodownloads/SHAPES/LOTES_201807.zip
  3. unzip curitiba2018-07.zip
  4. cd curitiba2018-07
  5. shp2pgsql -s 4326 LOTES_201807_wgs84.shp curitiba_lotes201807 > carga.sql
  6. psql postgres://postgres:SuaSenha@localhost/osm_stable_br < carga.sql
  7. ...

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
;