Giter Site home page Giter Site logo

osm-codes / br_ibge Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 2.78 MB

Grade Estatística IBGE em Representação Compacta

Home Page: http://git.osm.codes/BR_IBGE#readme

License: Apache License 2.0

Makefile 12.48% Shell 21.22% PLpgSQL 66.30%
geocode ibge

br_ibge's People

Contributors

luisfelipebr avatar ppkrauss avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar

br_ibge's Issues

Incluir mais pontos de referência conhecidos/ilustrativos nos exemplos

Exemplos de pontos didáticos no Brasil:

Postar respondendo por aqui mesmo!. Em seguida ajudo a melhorar /src/step6_asserts.sql.

Para conferir coordenada na Wikidata, ver a propriedade P625 (coordinate location), por exemplo https://www.wikidata.org/wiki/Q1434444#P625 e clicar nas coordenadas abaixo do mapa. Vai redirecionar para a página Geohack, que no seu canto superior direito oferece a GeoURI.


Exemplo: SELECT grid_ibge.search_cell('geo:-3.130278,-60.023333') retorna o gid da célula da grade default, nível L5, 4332000109840005. SELECT grid_ibge.search_cell('geo:-3.130278,-60.023333',1) retorna a célula 4300000109500001 do nível L1. Para visualizar no QGIS usar por exemplo:

CREATE VIEW vw_teste_am_teatro AS SELECT gid, grid_ibge.draw_cell(gid) geom
   FROM ( SELECT grid_ibge.search_cell('geo:-3.130278,-60.023333',1) ) t(gid);

Definir quadrantes de demonstração

RESUMO: definir quais quadrantes L0 a usar como demonstração.


Uma importante meta deste projeto é testar e manter online exemplos de uso de API... Mas "manter online" tem custo, proporcional ao consumo de memória da aplicação, que nesse caso é da ordem de Gb.

Para reduzir custos podemos reduzir o número de quadrantes (nível L0) a ~6 quadrantes. Sugere-se amarrar essa eleição de "grade demo" à issue #4 e às "cidades demo" de digital-guard/preserv-BR.

Criar funções alternativas de visualização de grade e sumarização espacial

Apesar das funções draw_cell já terem resolvido o problema, possuem performance limitada, principalmente para visualização online no QGIS. Neste artigo de 2020 é demonstrado o uso com o mapa do Brasil. O que precisamos fazer é criar uma caixa em Albers (lembrando que nosso SRID=952019 foi definido em pubLib05-postGis.sql) com origem correta. A VIEW abaixo ainda talvez aproximada:

CREATE VIEW teste_SquareGrid AS
  SELECT (j-14)*10+i-5 AS gid, i-5 as i, j-14 as j, geom
  FROM ST_SquareGrid(
              500000,
              ST_MakeEnvelope(2800000, 7350000, 2800000+9*500000, 7350000+9*500000, 952019)
  ); -- matriz IJ 10×10 de células com 500 km; identificador gid invertido JI

Funções otimizadas a testar:

Outros recursos: uso da grade (ou "mapa de calor" da população gerado pr ela) como "mapa de fundo" em vector tiles.


Atribuições

  • Luis: determinar parâmetros exatos testando no QGIS
  • Peter implementar como função.

Criar conjuntos de ASSERT para todas as funções implementadas

O PostgreSQL oferece o comando PL/pgSQL ASSERT que ajuda a documentar testes, com base na tradição das asserções lógicas. Por exemplo:

do $$
    begin  -- Testando o operador "="
        ASSERT 1 = 2, 'Oops, o valor 1 não é 2...';
        ASSERT 1 = 1, 'Erro mesmo, o valor 1 era para ser 1!';
    end;
$$ LANGUAGE plpgsql;
-- resulta só no "Oops".

Precisamos criar conjuntos de 1 ou mais Testes de Regressão para cada função de biblioteca, que serão então utilizados sempre que alguma modificação no git for feita, garantindo que bugs não sejam "injetados" pelas modificações.


Versão preliminar: src/step6_asserts.sql

Revisar e complementar com snap-to-grid a VIEW grid_ibge.vw_original_ibge_rebuild

A view final de src/step4_prepareGridLibs.sql ainda demanda funções de conversão para as colunas nome_10km, nome_50km, etc. e nesse caso uma função snap_to_grid() seria muito mais eficiente para implementar search_gid_to_gid. A princípio é só arredondar pro centro mais próximo... Ver inspiração de snap em grid_ibge.xy_to_quadrante (que alias demanda também revisão).

Teste visual

Mesmo na versão atual, para visualizar no QGIS usar uma tabela ou LIMIT baixo,

CREATE VIEW teste_ver_no_qgis AS  SELECT * FROM grid_ibge.vw_original_ibge_rebuild LIMIT 100;
-- ou
CREATE TABLE teste_ver_L0_no_qgis AS  SELECT * FROM grid_ibge.vw_original_ibge_rebuild WHERE gid&7=0;
CREATE TABLE teste_ver_L2_no_qgis AS  SELECT * FROM grid_ibge.vw_original_ibge_rebuild WHERE gid&7=2;

revisão de texto

Os readmes requerem revisão antes da divulgação.

Nas referências falta incluir algo que forneça com maior certeza a semântica dos dados, algo como esse PDF do IPEA ou algo oficial do IBGE. A citação de links de documentos e páginas de artigos/guias, etc. requer Wayback Machine, por exemplo esse PDF não tem comprovação anterior a 2021, só esse registro de 2021-04-25.

Criar testes de terminal para conferir com diff

Complementando #1, também são necessários testes sobre o zip de distribuição. O teste de integridade (MD5 ou SHA256) é suficiente para conferir o download, todavia se o usuário deseja fazer alterações menores ou auditar o conteúdo, o teste ilustra algumas opções simples de verificação:

  • head e tail do arquivo ou de trechos de cada grade
  • wc -l contando linhas do arquivo
  • grep de amostras específicas, selecionadas por gid.

Exemplos:

cd data
head grid_ibge_censo2010_info.csv
grep 5756000087008006  grid_ibge_censo2010_info.csv
wc -l grid_ibge_censo2010_info.csv
awk -F "," '/^[0-9]+0,/ {lines++; pop=pop+$2;} END{print lines, pop;}' grid_ibge_censo2010_info.csv

Os resultados do exemplo podem ser registrados com redirecionamento, por exemplo:

echo "=== Primeiras linhas do arquivo grid_ibge_censo2010_info.csv ===" > t.txt
head grid_ibge_censo2010_info.csv  >> t.txt
echo "=== grep ===" >> t.txt
grep 5756000087008006  grid_ibge_censo2010_info.csv  >> t.txt
echo "=== tot_lines ===" >> t.txt
wc -l grid_ibge_censo2010_info.csv  >> t.txt
echo "=== L0 lines and L0 tot_pop ===" >> t.txt
awk -F "," '/^[0-9]+0,/ {lines++; pop=pop+$2;} END{print lines, pop;}' grid_ibge_censo2010_info.csv  >> t.txt

Por fim, com cat t.txt visualizamos o resultado, e com diff t.txt assert_csv_samples.txt auditamos contra a última versão registrada no git.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.