On Wed, Feb 15, 2012 at 11:17:49AM -0500, Travis Kirstine wrote: > Thanks Nicklas > > I do agree that this is a bad idea. I have checked the resultant > geometries and they are invalid (using FME) > > Original > POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1)) > > Results > POLYGON((0 0,4 0,2 1,1 1,1 2,2 2,2 1,4 0,4 4,0 4,0 0)) > > Unfortunately, I cannot alter the application to render the donuts > correctly. I have consider extracting the interior rings as polygons > and stacking them but as you had mentioned but this becomes very > complicated (island within lakes within islands etc...) > > Although the "bridge building" method would result in invalid > geometries it seems to work for this purpose (display only). > > If anyone has any hints on how to build this query to create bad > polygons : ) they would be appreciated
1) Dump the rings of your polygon 2) Find closest line between shell (path = 0?) to each of the holes 3) Add all rings boundaries + the lines found in (2) to a collection 4) Linemerge the collection of multilines 5) Verify the result is a single, closed line 6) Realize the resulting line is not simple (just for fun) 7) Pass the resulting line to ST_MakePoly --strk; ,------o-. | __/ | Delivering high quality PostGIS 2.0 ! | / 2.0 | http://strk.keybit.net `-o------' _______________________________________________ postgis-users mailing list postgis-users@postgis.refractions.net http://postgis.refractions.net/mailman/listinfo/postgis-users