User:Krauss/Lembretes/Oficial

From OpenStreetMap Wiki
Jump to navigation Jump to search

Dica do Santamariense, "... já que tu tem essa grande preocupação com a qualidade dos dados, lá vai umas sugestões" (Telegram),

  • Calcule áreas dos municípios no OSM e calcule dos shapefiles do IBGE. Os que tiverem significativa discrepância de área, vale a pena uma revisão no OSM.
  • Sobreposição ou vazios também não pode ocorrer, onde houver, tem que revisar.
  • Quantidade de municípios por estado. Se estiver sobrando ou faltando, é preciso saber qual está.

Lembrete do Sérgio: "... Em geral a gente olha as fontes e compara.Na ocasião da edição, e em geral quando é alteração significativa tipo divisas, não anos depois". As últimas são mais revisadas... Questão é que todo usuário é incumbido de fazer isso, depende de cada um na sua região... Olhar as fontes, e comparar com as edições, é coisa que se faz comumente, toda hora".

Fontes em ftp://geoftp.ibge.gov.br/cartas_e_mapas/bases_cartograficas_continuas/bc250/versao2017/shapefile/ Limites_v2017.zip e lim_municipio_a.shp. E a questão começou com a pergunta sobre essa fonte, "Alguém sabe conferir se o que temos no OSM são exatamente esses aí? Alguém na comunidade se encarrega de atualizar tudo em lote cada vez que o IBGE atualuza os shapes?".

Outros lembretes, tomando como exemplo Curitiba:

Carga IBGE

Além da fonte de geometrias, Limites_v2017.zip, carregar a tabela de verificação de áreas, que atua como checksum, AR_BR_RG_UF_MES_MIC_MUN_2017.ods.

Segundo descritivo IBGE "O reprocessamento dos valores das áreas territoriais, de acordo com a estrutura político-administrativa vigente em 01/07/2017, data de referência das Estimativas Populacionais 2017, incorporaram as alterações de limites territoriais municipais ocorridas após o Censo Demográfico 2010 e praticadas nas Estimativas Populacionais Anuais no período de 2011 a 2017, bem como demais ajustes territoriais ocorridos neste período.".
A princípio podemos conferir se as áreas batem, basta fazer a soma de tudo e conferir se bate com a soma publicada no diário oficial "Para a superfície do Brasil foi mantido o valor de 8.515.759,090 km2, publicado no DOU nº 124 de 29/06/2018, conforme Resolução Nº 01, de 28 de junho de 2018".

Carga do mapa IBGE oficial dos municipios:

  1. wget ftp://geoftp.ibge.gov.br/cartas_e_mapas/bases_cartograficas_continuas/bc250/versao2017/shapefile/Limites_v2017.zip
  2. shp2pgsql -s 4326 lim_municipio_a.shp | psql etc
  3. no psql alter table lim_municipio_a rename to ibge_lim_munic_2017;
  4. update ibge_lim_munic_2017 set geom=st_setsrid(geom,4326);

Exemplo dado pelo EuZinho do novo limite de municipio entre Condado (89,64 km² em 2010) e Malta (156,24 km² em 2010) da PB.

SELECT geocodigo, nome, round(st_area(geom,true)/1000000.0) km2 
FROM ibge_lim_munic_2017 
WHERE geocodigo IN ('2504504','2508802');
--  geocodigo |  nome   | km2 
-- -----------+---------+-----
--  2508802   | Malta   | 157
--  2504504   | Condado | 279

-- somata total oficial:
SELECT count(*) n,  round(sum(st_area(geom,true)/1000000.0)) km2 FROM ibge_lim_munic_2017;
--    n   |   km2   
--  ------+---------
--   5570 | 8501003

Comparando áreas

Muitos municípios são iguais, dentro de uma tolerância de 10 km2, temos 4518 municípios. Entre eles seria interessante conferir a média de 2*st_area(ST_Intersection(a,b))/(st_area(a) + st_area(b)) pois isso discarta as compensações quando existem geometrias diferentes.

Maiores diferenças (destacam erros de fato, como brasília, diferenças como BarraCorda, ou falta de subtração das terras indígenas como FernandoFalcao)

 km2_diff | ibge_id |       folder_name        |  osm_id  | ibge_km2 | osm_km2 
