[postgis-tickets] [SCM] PostGIS branch stable-3.0 updated. 3.0.3-14-g9ef629f

git at osgeo.org git at osgeo.org
Fri Feb 26 11:46:40 PST 2021


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "PostGIS".

The branch, stable-3.0 has been updated
       via  9ef629f7d8c8c1b34a210d6f5ec8173cfb2af7b0 (commit)
      from  b99878850802c171fe406a63d3812194e788d74e (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 9ef629f7d8c8c1b34a210d6f5ec8173cfb2af7b0
Author: Paul Ramsey <pramsey at cleverelephant.ca>
Date:   Fri Feb 26 10:36:44 2021 -0800

    Ensure bboxes are refreshed after cooridinate transforms in scale/affine. References #4863

diff --git a/NEWS b/NEWS
index d8ac89d..f6dce68 100644
--- a/NEWS
+++ b/NEWS
@@ -6,6 +6,8 @@ PostGIS 3.04
   - #4835, Adjust geodetic tolerance for calculations (Paul Ramsey)
   - #4853, DBSCAN cluster not formed when recordset length equal to minPoints (Dan Baston)
   - #4844, Repair axis order handling for polar coordinate systems (Paul Ramsey)
+  - #4863, Update bboxes after scale/affine coordinate changes (Paul Ramsey)
+
 
 PostGIS 3.0.3
 2020/11/20
diff --git a/liblwgeom/lwgeom.c b/liblwgeom/lwgeom.c
index a9fbfd4..8f9a570 100644
--- a/liblwgeom/lwgeom.c
+++ b/liblwgeom/lwgeom.c
@@ -2020,6 +2020,9 @@ lwgeom_affine(LWGEOM *geom, const AFFINE *affine)
 		}
 	}
 
+	/* Recompute bbox if needed */
+	if (geom->bbox)
+		lwgeom_refresh_bbox(geom);
 }
 
 void
@@ -2072,19 +2075,8 @@ lwgeom_scale(LWGEOM *geom, const POINT4D *factor)
 	}
 
 	/* Recompute bbox if needed */
-
-	if ( geom->bbox )
-	{
-		/* TODO: expose a gbox_scale function */
-		geom->bbox->xmin *= factor->x;
-		geom->bbox->xmax *= factor->x;
-		geom->bbox->ymin *= factor->y;
-		geom->bbox->ymax *= factor->y;
-		geom->bbox->zmin *= factor->z;
-		geom->bbox->zmax *= factor->z;
-		geom->bbox->mmin *= factor->m;
-		geom->bbox->mmax *= factor->m;
-	}
+	if (geom->bbox)
+		lwgeom_refresh_bbox(geom);
 }
 
 LWGEOM *
