Ir para o conteúdo

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

(Criou página com 'Issues e discussões conceituais, antes de se partir para a implementação. == Issue 01 - Uso ótimo do hInt64 == Nesta issue buscamos garantir melhor ocupação nos 57 disponíveis de geocódigo hInt64. Os blocos hierárquicos de bits seriam os seguintes, concatenados: : <code>$country$L0$grid</code> * O bloco <code>$grid</code> não pode ser otimizado. Possui como principal requsito a garantia de um número par de b...')
 
Linha 17: Linha 17:
=== Bloco L0 ===
=== Bloco L0 ===


Se a cobertura do país for exatamente uma célula quadrada, pode ser ausente, mas em geral sua geometria precisa ser otimizada, para mais de 70% da área de L0 ser ocupada pelo polígono do território.
Se a cobertura do país for exatamente uma célula quadrada, pode ser ausente, mas em geral sua geometria precisa ser otimizada, para mais de 45% da área de L0 ser ocupada pelo polígono do território. Sem essa exigência de ocupação as aplicações de abrangência  global perdem performance. As interseções entre países precisam ser minimizadas.


O máximo de células é 16, o mínimo 2 (em países com fronteiras instáveis o mais seguro é forçar reserva). Em países com ilhas e células de cobertura com baixo percentual de uso (e possibilidade de representação com uma só célula-filha) pode-se adotar mais que 16 células de cobertura, emulando um nível L0 com mosaico de pedaços, como no caso do Brail. Vamos discutir os três casos a seguir. <br/> A questão principal é se vai permitir ou não quantidade ímpar de células.
<syntaxhighlight lang="sql">
WITH m as (
  select pais, case when count(*)>16 then 16 else count(*) end*max(area_km2) as mx
  from report.v001_osmc_coverage_l0_list group by 1
)
SELECT v.pais, count(*) n, sum(v.area_km2) as km2, round(100.0*sum(v.area_km2/m.mx))::text||'%' perc_coberto
FROM report.v001_osmc_coverage_l0_list v INNER JOIN m ON m.pais=v.pais
GROUP BY 1;
</syntaxhighlight>
<pre>
pais| n  |  km2  | perc_coberto
BR | 18 | 8729499 | 50%
CM | 14 |  466041 | 48%
CO | 16 | 1886770 | 44%
</pre>


No caso do Brasil a codificação L0 ...
O máximo de células é 16, o mínimo 2 (em países com fronteiras instáveis o mais seguro é forçar reserva). Em países com ilhas e células de cobertura com baixo percentual de uso (e possibilidade de representação com uma só célula-filha) pode-se adotar mais que 16 células de cobertura, emulando um nível L0 com mosaico de pedaços, como no caso do Brail. Vamos discutir os três casos a seguir. <br /> A questão principal é se vai permitir ou não quantidade ímpar de células.
 
No caso do Brasil a codificação L0 requer 2 conjuntos de ilhas, depois das 16 coberturas territoriais. Basta 1 bit para codificar se é uma "falsa célula" ou não. O extremo sul do Brasil, que recebeu o rótulo <code>f</code>, teve sua área subdivida em mosaico para comportar as "falsas células" <code>10=g</code> e  <code>11=h</code>. Na prática são todas  <code>f</code>, e o geocódigo só "assume sua representação concreta" a partir do segundo dígito: <code>fT</code> para o território extremo sul, <code>fN</code> para as ilhas ao sul e <code>fP</code> para Fernando de Noronha.
 
[[Arquivo:BR-L0coverSci-f.png|miniaturadaimagem|420px|Goecódigo científico do Brasil. Geometria concreta das células-filhas de "f". Apenas a partir de <code>fT</code> (e eventualmente seus vizinhos fY, fZ e fS), <code>fP</code> e <code>fN</code> que a grade existe.]]
 
{|
|-
|<pre>
pais | b16h | area_km2
------+------+----------
BR  | 00  |  275241
BR  | 01  |  757637
BR  | 02  |  645014
BR  | 03  |  132780
BR  | 04  |  619969
BR  | 05  |  1075008
BR  | 06  |  1099512
BR  | 07  |  1054743
BR  | 08  |  103225
</pre>
|<pre>
pais | b16h | area_km2
------+------+----------
BR  | 09  |  333725
BR  | 0a  |  1099383
BR  | 0b  |  723005
BR  | 0c  |    19403
BR  | 0d  |  714206
BR  | 0e  |    54071
BR  | 0f  |    17440
BR  | 10  |    1519
BR  | 11  |    3618
</pre>
|}
2 384

edições