2 391
edições
(→Geração da grade: procedure) |
|||
Linha 114: | Linha 114: | ||
<syntaxhighlight lang="sql"> | <syntaxhighlight lang="sql"> | ||
CREATE TABLE | DROP TABLE if exists grid_br2.tmp_cells CASCADE; | ||
CREATE TABLE grid_br2.tmp_cells (gid_vbit bit varying, geom public.geometry); | |||
drop PROCEDURE osmc.grid_generate_all_levels_logistic; | drop PROCEDURE if exists osmc.grid_generate_all_levels_logistic; | ||
CREATE or replace PROCEDURE osmc.grid_generate_all_levels_logistic( | CREATE or replace PROCEDURE osmc.grid_generate_all_levels_logistic( | ||
p_lev_max numeric, p_contry text, | p_lev_max numeric, p_contry text, | ||
Linha 122: | Linha 123: | ||
p_contry_base integer, | p_contry_base integer, | ||
p_lev0 numeric default 2.5 | p_lev0 numeric default 2.5 | ||
) | ) LANGUAGE plpgsql AS $f$ | ||
DECLARE | DECLARE | ||
tpl text; | tpl text; | ||
Linha 144: | Linha 144: | ||
group by ord/1000 | group by ord/1000 | ||
) LOOP | ) LOOP | ||
s:=''; | |||
FOR lev IN (select x from generate_series(p_lev0, p_lev_max, 2.5) t(x)) LOOP | FOR lev IN (select x from generate_series(p_lev0, p_lev_max, 2.5) t(x)) LOOP | ||
IF lev>p_lev0 THEN s := s || E'\n UNION ALL \n'; END IF; | IF lev>p_lev0 THEN s := s || E'\n UNION ALL \n'; END IF; | ||
s := s || format(tpl, lev::text, p_contry, cover_frag::text, p_contry_base::text); | s := s || format(tpl, lev::text, p_contry, cover_frag::text, p_contry_base::text); | ||
END LOOP; -- lev | END LOOP; -- lev | ||
s := s|| E'\n ORDER BY 1'; | |||
s := E'INSERT INTO grid_b2.tmp_cells \n' || s || E';\n COMMIT;'; | |||
PERFORM s; | |||
END LOOP; -- cover_frag | END LOOP; -- cover_frag | ||
END; | END; | ||
$ | $f$; | ||
</syntaxhighlight> | </syntaxhighlight> |
edições