[postgis-users] ST_Union (8.4) and TopologyException

Simon Greener simon at spatialdbadvisor.com
Sun Aug 9 16:31:28 PDT 2009


Paul and Regina,

> The "high speed" union can only kick in when run against collections
> consisting entirely of polygons. 

So I have to use ST_Accum as in:

create table simon.si_result 
as 
select i.si_grouping_f_id, ST_Difference(s.geom,i.geom) as geom
  from simon.si_grouping_f s
       inner join 
       (select si_grouping_f_id, ST_Union(ST_Accum(a.geom)) as geom
          from simon.si_grouping_f_store_f a
         where geom is not null 
         group by si_grouping_f_id
        ) as i
        on (s.id = i.si_grouping_f_id);

Result: Query returned successfully with no result in 3056063 ms.

That is just over 50 minutes which is about twice as fast as without. Not bad.

Recasting it the way Regina wanted:

> So I would write your below as
>
> create table simon.si_result
> as
> WITH i AS
> (select si_grouping_f_id, ST_Union(a.geom) as geom
>           from simon.si_grouping_f_store_f a
>          where geom is not null
>          group by si_grouping_f_id
>         )
> select i.si_grouping_f_id, ST_Difference(s.geom,i.geom) as geom
>   from simon.si_grouping_f s
>        inner join i
>         on (s.id = i.si_grouping_f_id);

Ran slowly until I put ST_Accum() in the ST_Union. 

> (select si_grouping_f_id, ST_Union(ST_Accum(a.geom)) as geom

The result was it processed in 3538468ms or 59mins.

S
-- 
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)
NAC:W80CK 7SWP3



More information about the postgis-users mailing list