On Mon, Apr 09, 2012 at 07:33:41PM +0200, Nicolas Ribot wrote: > 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 ?
It's one way, there may be multiple ones. Add this new way to to wiki ? It'd be interesting to see some banchmarks of the two methods you reported. I'd point out that the toTopoGeom function does the association with you, directly giving you a TopoGeometry object back. Brent didn't use TopoGeometry at all, which is legit, but that's the intended mean to associate attributes to topologically-defined locations. I've been actually thinking that an ST_Simplify() override taking a TopoGeometry input might be a good idea. You would be simplifying the same up to twice each, but the usage would be simper. --strk; > > 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 -- ,------o-. | __/ | Delivering high quality PostGIS 2.0 ! | / 2.0 | http://strk.keybit.net - http://vizzuality.com `-o------' _______________________________________________ postgis-users mailing list postgis-users@postgis.refractions.net http://postgis.refractions.net/mailman/listinfo/postgis-users