2 585
edições
(Criou página com '== Lib de Grades == Biblioteca para simplificar a geração de grades. Exemplificando implementação dentro do schema <code>grid_br</code> das grades do Brasil. Convensionou-se em GGeohash usar YX no lugar de XY. A seguir avaliando o uso default de XYref no lugar de XYcenter, para o desenho da célula. <syntaxhighlight lang="sql" style="font-size: 80%;"> drop FUNCTION grid_br.xyS_collapseTo_ijS; CREATE FUNCTION grid_br.xyS_collapseTo_ijS(y int, x int, s int default 1...') |
|||
Linha 6: | Linha 6: | ||
<syntaxhighlight lang="sql" style="font-size: 80%;"> | <syntaxhighlight lang="sql" style="font-size: 80%;"> | ||
drop FUNCTION grid_br.xyS_collapseTo_ijS; | drop FUNCTION if exists grid_br.xyS_collapseTo_ijS(int,int,int); | ||
drop FUNCTION if exists grid_br.xyS_collapseTo_ijS(int[]); | |||
drop FUNCTION if exists grid_br.xylevel_collapseTo_ijS(int,int,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) 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)/s, (x-2715000)/s, s ] | SELECT array[ (y-6727000)/s, (x-2715000)/s, s ] | ||
$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[]) RETURNS int[] AS $wrap$ | ||
SELECT grid_br.xyS_collapseTo_ijS(yxs[1], yxs[2], yxs[3]) | |||
$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) | |||
$wrap$ LANGUAGE SQL IMMUTABLE | |||
; | |||
CREATE FUNCTION grid_br.xylevel_collapseTo_ijS(yxl int[]) RETURNS int[] AS $wrap$ | |||
SELECT grid_br.xyS_collapseTo_ijS(yxl[1], yxl[2], yxl[3]) | SELECT grid_br.xyS_collapseTo_ijS(yxl[1], yxl[2], yxl[3]) | ||
$wrap$ LANGUAGE SQL IMMUTABLE; | $wrap$ LANGUAGE SQL IMMUTABLE | ||
; | |||
----- | |||
drop FUNCTION if exists grid_br.ijS_to_xySref(int,int,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$ | |||
SELECT array[ 6727000 + i*s, 2715000 + j*s, s ] | |||
$f$ LANGUAGE SQL IMMUTABLE; | |||
CREATE FUNCTION grid_br.ijS_to_xySref(yxl int[]) RETURNS int[] AS $wrap$ | |||
CREATE FUNCTION grid_br. | SELECT grid_br.ijS_to_xySref(yxl[1], yxl[2], yxl[3]) | ||
SELECT grid_br. | |||
$wrap$ LANGUAGE SQL IMMUTABLE; | $wrap$ LANGUAGE SQL IMMUTABLE; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
edições