osmc:Metodologia/Algoritmo SQL/Lib: mudanças entre as edições

(movimentando conteudo para seção de fórmulas e definições)
Linha 39: Linha 39:
=== Fórmulas e definições ===
=== Fórmulas e definições ===


Por imposição do [[Discrete National Grid Systems/pt|padrão DNGS]] temos <math>S_{L}=2^{Lmax-L}</math>. No caso do Brasil ''Lmax''=20, no caso de Camarões ''Lmax=18''.  
Por imposição do [[Discrete National Grid Systems/pt|padrão DNGS]] temos:
* As células são quadrilateras, idealmente quadradas.
* A projeção é de igual-área, ou bastante próxima disso.
* O sistema de grades de nível ''L'' é um mosaico quadrilátero, que tem o metro como maior resolução, no nível ''Lmax''.
* A grade de nível zero, ''L''=0, é um conjunto de 2 a 16 quadrados de área <math>A_0=2^{2\cdot Lmax}</math>, que cobre todo o território nacional. Portanto quadrados de lado <math>S_0=2^{Lmax}</math>, ou seja, potências de 2.
* A resolução da grade de nível ''L'' é <math>S_{L}=2^{Lmax-L}</math>, interpretada como tamanho do lado da célula quadrada, de área <math>A_{L}={S_{L}}^2 =2^{2\cdot(Lmax-L)}</math>.


A fórmula de ''S'' funciona também para níveis-meio, por exemplo ''L''=1.5. Isso se deve à suposição de que o "tamanho do lado genérico ''S'' de um retângulo" seja a raiz quadrada da área do retângulo; e pela [[Generalized_Geohash/pt#Representação_geométrica|construção geométrica dos níveis-meio]], cujas células (necessariamente de áreas iguais) são a união de 2 células do próximo nível inteiro: <br /> <math>S_{Lhalf}=\sqrt{2\cdot{Area_{\lceil Lhalf\rceil}}} = \sqrt{2} \cdot \sqrt{{{S_{\lceil Lhalf\rceil}}^2}}  =    2^{Lmax-\lceil Lhalf\rceil + 0.5}</math> onde <math>Lhalf = \forall L | L = \lceil L \rceil - 0.5</math>. <br />A mesma fórmula de ''S'' também nos permite calcular, conforme  [[osmc:Metodologia/Algoritmo_SQL/Issues#Issue_05_-_Cálculo_de_dígitos_base32|issue 05]], o número de dígitos base32 para se chegar no metro, a partir do nível ''Lcover'' do município: <math>Ndig1m = 1+\lceil (Lmax-Lcover)/2.5 \rceil</math>.
No caso do Brasil ''Lmax''=20, no caso de Camarões ''Lmax=18''.


O número de células por face, no nível ''L'', pode ser obtido por  <math>nCells_L = (S_0/S_{L})^2 = (2^{Lmax-Lmax+L})^2=2^{2L}</math>. É invariante por país, e válido para "níveis meio".  A área de uma célula qualquer de nível ''L'' é <math>{S_{L}}^2 = 2^{2\cdot(Lmax-L)}</math>.
:Nota. A fórmula de ''S'' funciona também para níveis-meio, <math>Lhalf \in \{ \forall x | x = \lceil x \rceil - 0,5 \}</math>, por exemplo ''L''=1,5. Isso se deve à suposição de que o "tamanho do lado genérico ''S'' de um retângulo" seja a raiz quadrada da área do retângulo, <math>S_{Lhalf}=\sqrt{A_{Lhalf}}</math>; e pela [[Generalized_Geohash/pt#Representação_geométrica|construção geométrica dos níveis-meio]], cujas células (necessariamente de áreas iguais) são a união de 2 células do próximo nível inteiro, ''Lprox'', <math>A_{Lhalf}=2\cdot{A_{Lprox}}</math>. Portanto, fazendo <math>Lprox={\lceil Lhalf\rceil}</math> temos: <br />&nbsp; <math>S_{Lhalf}=\sqrt{2\cdot{A_{Lprox}}} = \sqrt{2} \cdot \sqrt{{{S_{\lceil Lhalf \rceil}}^2}} = 2^{Lmax-\lceil Lhalf\rceil + 0,5}</math>.  


O número de células por município de área ''A'', no nível ''L'', pode ser obtido por  <math>nCellsA_L=A/{S_L}^2=A\cdot 2^{2\cdot(L-Lmax)}</math>. A cobertura uniforme municipal de ''m'' celulas do nivel ''K'' tem área <math>M=m\cdot {S_K}^2 = m\cdot 2^{2\cdot(Lmax-K)}</math>. Portanto número de células por ''M'', no nível ''L''&gt;''K'', será  
A <code>face_id</code>, ou seja, a cada célula da cobertura ''L0'' do país, podemos calcular o número de células-filhas no nível ''L'':  <br />&nbsp; <math>nCells_L = (S_0/S_{L})^2 = (2^{Lmax-Lmax+L})^2=2^{2L}</math> <br/>É invariante por país, e válido para "níveis meio".
<math>nCellsM_L=M/{S_L}^2= m\cdot 2^{2\cdot(Lmax-K)} \cdot 2^{2\cdot(L-Lmax)}= m\cdot 2^{2 \cdot(Lmax-K) + 2\cdot(L-Lmax)} = m\cdot 2^{2 \cdot (L-K)}</math>. O valor de ''M'' sempre será maior do que ''A'', de modo que o fator ''M''/''A'' será sempre maior que 1, ou  <math>M/A \geq 1</math>. Dessa desigualdade de áreas, substituindo pelos valores correspondentes de número de células,  podemos provar que <math>nCellsM_L\geq nCellsA_L</math>.
 
O padrão DNGS também prevê a cobertura municipal e regras para a construção da cobertura e do código logístico:
 
O número de células por município de área ''M'', no nível ''L'', pode ser obtido por  <math>nCellsM_L=M/{S_L}^2=M \cdot 2^{2\cdot(L-Lmax)}</math>. A cobertura uniforme municipal de ''c'' celulas do nivel ''K'' tem área <math>C=c\cdot {S_K}^2 = c\cdot 2^{2\cdot(Lmax-K)}</math>. <br/>Portanto número de células na área ''C'', no nível ''L''&gt;''K'', será<br />&nbsp;
<math>nCellsC_L=C/{S_L}^2= c \cdot 2^{2\cdot(Lmax-K)} \cdot 2^{2\cdot(L-Lmax)}= c \cdot 2^{2 \cdot(Lmax-K) + 2\cdot(L-Lmax)} = c \cdot 2^{2 \cdot (L-K)}</math> <br/>O valor de ''C'' sempre será maior do que ''M'', de modo que o fator ''C''/''M'' será sempre maior que 1, ou  <math>C/M \geq 1</math>. Dessa desigualdade de áreas, substituindo pelos valores correspondentes de número de células,  podemos provar que <math>nCellsC_L\geq nCellsM_L</math>.
 
A fórmula de ''S'' também nos permite calcular, conforme  [[osmc:Metodologia/Algoritmo_SQL/Issues#Issue_05_-_Cálculo_de_dígitos_base32|issue 05]], o número de dígitos base32 para se chegar no metro, a partir do nível ''Lcover'' do município: <math>Ndig1m = 1+\lceil (Lmax-Lcover)/2.5 \rceil</math>. O padrão DNGS não impõe a necessidade de interoperabilidade na bas32, mas se for uma decisão soberana, a escolha de ''Lcover'' nos municípios deve obedecer a essa restrição.


==Core Lib==
==Core Lib==
2 583

edições