AW: Re: [postgis-users] Cleaning non valid multipolygon

Düster Horst Horst.Duester at bd.so.ch
Mon Feb 2 23:59:02 PST 2009


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:horst.duester at bd.so.ch
http://www.agi.so.ch



-----Ursprüngliche Nachricht-----
Von: Simon Greener [mailto:simon at spatialdbadvisor.com]
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
<yves.moisan at boreal-is.com> 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
> postgis-users at postgis.refractions.net
> 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: simon at spatialdbadvisor.com
  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
postgis-users at postgis.refractions.net
http://postgis.refractions.net/mailman/listinfo/postgis-users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20090203/b9fd8880/attachment.html>


More information about the postgis-users mailing list