osmc:Metodologia/Algoritmo SQL/Lib: mudanças entre as edições
(→Core: add formula de Ndig1m) |
(→Core: tabela de perfil Lcover) |
||
Linha 33: | Linha 33: | ||
FROM ( SELECT COALESCE($1[3],0) ) t1(intlevel) | FROM ( SELECT COALESCE($1[3],0) ) t1(intlevel) | ||
) t2 | ) t2 | ||
$f$ language SQL IMMUTABLE; | |||
CREATE FUNCTION grid_br.logistic_Ndig1m(intlevel_cover int) RETURNS real[] AS $f$ | |||
SELECT array[ Lcover, ceil(Ndig1m), ceil(Ndig1m)-Ndig1m, | |||
2^(Lmax-Lcover-ceil(Ndig1m)*2.5), | |||
CASE WHEN ceil(Ndig1m)-Ndig1m=0 THEN NULL ELSE 2^(Lmax-Lcover-floor(Ndig1m)*2.5) END ] | |||
FROM ( | |||
SELECT *, (Lmax-Lcover)/2.5 as Ndig1m | |||
FROM (SELECT 20 as Lmax, intlevel_cover/10.0 as Lcover) t1 | |||
) t2 | |||
$f$ language SQL IMMUTABLE; | $f$ language SQL IMMUTABLE; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<!-- | |||
select x[1] as level_cover, x[2] as Ndigits_for_1m, round(x[4],2) as side_size, round(x[5],2) as size_before from (select grid_br.logistic_Ndig1m(intLevel) as x from generate_series(40,90,5) t1(intLevel)) t2; | |||
--> | |||
A escolha de nivel ''Lcover'' de cada município no caso do Brasil vai ter o seguinte perfil dado pela função <code>logistic_Ndig1m()</code>. Como o metro é a maior resolução significativa, é interesante não permitir resoluções finais inferiores a meio metro: por exemplo quando a cobertura ótima ''Lcover'' for 4 ou 4.5, usar no máximo 6 dígitos ao invés de 7, já que 2 metros e 1.4 metros são resoluções razoáveis para endereços. Idem ''Lcover''6.5 e 7 etc. | |||
{| class="wikitable" | |||
|+ Número de dígitos base32 para se chegar no metro, conforme ''Lcover'' do município | |||
|- | |||
|''Lcover'' || Ndigits for 1m || ''side_size'' || ''size_before'' | |||
|- | |||
| 4 || 7 || 0.35 || 2.00 | |||
|- | |||
| 4.5 || 7 || 0.25 || 1.41 | |||
|- | |||
| 5 || 6 || 1.00 || | |||
|- | |||
| 5.5 || 6 || 0.71 || 4.00 | |||
|- | |||
| 6 || 6 || 0.50 || 2.83 | |||
|- | |||
| 6.5 || 6 || 0.35 || 2.00 | |||
|- | |||
| 7 || 6 || 0.25 || 1.41 | |||
|- | |||
| 7.5 || 5 || 1.00 || | |||
|- | |||
| 8 || 5 || 0.71 || 4.00 | |||
|- | |||
| 8.5 || 5 || 0.50 || 2.83 | |||
|- | |||
| 9 || 5 || 0.35 || 2.00 | |||
|} | |||
'''Construção da geometria''': | '''Construção da geometria''': | ||