diff --git a/regress/core/tests.mk b/regress/core/tests.mk
new file mode 100644
index 0000000..ac83a58
--- /dev/null
+++ b/regress/core/tests.mk
@@ -0,0 +1,181 @@
+# **********************************************************************
+# *
+# * PostGIS - Spatial Types for PostgreSQL
+# * http://postgis.net
+# *
+# * Copyright (C) 2011-2020 Sandro Santilli <strk at kbt.io>
+# * Copyright (C) 2009-2011 Paul Ramsey <pramsey at cleverelephant.ca>
+# * Copyright (C) 2008-2009 Mark Cave-Ayland
+# *
+# * This is free software; you can redistribute and/or modify it under
+# * the terms of the GNU General Public Licence. See the COPYING file.
+# *
+# **********************************************************************
+
+POSTGIS_PGSQL_VERSION=130
+POSTGIS_GEOS_VERSION=39
+HAVE_JSON=yes
+HAVE_SPGIST=yes
+INTERRUPTTESTS=no
+
+current_dir := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
+
+TESTS += \
+	$(topsrcdir)/regress/core/affine \
+	$(topsrcdir)/regress/core/bestsrid \
+	$(topsrcdir)/regress/core/binary \
+	$(topsrcdir)/regress/core/boundary \
+	$(topsrcdir)/regress/core/chaikin \
+	$(topsrcdir)/regress/core/filterm \
+	$(topsrcdir)/regress/core/cluster \
+	$(topsrcdir)/regress/core/concave_hull\
+	$(topsrcdir)/regress/core/ctors \
+	$(topsrcdir)/regress/core/curvetoline \
+	$(topsrcdir)/regress/core/dump \
+	$(topsrcdir)/regress/core/dumppoints \
+	$(topsrcdir)/regress/core/empty \
+	$(topsrcdir)/regress/core/estimatedextent \
+	$(topsrcdir)/regress/core/forcecurve \
+	$(topsrcdir)/regress/core/geography \
+	$(topsrcdir)/regress/core/geometric_median \
+	$(topsrcdir)/regress/core/hausdorff \
+	$(topsrcdir)/regress/core/in_geohash \
+	$(topsrcdir)/regress/core/in_gml \
+	$(topsrcdir)/regress/core/in_kml \
+	$(topsrcdir)/regress/core/in_encodedpolyline \
+	$(topsrcdir)/regress/core/iscollection \
+	$(topsrcdir)/regress/core/legacy \
+	$(topsrcdir)/regress/core/long_xact \
+	$(topsrcdir)/regress/core/lwgeom_regress \
+	$(topsrcdir)/regress/core/measures \
+	$(topsrcdir)/regress/core/minimum_bounding_circle \
+	$(topsrcdir)/regress/core/normalize \
+	$(topsrcdir)/regress/core/operators \
+	$(topsrcdir)/regress/core/orientation \
+	$(topsrcdir)/regress/core/out_geometry \
+	$(topsrcdir)/regress/core/out_geography \
+	$(topsrcdir)/regress/core/polygonize \
+	$(topsrcdir)/regress/core/polyhedralsurface \
+	$(topsrcdir)/regress/core/postgis_type_name \
+	$(topsrcdir)/regress/core/quantize_coordinates \
+	$(topsrcdir)/regress/core/regress \
+	$(topsrcdir)/regress/core/regress_bdpoly \
+	$(topsrcdir)/regress/core/regress_buffer_params \
+	$(topsrcdir)/regress/core/regress_gist_index_nd \
+	$(topsrcdir)/regress/core/regress_index \
+	$(topsrcdir)/regress/core/regress_index_nulls \
+	$(topsrcdir)/regress/core/regress_management \
+	$(topsrcdir)/regress/core/regress_selectivity \
+	$(topsrcdir)/regress/core/regress_lrs \
+	$(topsrcdir)/regress/core/regress_ogc \
+	$(topsrcdir)/regress/core/regress_ogc_cover \
+	$(topsrcdir)/regress/core/regress_ogc_prep \
+	$(topsrcdir)/regress/core/regress_proj \
+	$(topsrcdir)/regress/core/relate \
+	$(topsrcdir)/regress/core/remove_repeated_points \
+	$(topsrcdir)/regress/core/removepoint \
+	$(topsrcdir)/regress/core/reverse \
+	$(topsrcdir)/regress/core/setpoint \
+	$(topsrcdir)/regress/core/simplify \
+	$(topsrcdir)/regress/core/simplifyvw \
+	$(topsrcdir)/regress/core/size \
+	$(topsrcdir)/regress/core/snaptogrid \
+	$(topsrcdir)/regress/core/split \
+	$(topsrcdir)/regress/core/sql-mm-serialize \
+	$(topsrcdir)/regress/core/sql-mm-circularstring \
+	$(topsrcdir)/regress/core/sql-mm-compoundcurve \
+	$(topsrcdir)/regress/core/sql-mm-curvepoly \
+	$(topsrcdir)/regress/core/sql-mm-general \
+	$(topsrcdir)/regress/core/sql-mm-multicurve \
+	$(topsrcdir)/regress/core/sql-mm-multisurface \
+	$(topsrcdir)/regress/core/swapordinates \
+	$(topsrcdir)/regress/core/summary \
+	$(topsrcdir)/regress/core/temporal \
+	$(topsrcdir)/regress/core/temporal_knn \
+	$(topsrcdir)/regress/core/tickets \
+	$(topsrcdir)/regress/core/twkb \
+	$(topsrcdir)/regress/core/typmod \
+	$(topsrcdir)/regress/core/wkb \
+	$(topsrcdir)/regress/core/wkt \
+	$(topsrcdir)/regress/core/wmsservers \
+	$(topsrcdir)/regress/core/offsetcurve \
+	$(topsrcdir)/regress/core/relatematch \
+	$(topsrcdir)/regress/core/isvaliddetail \
+	$(topsrcdir)/regress/core/sharedpaths \
+	$(topsrcdir)/regress/core/snap \
+	$(topsrcdir)/regress/core/node \
+	$(topsrcdir)/regress/core/unaryunion \
+	$(topsrcdir)/regress/core/clean \
+	$(topsrcdir)/regress/core/relate_bnr \
+	$(topsrcdir)/regress/core/delaunaytriangles \
+	$(topsrcdir)/regress/core/clipbybox2d \
+	$(topsrcdir)/regress/core/subdivide \
+	$(topsrcdir)/regress/core/voronoi \
+	$(topsrcdir)/regress/core/regress_brin_index \
+	$(topsrcdir)/regress/core/regress_brin_index_3d \
+	$(topsrcdir)/regress/core/regress_brin_index_geography \
+	$(topsrcdir)/regress/core/minimum_clearance \
+	$(topsrcdir)/regress/core/oriented_envelope \
+	$(topsrcdir)/regress/core/point_coordinates \
+	$(topsrcdir)/regress/core/out_geojson
+
+# Slow slow tests
+TESTS_SLOW = \
+	$(topsrcdir)/regress/core/concave_hull_hard \
+	$(topsrcdir)/regress/core/knn_recheck
+
+ifeq ($(shell expr "$(POSTGIS_PGSQL_VERSION)" ">=" 120),1)
+	TESTS += \
+		$(topsrcdir)/regress/core/computed_columns
+endif
+
+ifeq ($(shell expr "$(POSTGIS_GEOS_VERSION)" ">=" 37),1)
+	# GEOS-3.7 adds:
+	# ST_FrechetDistance
+	TESTS += \
+		$(topsrcdir)/regress/core/frechet
+endif
+
+ifeq ($(shell expr "$(POSTGIS_GEOS_VERSION)" ">=" 38),1)
+	# GEOS-3.8 adds stable pointonsurface implementation
+	TESTS += \
+		$(topsrcdir)/regress/core/geos38
+endif
+
+ifeq ($(shell expr "$(POSTGIS_GEOS_VERSION)" ">=" 39),1)
+	# GEOS-3.0 adds stable maximuminscribedcircle implementation
+	TESTS += \
+		$(topsrcdir)/regress/core/geos39 \
+		$(topsrcdir)/regress/core/fixedoverlay
+endif
+
+ifeq ($(INTERRUPTTESTS),yes)
+	# Allow CI servers to configure --with-interrupt-tests
+	TESTS += \
+		$(topsrcdir)/regress/core/interrupt \
+		$(topsrcdir)/regress/core/interrupt_relate \
+		$(topsrcdir)/regress/core/interrupt_buffer
+endif
+
+ifeq ($(HAVE_JSON),yes)
+	# JSON-C adds:
+	# ST_GeomFromGeoJSON()
+	TESTS += \
+		$(topsrcdir)/regress/core/in_geojson
+endif
+
+ifeq ($(HAVE_SPGIST),yes)
+	TESTS += \
+	$(topsrcdir)/regress/core/regress_spgist_index_2d \
+	$(topsrcdir)/regress/core/regress_spgist_index_3d \
+	$(topsrcdir)/regress/core/regress_spgist_index_nd
+endif
+
+ifeq (yes,yes)
+	# protobuf-c adds:
+	# ST_AsMVT, ST_AsGeobuf
+	TESTS += \
+		$(topsrcdir)/regress/core/mvt \
+		$(topsrcdir)/regress/core/mvt_jsonb \
+		$(topsrcdir)/regress/core/geobuf
+endif
diff --git a/regress/core/tickets.sql b/regress/core/tickets.sql
index cedc471..ce2af9d 100644
--- a/regress/core/tickets.sql
+++ b/regress/core/tickets.sql
@@ -1302,4 +1302,12 @@ SELECT '#4727', _ST_DistanceTree('SRID=4326;POLYGON((-179.9 -85.05112877980659,
 				ST_MakePoint(-150,-40), 0.0, true);
 
 SELECT '#4853', ST_ClusterDBSCAN(geom,  eps := 0.000906495804256269, minpoints := 4) OVER() AS cid FROM (VALUES ('0101000020E6100000E4141DC9E5934B40D235936FB6193940'::geometry), ('0101000020E6100000C746205ED7934B40191C25AFCE193940'::geometry), ('0101000020E6100000C780ECF5EE934B40B6BE4868CB193940'::geometry), ('0101000020E6100000ABB2EF8AE0934B404451A04FE4193940'::geometry)) AS t(geom);
