Ir para o conteúdo

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

movimentando conteudo para seção de fórmulas e definições
m (→‎Core: areas)
(movimentando conteudo para seção de fórmulas e definições)
Linha 37: Linha 37:
[[Arquivo:MortonCurve IJ-JI.png|580px|center]]
[[Arquivo:MortonCurve IJ-JI.png|580px|center]]


==Core==
=== Fórmulas e definições ===
Tanto o padrão DGGS como o DNGS são relativos a "Discrete Grid Systems", ou seja, um conjunto hierárquico de grades, cada qual no seu nível ''L'', e assumindo apenas valores discretizados de posição. As "funções ''core''" do padrão DNGS garantem a ida e volta entre os diversos sistemas de coordenadas necessários à manipulação dos dados, antes e depois da discritização.
'''Discretizadores''': transformam as coordenadas contínuas XY, de posição no plano projetado,  em coordenadas discretas IJ, de localização na grade hierárquica.  Quem amarra a posição hierárquica — ''grid hierarchical level'' do sistema de grades — com localização XY é o tamanho de lado ''S'' (''side size'') da célula de nível ''L''.


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 <math>S_{L}=2^{Lmax-L}</math>. No caso do Brasil ''Lmax''=20, no caso de Camarões ''Lmax=18''.  


:Nota. 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>.
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>.


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>.
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>.
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 decisão de usar a sequência XY e não XY precisa talvez ser revista. Na cultura escolar brasileira XY é horizontal-vertical. Na cultura das imagens de satélite e geoprocessamento XY é vertical-horizontal. Adotamos a "cultura PostGIS", das funções ''standard spatial type'' (aquelas com prefixo "ST_").
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á
<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>.
 
==Core Lib==
Tanto o padrão DGGS como o DNGS são relativos a "Discrete Grid Systems", ou seja, um conjunto hierárquico de grades, cada qual no seu nível ''L'', e assumindo apenas valores ''discretizados'' de posição. As "funções ''core''" do padrão DNGS garantem a ida e volta entre os diversos sistemas de coordenadas necessários à manipulação dos dados, antes e depois da ''discretização''.
'''Discretizadores''': transformam as coordenadas contínuas XY, de posição no plano projetado,  em coordenadas discretas IJ, de localização na grade hierárquica.  Quem amarra a posição hierárquica &mdash; ''grid hierarchical level'' do sistema de grades &mdash; com localização XY é o tamanho de lado ''S'' (''side size'') da célula de nível ''L''.  
 
<!-- Na cultura escolar brasileira XY é horizontal-vertical. Na cultura das imagens de satélite e geoprocessamento XY é vertical-horizontal. Adotamos a "cultura PostGIS", das funções ''standard spatial type'' (aquelas com prefixo "ST_").-->


<syntaxhighlight lang="sql" style="font-size: 80%;">
<syntaxhighlight lang="sql" style="font-size: 80%;">
2 583

edições