[geos-devel] [GEOS] #997: ST_Union performance degradation from GEOS 3.6.x -> 3.7.x

GEOS geos-trac at osgeo.org
Thu Oct 10 12:08:36 PDT 2019


#997: ST_Union performance degradation from GEOS 3.6.x -> 3.7.x
-------------------------+---------------------------
 Reporter:  greenlaw     |       Owner:  geos-devel@…
     Type:  defect       |      Status:  new
 Priority:  major        |   Milestone:
Component:  Default      |     Version:  3.7.0
 Severity:  Significant  |  Resolution:
 Keywords:  union        |
-------------------------+---------------------------

Comment (by greenlaw):

 @mdavis Yes, the `ST_SnapToGrid` workaround seems like it should work
 perfectly for me as long as I use a small enough value (0.1 produced
 `ERROR:  GEOSUnaryUnion: TopologyException: Input geom 1 is invalid: Self-
 intersection at or near point -15008907.701449277 7619503.4876811597 at
 -15008907.701449277 7619503.4876811597`).

 Not terribly concerned about precision here, but 0.001 seems to work just
 fine, and the command completes in 79 sec. The resulting geometry looks
 good to me.

 I will put this change into production - don't expect any issues but will
 be sure to report back if I run into anything.

 Will be happy to test any potential fixes you guys come up with down the
 road.

 Thanks so much for your help.

 {{{
 EXPLAIN ANALYZE SELECT ST_Union(ST_SnapToGrid(ST_Buffer(wkb_geometry,
 100.0), 0.001))::geometry(Geometry,
 3857),category,vteccode,prod_type,validtime,starttime,endtime FROM
 public.nws_haz_hang_201910 GROUP BY
 category,vteccode,prod_type,validtime,starttime,endtime;
                                                        QUERY PLAN
 ------------------------------------------------------------------------------------------------------------------------
  HashAggregate  (cost=10.32..10.47 rows=10 width=706) (actual
 time=33352.916..79931.923 rows=5 loops=1)
    Group Key: category, vteccode, prod_type, validtime, starttime, endtime
    ->  Seq Scan on nws_haz_hang_201910  (cost=0.00..10.10 rows=10
 width=706) (actual time=0.006..0.041 rows=21 loops=1)
  Planning time: 0.133 ms
  Execution time: 79931.984 ms
 }}}

-- 
Ticket URL: <https://trac.osgeo.org/geos/ticket/997#comment:11>
GEOS <http://trac.osgeo.org/geos>
GEOS (Geometry Engine - Open Source) is a C++ port of the Java Topology Suite (JTS).


More information about the geos-devel mailing list