[postgis-tickets] r17801 - Fix ST_SnapToGrid output having an outdated bbox

Raul raul at rmr.ninja
Mon Sep 2 05:15:42 PDT 2019


Author: algunenano
Date: 2019-09-02 05:15:42 -0700 (Mon, 02 Sep 2019)
New Revision: 17801

Modified:
   branches/2.3/NEWS
   branches/2.3/postgis/lwgeom_functions_analytic.c
   branches/2.3/regress/simplifyvw.sql
   branches/2.3/regress/simplifyvw_expected
   branches/2.3/regress/snaptogrid.sql
   branches/2.3/regress/snaptogrid_expected
Log:
Fix ST_SnapToGrid output having an outdated bbox

Closes #4495


Modified: branches/2.3/NEWS
===================================================================
--- branches/2.3/NEWS	2019-09-02 12:10:34 UTC (rev 17800)
+++ branches/2.3/NEWS	2019-09-02 12:15:42 UTC (rev 17801)
@@ -7,6 +7,7 @@
   - #4492, Fix ST_Simplify ignoring the value of the 3rd parameter (Raúl Marín)
   - #4494, Fix ST_Simplify output having an outdated bbox (Raúl Marín)
   - #4493, Fix ST_RemoveRepeatedPoints output having an outdated bbox (Raúl Marín)
+  - #4495, Fix ST_SnapToGrid output having an outdated bbox (Raúl Marín)
 
 PostGIS 2.3.10
 2019/08/11

Modified: branches/2.3/postgis/lwgeom_functions_analytic.c
===================================================================
--- branches/2.3/postgis/lwgeom_functions_analytic.c	2019-09-02 12:10:34 UTC (rev 17800)
+++ branches/2.3/postgis/lwgeom_functions_analytic.c	2019-09-02 12:15:42 UTC (rev 17801)
@@ -355,9 +355,11 @@
 
 	/* COMPUTE_BBOX TAINTING */
 	if ( in_lwgeom->bbox )
+	{
+		lwgeom_drop_bbox(out_lwgeom);
 		lwgeom_add_bbox(out_lwgeom);
+	}
 
-
 	POSTGIS_DEBUGF(3, "SnapToGrid made a %s", lwtype_name(out_lwgeom->type));
 
 	out_geom = geometry_serialize(out_lwgeom);
@@ -437,7 +439,11 @@
 	if ( out_lwgeom == NULL ) PG_RETURN_NULL();
 
 	/* COMPUTE_BBOX TAINTING */
-	if ( in_lwgeom->bbox ) lwgeom_add_bbox(out_lwgeom);
+	if (in_lwgeom->bbox)
+	{
+		lwgeom_drop_bbox(out_lwgeom);
+		lwgeom_add_bbox(out_lwgeom);
+	}
 
 	POSTGIS_DEBUGF(3, "SnapToGrid made a %s", lwtype_name(out_lwgeom->type));
 

Modified: branches/2.3/regress/simplifyvw.sql
===================================================================
--- branches/2.3/regress/simplifyvw.sql	2019-09-02 12:10:34 UTC (rev 17800)
+++ branches/2.3/regress/simplifyvw.sql	2019-09-02 12:15:42 UTC (rev 17801)
@@ -12,3 +12,10 @@
 SELECT '10', ST_astext(ST_Simplifyvw('LINESTRING(0 0, 0 10)', 20));
 SELECT '11', ST_astext(ST_Simplifyvw('MULTIPOLYGON(((100 100, 100 130, 130 130, 130 100, 100 100)), ((0 0, 10 0, 10 10, 0 10, 0 0),(5 5, 5 6, 6 6, 8 5, 5 5)) )', 20));
 SELECT '12', ST_astext(ST_Simplifyvw('MULTIPOLYGON(((0 0, 10 0, 10 10, 0 10, 0 0),(5 5, 5 6, 6 6, 8 5, 5 5)),((100 100, 100 130, 130 130, 130 100, 100 100)))', 200));
+
+-- The geometry bbox is updated
+WITH geom AS
+(
+    SELECT ST_Simplifyvw('MULTIPOLYGON(((0 0, 10 0, 10 10, 0 10, 0 0),(5 5, 5 6, 6 6, 8 5, 5 5)),((100 100, 100 130, 130 130, 130 131, 130 130, 130 100, 100 100)))', 200) AS g
+)
+SELECT '13', ST_AsText(g) as geometry, postgis_getbbox(g) AS box from geom;

Modified: branches/2.3/regress/simplifyvw_expected
===================================================================
--- branches/2.3/regress/simplifyvw_expected	2019-09-02 12:10:34 UTC (rev 17800)
+++ branches/2.3/regress/simplifyvw_expected	2019-09-02 12:15:42 UTC (rev 17801)
@@ -10,3 +10,4 @@
 10|LINESTRING(0 0,0 10)
 11|MULTIPOLYGON(((100 100,100 130,130 130,130 100,100 100)),((0 0,10 0,10 10,0 10,0 0)))
 12|MULTIPOLYGON(((0 0,10 10,0 10,0 0)),((100 100,100 130,130 130,130 100,100 100)))
+13|MULTIPOLYGON(((0 0,10 10,0 10,0 0)),((100 100,100 130,130 130,130 100,100 100)))|BOX(0 0,130 130)

Modified: branches/2.3/regress/snaptogrid.sql
===================================================================
--- branches/2.3/regress/snaptogrid.sql	2019-09-02 12:10:34 UTC (rev 17800)
+++ branches/2.3/regress/snaptogrid.sql	2019-09-02 12:15:42 UTC (rev 17801)
@@ -10,3 +10,12 @@
 SELECT ST_snaptogrid(orig, 0.003) ~= ST_snaptogrid(ST_snaptogrid(orig, 0.003), 0.003) FROM tmp;
 SELECT ST_snaptogrid(orig, 0.0002) ~= ST_snaptogrid(ST_snaptogrid(orig, 0.0002), 0.0002) FROM tmp;
 DROP TABLE tmp;
+
+-- The geometry bbox is updated
+WITH geom AS
+(
+    SELECT ST_SnapToGrid('POLYGON((0 0, 10 0, 10 10, 10.6 10, 10.5 10.5, 10 10, 0 10, 0 0))', 10) as g
+    UNION ALL
+    SELECT ST_SnapToGrid('POLYGON((0 0, 10 0, 10 10, 10.6 10, 10.5 10.5, 10 10, 0 10, 0 0))', 'POINT(0 0)', 10, 10, 10, 10) as g
+)
+Select ST_AsText(g) as geometry, postgis_getbbox(g) AS box from geom;

Modified: branches/2.3/regress/snaptogrid_expected
===================================================================
--- branches/2.3/regress/snaptogrid_expected	2019-09-02 12:10:34 UTC (rev 17800)
+++ branches/2.3/regress/snaptogrid_expected	2019-09-02 12:15:42 UTC (rev 17801)
@@ -3,3 +3,5 @@
 t
 t
 t
+POLYGON((0 0,10 0,10 10,0 10,0 0))|BOX(0 0,10 10)
+POLYGON((0 0,10 0,10 10,0 10,0 0))|BOX(0 0,10 10)



More information about the postgis-tickets mailing list