Hallo

As said before you will gain a lot if upgrading since PostGIS has implemented 
cascading union since 1.3.


You say that you only want to union intersecting polygons.


Easier is if it is ok to union all polygons with common attribute to 
multipolygons.


ST_Union is an aggregate function which means it can be used like this:


SELECT ST_Union(geom) as new_geom , group_id FROM my_polygons GROUP BY group_id;


Then if you want polygons taht doesn't intersect on different rows you can dump 
them, then it could look like this:


SELECT (ST_Dump(new_geom)).geom as newest_geom, id FROM
(SELECT ST_Union(geom) as new_geom , group_id FROM my_polygons GROUP BY 
group_id) a;

There is many more possibilities, but the point is that you are in the 
SQL-world now. iterations is done by the database in a very efficient way.


HTH


Nicklas



2013-02-01 Rebecca Clarke  wrote:

>
Hi there>

>>
Looking for some advice.>

>>
I have a table with thousands of polygon records.>

>>
I want to union all intersecting polygons that have the same attributes into 
one polygon (So one record, rather than 10 or 20 etc.). >

>>
Can anyone recommend the best way to do this.>

>>
I can do a loop which goes through each record, unions its geometry with the 
geometry's of the other matching records that intersect with it, then move to 
the next record. Problem with this is that it creates duplicate polygons when 
it comes to a record that has already been unioned with a previous one record. 
I can easily delete any duplicate records generated, but I'm wondering if 
there's a less long winded way.>

>>
I hope I'm explaining myself correctly.>

>>
My details are:>
postgis 1.3.5>
PostgreSQL 8.3.8>

>>
Many thanks in advance.>

>>
Rebecca>

>
_______________________________________________
postgis-users mailing list
[email protected]
http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users

Reply via email to