Hi Try to use the cleanGeometry function published on:
http://www.sogis1.so.ch/sogis/dl/postgis/cleanGeometry.sql for cleaning your geometries. Regards Horst ------------------------------------------------ Dr. Horst Düster Stv. Amtschef / GIS-Koordinator Kanton Solothurn Bau- und Justizdepartement Amt für Geoinformation SO!GIS Koordination Rötistrasse 4 CH-4501 Solothurn Telefon ++41(0)32 627 25 32 Telefax ++41(0)32 627 22 14 mailto:[email protected] http://www.agi.so.ch -----Ursprüngliche Nachricht----- Von: Simon Greener [mailto:[email protected]] Gesendet am: Dienstag, 3. Februar 2009 07:20 An: PostGIS Users Discussion Betreff: Re: [postgis-users] Cleaning non valid multipolygon Yves, I don't know if this helps. In Oracle, to fix self-intersecting polygons one can do a "self-union". I looked to see if this would work for PostGIS and, from what I can tell from my simple testing, it does: drop table crap; create table crap (oid serial); SELECT AddGeometryColumn('public', 'crap', 'geom', -1, 'MULTIPOLYGON', 2); alter TABLE crap DROP CONSTRAINT enforce_geotype_geom; alter TABLE crap ADD CONSTRAINT enforce_geotype_geom CHECK (geometrytype(geom) IN ('MULTIPOLYGON'::text,'POLYGON'::text) OR geom IS NULL); insert into crap (geom) values(st_geomfromtext('MULTIPOLYGON((( 376249.7830234 8717655.6050357, 376268.0818048 8717666.0116082, 376265.2666038 8717670.5117466, 376247.812391 8717660.3864341, 376249.7830234 8717655.6050357, 376247.812391 8717660.3864341, 376265.2666038 8717670.5117466, 376268.0818048 8717666.0116082, 376249.7830234 8717655.6050357)))')); insert into crap (geom) select ST_AsText(st_makepolygon(st_linemerge(st_union(geom,geom)))) from (select st_geomfromtext('MULTIPOLYGON((( 376249.7830234 8717655.6050357, 376268.0818048 8717666.0116082, 376265.2666038 8717670.5117466, 376247.812391 8717660.3864341, 376249.7830234 8717655.6050357, 376247.812391 8717660.3864341, 376265.2666038 8717670.5117466, 376268.0818048 8717666.0116082, 376249.7830234 8717655.6050357)))') as geom) as a; This may help. But I am sure more experienced experts have a better solution. S On Tue, 03 Feb 2009 06:00:18 +1100, Yves Moisan <[email protected]> wrote: > Hi All, > > I have some data from an AutoCAD file (dwg) for which some of the > multipolygon elements are not valid geometries. The pattern is pretty > simple : some polygons display the origin vertex 3 times as though one > started digitizing going clockwise to close the polygon and then came > back counterclockwise not necessarily exactly on the same vertices and > closed again. An example : > > "MULTIPOLYGON((( > 376249.7830234 8717655.6050357, > 376268.0818048 8717666.0116082, > 376265.2666038 8717670.5117466, > 376247.812391 8717660.3864341, > 376249.7830234 8717655.6050357, > 376247.812391 8717660.3864341, > 376265.2666038 8717670.5117466, > 376268.0818048 8717666.0116082, > 376249.7830234 8717655.6050357)))" > > Deleting the last 4 lines on that geometry and shoving it back in does > the job. I tried to find an automated way of doing this (buffer, > st_geometry ...) and but didn't find anything. Any pointer to an > automated way of doing that, short of writing my own function, which I > would need pointers for examples too :-), > > TIA, > > Yves Moisan > > _______________________________________________ > postgis-users mailing list > [email protected] > http://postgis.refractions.net/mailman/listinfo/postgis-users > -- SpatialDB Advice and Design, Solutions Architecture and Programming, Oracle Database 10g Administrator Certified Associate; Oracle Database 10g SQL Certified Professional Oracle Spatial, SQL Server, PostGIS, MySQL, ArcSDE, Manifold GIS, Radius Topology and Studio Specialist. 39 Cliff View Drive, Allens Rivulet, 7150, Tasmania, Australia. Website: www.spatialdbadvisor.com Email: [email protected] Voice: +613 9016 3910 Mobile: +61 418 396391 Skype: sggreener Longitude: 147.20515 (147° 12' 18" E) Latitude: -43.01530 (43° 00' 55" S) NAC:W80CK 7SWP3 _______________________________________________ postgis-users mailing list [email protected] http://postgis.refractions.net/mailman/listinfo/postgis-users
_______________________________________________ postgis-users mailing list [email protected] http://postgis.refractions.net/mailman/listinfo/postgis-users
