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

m
(→‎Lib de Grades: half side)
m (→‎Lib de Grades: intlevel)
Linha 6: Linha 6:


<syntaxhighlight lang="sql" style="font-size: 80%;">
<syntaxhighlight lang="sql" style="font-size: 80%;">
drop FUNCTION if exists grid_br.xyS_collapseTo_ijS(int,int,int);
drop FUNCTION if exists grid_br.xyS_collapseTo_ijS(int,int,int,boolean);
drop FUNCTION if exists grid_br.xyS_collapseTo_ijS(int[]);
drop FUNCTION if exists grid_br.xyS_collapseTo_ijS(int[],boolean);
drop FUNCTION if exists grid_br.xylevel_collapseTo_ijS(int,int,int);
drop FUNCTION if exists grid_br.xylevel_collapseTo_ijS(int,int,int);
drop FUNCTION if exists grid_br.xylevel_collapseTo_ijS(int[]);
drop FUNCTION if exists grid_br.xylevel_collapseTo_ijS(int[]);
Linha 15: Linha 15:
$f$ LANGUAGE SQL IMMUTABLE;
$f$ LANGUAGE SQL IMMUTABLE;


CREATE FUNCTION grid_br.xyS_collapseTo_ijS(yxs int[]) RETURNS int[] AS $wrap$
CREATE FUNCTION grid_br.xyS_collapseTo_ijS( yxs int[], is_half boolean default false ) RETURNS int[] AS $wrap$
   SELECT grid_br.xyS_collapseTo_ijS(yxs[1], yxs[2], yxs[3])
   SELECT grid_br.xyS_collapseTo_ijS(yxs[1], yxs[2], yxs[3], is_half)
$wrap$ LANGUAGE SQL IMMUTABLE
$wrap$ LANGUAGE SQL IMMUTABLE
;
;
CREATE FUNCTION grid_br.xylevel_collapseTo_ijS(y int, x int, level int default 0) RETURNS int[] AS $wrap$
 
   SELECT grid_br.xyS_collapseTo_ijS($1, $2, (2^(20-level))::int)
CREATE FUNCTION grid_br.xylevel_collapseTo_ijS(y int, x int, intlevel int default 0) RETURNS int[] AS $wrap$
   SELECT grid_br.xyS_collapseTo_ijS($1, $2, (2^(20-intlevel/10.0))::int, (intlevel%2)=1)
$wrap$ LANGUAGE SQL IMMUTABLE
$wrap$ LANGUAGE SQL IMMUTABLE
;
;
Linha 28: Linha 29:
;
;
-----
-----
drop FUNCTION if exists grid_br.ijS_to_xySref(int,int,int);
drop FUNCTION if exists grid_br.ijS_to_xySref(int,int,int,boolean);
drop FUNCTION if exists grid_br.ijS_to_xySref(int[]);
drop FUNCTION if exists grid_br.ijS_to_xySref(int[],boolean);


CREATE or replace FUNCTION grid_br.ijS_to_xySref(i int, j int, s int, is_half boolean default false) RETURNS int[] AS $f$
CREATE or replace FUNCTION grid_br.ijS_to_xySref(i int, j int, s int, is_half boolean default false) RETURNS int[] AS $f$
Linha 35: Linha 36:
$f$ LANGUAGE SQL IMMUTABLE;
$f$ LANGUAGE SQL IMMUTABLE;


CREATE FUNCTION grid_br.ijS_to_xySref(yxl int[]) RETURNS int[] AS $wrap$
CREATE FUNCTION grid_br.ijS_to_xySref(yxl int[], is_half boolean default false) RETURNS int[] AS $wrap$
   SELECT grid_br.ijS_to_xySref(yxl[1], yxl[2], yxl[3])
   SELECT grid_br.ijS_to_xySref(yxl[1], yxl[2], yxl[3],is_half)
$wrap$ LANGUAGE SQL IMMUTABLE;
$wrap$ LANGUAGE SQL IMMUTABLE;
</syntaxhighlight>
</syntaxhighlight>
Linha 48: Linha 49:
) t group by 1,2,3 order by 1;
) t group by 1,2,3 order by 1;
</syntaxhighlight>
</syntaxhighlight>
Comparando com a definição de grade do Brasil, de zero a "e":
Grade da Colômbia, de zero a "e":
<pre>
<pre>
   grid_l0_cell_ij:  40 41 42 43 30 31 32 33 34 21 22 23 11 12 13
   grid_l0_cell_ij:  40 41 42 43 30 31 32 33 34 21 22 23 11 12 13
2 384

edições