+
 SELECT '#4844', ST_AsEWKT(ST_SnapToGrid(ST_Transform('SRID=3575;POINT(370182.35945313 -2213980.8213281)'::geometry,4326),0.01));
+
+SELECT '#4863', st_contains(geometry, st_scale(st_orientedenvelope(geometry),
+ 'SRID=3857; POINT(0.8 0.8)', st_centroid(geometry))) from (select
+ 'SRID=3857; POLYGON((-141972.789895508 6755731.24770785,-141935.49511986
+ 6755733.56891884,-141934.403428904 6755716.1146343,-141971.698204552
+ 6755713.77835553,-141972.789895508 6755731.24770785))'::geometry as
+ geometry) x;
diff --git a/regress/core/tickets_expected b/regress/core/tickets_expected
index 737e0c3..ec6c0e5 100644
--- a/regress/core/tickets_expected
+++ b/regress/core/tickets_expected
@@ -440,3 +440,4 @@ ERROR:  LWGEOM_addpoint: Invalid offset
 #4853|0
 #4853|0
 #4844|SRID=4326;POINT(19.49 69.79)
+#4863|t

-----------------------------------------------------------------------

Summary of changes:
 NEWS                          |   2 +
 liblwgeom/lwgeom.c            |  18 ++---
 regress/core/tests.mk         | 181 ++++++++++++++++++++++++++++++++++++++++++
 regress/core/tickets.sql      |   8 ++
 regress/core/tickets_expected |   1 +
 5 files changed, 197 insertions(+), 13 deletions(-)
 create mode 100644 regress/core/tests.mk


hooks/post-receive
-- 
PostGIS


More information about the postgis-tickets mailing list