osmc:Metodologia/Algoritmo SQL/Lib: mudanças entre as edições
m (→Lib de Grades) |
(→Lib de Grades: half side) |
||
Linha 11: | Linha 11: | ||
drop FUNCTION if exists grid_br.xylevel_collapseTo_ijS(int[]); | drop FUNCTION if exists grid_br.xylevel_collapseTo_ijS(int[]); | ||
CREATE FUNCTION grid_br.xyS_collapseTo_ijS(y int, x int, s int default 1048576, is_half boolean default false) RETURNS int[] AS $f$ | |||
CREATE FUNCTION grid_br.xyS_collapseTo_ijS(y int, x int, s int default 1048576) RETURNS int[] AS $f$ | SELECT array[ (y-6727000)/CASE WHEN is_half AND s>=2 THEN s/2 ELSE s END, (x-2715000)/s, s ] | ||
SELECT array[ (y-6727000)/s, (x-2715000)/s, s ] | |||
$f$ LANGUAGE SQL IMMUTABLE; | $f$ LANGUAGE SQL IMMUTABLE; | ||
Linha 32: | Linha 31: | ||
drop FUNCTION if exists grid_br.ijS_to_xySref(int[]); | drop FUNCTION if exists grid_br.ijS_to_xySref(int[]); | ||
CREATE or replace FUNCTION grid_br.ijS_to_xySref(i int, j int, s int) 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$ | ||
SELECT array[ 6727000 + i*s, 2715000 + j*s, s ] | SELECT array[ 6727000 + i*CASE WHEN is_half AND s>=2 THEN s/2 ELSE s END, 2715000 + j*s, s ] | ||
$f$ LANGUAGE SQL IMMUTABLE; | $f$ LANGUAGE SQL IMMUTABLE; | ||