Grade logística dos municípios Brasil: mudanças entre as edições
Sem resumo de edição |
Sem resumo de edição |
||
Linha 7: | Linha 7: | ||
</syntaxhighlight>Com a base de dados criada e habilitada para trabalhar com dados geográficos, agora precisamos prepará-la para lidar com rotulação hierárquica por meio de scripts SQL do repositório https://github.com/AddressForAll/WhitePaper01. | </syntaxhighlight>Com a base de dados criada e habilitada para trabalhar com dados geográficos, agora precisamos prepará-la para lidar com rotulação hierárquica por meio de scripts SQL do repositório https://github.com/AddressForAll/WhitePaper01. | ||
Vá para o diretório <code>/var/gits/_a4a/</code> e insira o comando abaixo para clonar o repositório WhitePaper01. | |||
<syntaxhighlight lang="bash"> | |||
git clone https://github.com/AddressForAll/WhitePaper01 | git clone https://github.com/AddressForAll/WhitePaper01 | ||
</syntaxhighlight>Acesse o diretório | </syntaxhighlight>Acesse o diretório <code>/var/gits/_a4a/WhitePaper01/sql</code> e execute sequencialmente os comandos abaixo.<syntaxhighlight lang="bash"> | ||
psql <nome_base_de_dados> < prepare0-binCodes.sql | psql <nome_base_de_dados> < prepare0-binCodes.sql | ||
</syntaxhighlight><syntaxhighlight lang="bash"> | </syntaxhighlight><syntaxhighlight lang="bash"> | ||
Linha 24: | Linha 24: | ||
</syntaxhighlight><syntaxhighlight lang="bash"> | </syntaxhighlight><syntaxhighlight lang="bash"> | ||
psql <nome_base_de_dados> < prepare2b-demo.sql | diff - ../data/prepare2b-demo.txt | psql <nome_base_de_dados> < prepare2b-demo.sql | diff - ../data/prepare2b-demo.txt | ||
</syntaxhighlight>A base de dados está pronta para receber as grades do Brasil. Agora vá para o diretório /tmp e execute o comando abaixo para fazer download das grades do Brasil.<syntaxhighlight lang="bash"> | </syntaxhighlight>A base de dados está pronta para receber as grades do Brasil. Agora vá para o diretório <code>/tmp</code> e execute o comando abaixo para fazer download das grades do Brasil.<syntaxhighlight lang="bash"> | ||
wget http://www.addressforall.org/_private/grid_br_dump2.sql.gz | wget http://www.addressforall.org/_private/grid_br_dump2.sql.gz | ||
</syntaxhighlight>Dê as | </syntaxhighlight>Dê as permissões necessárias ao arquivo recém-baixado para que o mesmo possa ser descompactado. Após isso, mude o usuário do Ubuntu para o usuário postgres por meio do comando:<syntaxhighlight lang="bash"> | ||
sudo -i -u postgres | sudo -i -u postgres | ||
</syntaxhighlight>Agora vá para o diretório /tmp, e execute o comando abaixo:<syntaxhighlight lang="bash"> | </syntaxhighlight>Agora vá para o diretório <code>/tmp</code>, e execute o comando abaixo:<syntaxhighlight lang="bash"> | ||
gunzip -c grid_br_dump2.sql.gz | <nome_base_de_dados> | gunzip -c grid_br_dump2.sql.gz | <nome_base_de_dados> | ||
</syntaxhighlight>Após a finalizar o carregamento das grades do brasil na base de dados, algumas configurações adicionais ainda são necessárias. Ainda no usuário postgres, mude para a interface de linha de comando (CLI) do postgres com o comando:<syntaxhighlight lang="bash"> | </syntaxhighlight>Após a finalizar o carregamento das grades do brasil na base de dados, algumas configurações adicionais ainda são necessárias. Ainda no usuário postgres, mude para a interface de linha de comando (CLI) do postgres com o comando:<syntaxhighlight lang="bash"> | ||
Linha 131: | Linha 131: | ||
</syntaxhighlight>O script SQL acima proporciona a base de dados a lidar com projeções compatíveis com o IBGE. | </syntaxhighlight>O script SQL acima proporciona a base de dados a lidar com projeções compatíveis com o IBGE. | ||
Em seguida, precisamos criar as funções vbit_interleave e ints_to_interleavedbits. Ainda na CLI do postgres, adicione na sequência, os scripts SQL abaixo: <syntaxhighlight lang="sql"> | Em seguida, precisamos criar as funções <code>vbit_interleave</code> e <code>ints_to_interleavedbits</code>. Ainda na CLI do postgres, adicione na sequência, os scripts SQL abaixo: <syntaxhighlight lang="sql"> | ||
CREATE FUNCTION vbit_interleave(x varbit, y varbit) returns varbit as $f$ | CREATE FUNCTION vbit_interleave(x varbit, y varbit) returns varbit as $f$ | ||
SELECT string_agg(( substring(x,i,1)||substring(y,i,1) )::text,'')::varbit | SELECT string_agg(( substring(x,i,1)||substring(y,i,1) )::text,'')::varbit | ||
Linha 142: | Linha 142: | ||
</syntaxhighlight>Agora a base de dados está pronta e configurada. Iremos para a próxima fase que é a de geração de ''views'' para o QGIS. Mantenha-se na CLI do postgres. | </syntaxhighlight>Agora a base de dados está pronta e configurada. Iremos para a próxima fase que é a de geração de ''views'' para o QGIS. Mantenha-se na CLI do postgres. | ||
=== Geração de ''views'' para os municípios de PE-Caruaru, RJ-NovaFriburgo e SP-SãoBentoSapucai === | === Geração de ''views'' para os municípios de PE-Caruaru, RJ-NovaFriburgo e SP-SãoBentoSapucai=== | ||
Linha 152: | Linha 152: | ||
</syntaxhighlight>... | </syntaxhighlight>... | ||
==== Consulta para verificação de cobertura lógistica otimizada ==== | ====Consulta para verificação de cobertura lógistica otimizada==== | ||
<syntaxhighlight lang="sql"> | <syntaxhighlight lang="sql"> | ||
select t.isolabel_ext, count(*) n_cells, array_agg(p.code_b16h) cover from grid_br.vw_level07_0_poc p inner join grid_br.vw_poc t ON t.geom&&p.geom group by 1 order by 1; | select t.isolabel_ext, count(*) n_cells, array_agg(p.code_b16h) cover from grid_br.vw_level07_0_poc p inner join grid_br.vw_poc t ON t.geom&&p.geom group by 1 order by 1; | ||
Linha 165: | Linha 165: | ||
</syntaxhighlight>Podemos constatar que o quantitativo de células está otimizado para os municípios de caruaru e nova friburgo. O município de Santo bento do sapucaí ainda é passível de otimização por meio de uma camada de nível 7.5. | </syntaxhighlight>Podemos constatar que o quantitativo de células está otimizado para os municípios de caruaru e nova friburgo. O município de Santo bento do sapucaí ainda é passível de otimização por meio de uma camada de nível 7.5. | ||
==== Criação de tabela de reindexação das células para base 32 com apenas um dígito ==== | ====Criação de tabela de reindexação das células para base 32 com apenas um dígito ==== | ||
<syntaxhighlight lang="sql"> | <syntaxhighlight lang="sql"> | ||
create table grid_br.caruaru_cover as select natcod.vbit_to_strstd(substring((ROW_NUMBER() OVER())::bit(32),32-4),'32nvu') as idx_b32nvu, * from ( | create table grid_br.caruaru_cover as select natcod.vbit_to_strstd(substring((ROW_NUMBER() OVER())::bit(32),32-4),'32nvu') as idx_b32nvu, * from ( |