Hmm much easier with Postgis Topology...

(thanks Brent for the Topology example)

By the way, is it the right way to use topology to simplify a layer ?

create table new_dept as (
        select gid, code_dept, (st_dump(geom)).*
        from departement
);
create index new_dept_geom_gist on new_dept using gist(geom);

-- create new empty topology structure
select CreateTopology('topo1',2154,0);

-- add all departements polygons to topology in one operation as a collection
select ST_CreateTopoGeo('topo1',ST_Collect(geom))
from departement;

-- create a new topo based on the simplification of existing one
-- should not be the right way to do it, but calling ST_ChangeEdgeGeom
failed with a simplify linestring
select CreateTopology('topo2',2154,0);

select ST_CreateTopoGeo('topo2', geom)
from (
        select ST_Collect(st_simplifyPreserveTopology(geom, 10000)) as geom
        from topo1.edge_data
) as foo;

-- associates new simplified faces with points on surface, in the new_dept table
alter table new_dept add column simple_geom geometry(POLYGON, 2154);

-- retrieves polygons by comparing surfaces (pip is not enough for
odd-shaped polygons)
with simple_face as (
        select st_getFaceGeometry('topo2', face_id) as geom
        from topo2.face
        where face_id > 0
) update new_dept d set simple_geom = sf.geom
from simple_face sf
where st_intersects(d.geom, sf.geom)
and st_area(st_intersection(sf.geom, d.geom))/st_area(sf.geom) > 0.5;

Nicolas

On 9 April 2012 01:02, Nicolas Ribot <nicolas.ri...@gmail.com> wrote:
> For those interested, I've added an entry to the postgis wiki showing
> an example of polygon layer simplification:
>
> http://trac.osgeo.org/postgis/wiki/UsersWikiSimplifyPreserveTopology
>
> Nicolas
_______________________________________________
postgis-users mailing list
postgis-users@postgis.refractions.net
http://postgis.refractions.net/mailman/listinfo/postgis-users

Reply via email to