1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
--
-- PostGIS - Spatial Types for PostgreSQL
-- http://postgis.net
--
-- Copyright (C) 2011 Sandro Santilli <strk@kbt.io>
--
-- This is free software; you can redistribute and/or modify it under
-- the terms of the GNU General Public Licence. See the COPYING file.
--
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
--
-- Functions used to polygonize topology edges
--
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
--{
--
-- int Polygonize(toponame)
--
-- TODO: allow restricting polygonization to a bounding box
--
-- }{
CREATE OR REPLACE FUNCTION topology.polygonize(toponame varchar)
RETURNS text
AS
$$
DECLARE
sql text;
rec RECORD;
faces int;
BEGIN
sql := 'SELECT (st_dump(st_polygonize(geom))).geom from '
|| quote_ident(toponame) || '.edge_data';
faces = 0;
FOR rec in EXECUTE sql LOOP
BEGIN
PERFORM topology.AddFace(toponame, rec.geom);
faces = faces + 1;
EXCEPTION
WHEN OTHERS THEN
RAISE WARNING 'Error registering face % (%)', rec.geom, SQLERRM;
END;
END LOOP;
RETURN faces || ' faces registered';
END
$$
LANGUAGE 'plpgsql';
--} Polygonize(toponame)
|