----------+---------+--------------------------+----------+----------+---------
     5342 | 5300108 | DF/Brasilia              | -2758138 |     5791 |     449
     2661 | 2101608 | MA/BarraCorda            |  -332984 |     7864 |    5203
     1592 | 2104081 | MA/FernandoFalcao        |  -332971 |     3507 |    5099
     1280 | 2104800 | MA/Grajau                |  -332843 |     7558 |    8838
      805 | 2929057 | BA/SaoFelixCoribe        |  -362177 |     1757 |     952
      689 | 1502509 | PA/Chaves                |  -185548 |    13771 |   13082
      619 | 2931905 | BA/Tucano                |  -362383 |     2187 |    2806
      600 | 2926400 | BA/RiachoSantana         |  -362427 |     3184 |    2584
      599 | 1400282 | RR/Iracema               |  -326294 |    13527 |   14126
      567 | 5213103 | GO/Mineiros              | -2709162 |     9032 |    9599
      548 | 2919801 | BA/Macaubas              |  -362466 |     2440 |    2988
      544 | 5107602 | MT/Rondonopolis          |  -333637 |     4711 |    4167
      532 | 1302603 | AM/Manaus                |  -332493 |    10872 |   11404
      508 | 2927101 | BA/Rodelas               |  -363122 |     2227 |    2735
      501 | 2105500 | MA/JoaoLisboa            |  -332919 |     1136 |     635
      501 | 2112605 | MA/UrbanoSantos          |  -332904 |     1712 |    1211
      498 | 2111763 | MA/SenadorLaRocque       |  -332969 |      739 |    1237
      489 | 5107800 | MT/SantoAntonioLeverger  |  -333729 |    11780 |   12269
      480 | 2110104 | MA/SantaQuiteriaMaranhao |  -332825 |     1432 |    1912
      477 | 2910776 | BA/FeiraMata             |  -362219 |     1150 |    1627
      460 | 1301852 | AM/Iranduba              |  -332514 |     2674 |    2214
      417 | 2918506 | BA/Jussara               |  -362263 |     1364 |     947
      411 | 2926608 | BA/RibeiraPombal         |  -362396 |     1176 |     765
      402 | 2105351 | MA/ItaipavaGrajau        |  -332805 |      838 |    1240
      400 | 2921609 | BA/Morpara               |  -362188 |     2091 |    1691
      395 | 2909901 | BA/Curaca                |  -362445 |     6504 |    6109
      394 | 2906709 | BA/CandidoSales          |  -362234 |     1171 |    1565
      387 | 2207850 | PI/Pavussu               |  -302660 |     1480 |    1093
      382 | 2907707 | BA/Chorrocho             |  -362860 |     2639 |    3021
      380 | 5102504 | MT/Caceres               |  -333703 |    23949 |   24329
      379 | 2920205 | BA/Malhada               |  -363142 |     1766 |    2145
      373 | 5103437 | MT/Curvelandia           |  -333654 |      734 |     361
-- somente áreas totais
SELECT abs(ibge_km2-osm_km2) km2_diff, * FROM (
  SELECT p.ibge_id, p.folder_name, osm_id, 
    round(st_area(i.geom,true)/1000000.0) as ibge_km2, 
    round(st_area(p.way,true)/1000000.0) osm_km2 
  FROM ibge_lim_munic_2017  i INNER JOIN vw_osm_city_polygon p 
    ON i.geocodigo::int=p.ibge_id 
) t 
WHERE abs(ibge_km2-osm_km2)>300 
order by 1 desc, 2;

Maior diferença relativa (forma)

     relat_diff       | ibge_id |          folder_name          |  osm_id  
----------------------+---------+-------------------------------+----------
     5.95052958002663 | 5300108 | DF/Brasilia                   | -2758138
    0.535987480671481 | 5103437 | MT/Curvelandia                |  -333654
    0.450362126205767 | 2929354 | BA/SaoJoseVitoria             |  -362193
    0.424656695742079 | 2929057 | BA/SaoFelixCoribe             |  -362177
    0.413465029439604 | 2902658 | BA/Banzae                     |  -362257
    0.402641694425265 | 2105500 | MA/JoaoLisboa                 |  -332919
    0.386444100105668 | 2510659 | PB/Parari                     |  -301371
    0.351704328755534 | 2903300 | BA/BarroPreto                 |  -362300
    0.341386895718655 | 2109908 | MA/SantaInes                  |  -332808
    0.305585432214643 | 2925600 | BA/PresidenteDutra            |  -362319
    0.290930987080831 | 2607802 | PE/Itaquitinga                |  -303661
    0.288379109723909 | 2112605 | MA/UrbanoSantos               |  -332904
    0.285906921603557 | 2926608 | BA/RibeiraPombal              |  -362396
    0.285839658428263 | 2932705 | BA/Urucuca                    |  -362355
    0.285363847829718 | 2919926 | BA/MadreDeus                  |  -362461
    0.272286459123972 | 2111953 | MA/SucupiraRiachao            |  -332795
    0.272263508960364 | 2920007 | BA/Maiquinique                |  -363087
    0.262019920163643 | 2101608 | MA/BarraCorda                 |  -332984
     0.25939250003882 | 2918308 | BA/Jitauna                    |  -362329
    0.258623017994322 | 2103158 | MA/CentroGuilherme            |  -332845
    0.256653357592466 | 2915106 | BA/Itagi                      |  -362433
    0.247818724249393 | 2111029 | MA/SaoJoaoCaru                |  -332871
    0.234398192514243 | 2918506 | BA/Jussara                    |  -362263
-- Diferenças quando totais indicam àreas mais parecidas
SELECT st_area(ST_SymDifference(way,geom),true)/(osm_area+osm_area) km2_diff,
       ibge_id, folder_name, osm_id 
FROM (
  SELECT p.ibge_id, p.folder_name, osm_id, 
    st_area(i.geom,true) as ibge_area, 
    st_area(p.way,true) osm_area ,
    i.geom, p.way
  FROM ibge_lim_munic_2017  i INNER JOIN vw_osm_city_polygon p 
    ON i.geocodigo::int=p.ibge_id and st_isvalid(p.way) and st_isvalid(i.geom)   
) t 
WHERE abs((osm_area-osm_area)/1000000.0)<300.0 
order by 1 desc, 2;