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

m
(Algoritmo e funções finais de resolução)
Linha 172: Linha 172:


É um pouco mais complexo, para contemplar os casos de pontos sobre cobertura fantasma. Existe uma condição de validade e um ajuste do ponto ao nível:
É um pouco mais complexo, para contemplar os casos de pontos sobre cobertura fantasma. Existe uma condição de validade e um ajuste do ponto ao nível:
:<code>SE lenght(cbits0)>0 e level_desejado<1.5 THEN NULL;  ELSE recalcula xy0 dentro da célula.</code>
:<code>SE lenght(cbits0)>4 e level_desejado<1.5 THEN NULL;  ELSE recalcula xy0 dentro da célula.</code>
 
<syntaxhighlight lang="sql" style="font-size: 80%;">
drop FUNCTION if exists grid_br.xyS_collapseTo_ijS(int,int,int)
;
-- cuidado é YX! ver subtração
CREATE FUNCTION grid_br.xyS_to_cbits(
  y int,
  x int,
  s int,
  use_country_prefix boolean false
) RETURNS varbit AS $f$
SELECT CASE WHEN use_country_prefix THEN b'0001001100' ELSE b'' END
        || cbits0 || ints_to_interleavedbits(x-xy0[1], y-xy0[2], 20-s)
FROM (
  SELECT grid_br.ijS_to_xySref(ij0) as xy0, grid_br.IJ0_to_L0(ij0) as cbits0
  FROM (SELECT grid_br.xyS_collapseTo_ijS(x,y)) t0(ij0)
) t1
$f$ LANGUAGE SQL IMMUTABLE;
</syntaxhighlight>


==Demais convenções==
==Demais convenções==
2 391

edições