osmc talk:Metodologia/Algoritmo SQL

De Documentação
Revisão de 21h28min de 1 de junho de 2024 por Peter (discussão | contribs) (Criou página com '== Chutando o quadrado inicial de um país == A função f(x) que retorna potências side e next ajuda tanto a avaliar a área de uma célula de cobertura, para saber pelo side (se diff_perc é zero então é interior), como avaliar qual poderia ser um quadro envolvente de cobertura de um país ou município, sempre em km2. Abaixo a área do Brasil. <pre> -- A = 8510417.771 km2: with t as (select sqrt(8510417.771 *1000^2) as x) select p as side_pow_exp, 2^p as side_po...')
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)

Chutando o quadrado inicial de um país

A função f(x) que retorna potências side e next ajuda tanto a avaliar a área de uma célula de cobertura, para saber pelo side (se diff_perc é zero então é interior), como avaliar qual poderia ser um quadro envolvente de cobertura de um país ou município, sempre em km2. Abaixo a área do Brasil.

-- A = 8510417.771 km2:
with t as (select sqrt(8510417.771 *1000^2) as x) 
select p as side_pow_exp, 2^p as side_pow_val, 
       round( (100.0*(2^p-x)/2^p)::numeric , 2)::real  side_diff_perc, 
       p+1 as next_pow_exp, 2^(p+1) as next_pow_val, 
       round( (100.0*(2^(p+1)-x)/2^(p+1))::numeric , 2)::real  next_diff_perc 
from (select round(log(x)/log(2)) p,x  from t) t2;
-- side_pow_exp | side_pow_val | side_diff_perc | next_pow_exp | next_pow_val | next_diff_perc 
-- -------------+--------------+----------------+--------------+--------------+----------------
--           21 |      2097152 |         -39.11 |           22 |      4194304 |          30.45
-- A = 757637 km2:
 side_pow_exp | side_pow_val | side_diff_perc |
--------------+--------------+----------------|
           20 |      1048576 |          16.99 |
-- A = 1099512 km2:
           20 |      1048576 |              0 |

No caso da área do Brasil (de 8510417.771 km2) temos o next como estimativa de quadrado envolvente, com lados de 2^22 km:

  1. quadrado com 2^22 metros de lado contém o Brasil.
  2. Primeiro dígito base4 é a cobertura de 4 quadrados com 2^21 metros cada
  3. Primeiro dígito base16 é a cobertura de 16 quadrados com 2^20 metros de lado cada.

Nas áreas de células conferimos qual tem side_diff_perc=0, que foi apenas o caso de A = 1099512 km2.