[postgis-users] Union a very big Multipolygon table with self intersections
Simon Greener
simon at spatialdbadvisor.com
Fri Feb 5 18:17:11 PST 2010
How about something like this:
select id, ST_Union(ST_Accum(case when ST_IsValid(a.the_geom) = 't' then a.the_geom else st_buffer(a.the_geom,0) end) as the_geom
from (select id, the_geom
from <<table>>
where the_geom is not null
and geometrytype(the_geom) != 'GEOMETRYCOLLECTION'
union all
SELECT gid, (ST_Dump(the_geom)).geom as the_geom
from <<table>>
where the_geom is not null
and geometrytype(the_geom) = 'GEOMETRYCOLLECTION'
) as a;
The split based on GEOMETRYCOLLECTION is that when I first tested the STR indexed ST_Union I found that
performance was affectedif the union set includes an mpoly.
regards
SImon
On Fri, 05 Feb 2010 19:44:51 +1100, ibrahim saricicek <ibrahimsaricicek at gmail.com> wrote:
> Hi;
>
> create a new geometry column
>
> use update table set new_column=st_buffer(the_geom,0). IsValid will return
> true. Then try the union operation..
>
> IBO..
>
> On Fri, Feb 5, 2010 at 12:46 AM, Javier de la Torre
> <jatorre at vizzuality.com>wrote:
>
>> Hi all,
>>
>> I have a table with a MULTIPOLYGON field with around 100k records. Some of
>> these records, 2K have self intersections and other problems that make
>> ST_IsValid return false. The polygons overlap a lot and I wanted to generate
>> another table that will be the union of all polygons.
>>
>> The table looks like
>> id, the_geom
>>
>> What would be the best way to union all of the geometries into a new table
>> where there is only POLYGONS that do not overlap?
>>
>> Thanks in advance.
>>
>> Javier.
>>
>>
>> _______________________________________________
>> 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, FME, Radius Topology and Studio Specialist.
39 Cliff View Drive, Allens Rivulet, 7150, Tasmania, Australia.
Website: www.spatialdbadvisor.com
Email: simon at spatialdbadvisor.com
Voice: +61 362 396397
Mobile: +61 418 396391
Skype: sggreener
Longitude: 147.20515 (147° 12' 18" E)
Latitude: -43.01530 (43° 00' 55" S)
GeoHash: r22em9r98wg
NAC:W80CK 7SWP3
More information about the postgis-users
mailing list