Opened 2 years ago

Closed 2 years ago

#5220 closed defect (fixed)

GEOS 3.11 doesn't regress cleanly on 3.1 and 3.0

Reported by: robe Owned by: robe
Priority: medium Milestone: PostGIS 3.0.8
Component: postgis Version: 3.1.x
Keywords: Cc:

Description

On 3.1.7 I get this:

PostgreSQL 12.12, compiled by Visual C++ build 1914, 64-bit
  Postgis 3.1.7 - (3.1.6-31-gdfcc4326f) - 2022-08-18 06:05:19
  scripts 3.1.7 3.1.6-31-gdfcc4326f
  raster scripts 3.1.7 3.1.6-31-gdfcc4326f
  GEOS: 3.11.0-CAPI-1.17.0
  PROJ: 7.2.1
  SFCGAL: 1.4.1
  GDAL: GDAL 3.4.3, released 2022/04/22



 ./regress/core/regress_buffer_params .. failed (diff expected obtained: /projects/postgis/tmp/3.1.7_pg12_geos3.9_gdal3.4.3w64/test_40_diff)
-----------------------------------------------------------------------------
--- ./regress/core/regress_buffer_params_expected       2022-08-18 00:58:29.359784500 -0400
+++ /projects/postgis/tmp/3.1.7_pg12_geos3.9_gdal3.4.3w64/test_40_out   2022-08-18 02:11:28.583934100 -0400
@@ -3,13 +3,13 @@
 line quadsegs=2 endcap=flat|POLYGON((10 2,10 -2,0 -2,0 2,10 2))
 line quadsegs=2 endcap=butt|POLYGON((10 2,10 -2,0 -2,0 2,10 2))
 line quadsegs=2 endcap=square|POLYGON((10 2,12 2,12 -2,0 -2,-2 -2,-2 2,10 2))
-line join=mitre mitre_limit=1.0 side=both|POLYGON((148.12357 161.60116,159.5301 156.87643,160 50,159.80785 48.0491,159.2388 46.17317,158.3147 44.4443,157.07107 42.92893,155.5557 41.6853,153.82683 40.7612,151.9509 40.19215,150 40,148.0491 40.19215,146.17317 40.7612,144.4443 41.6853,142.92893 42.92893,141.6853 44.4443,140.7612 46.17317,140.19215 48.0491,140 50,140 125.85786,57.07107 42.92893,55.5557 41.6853,53.82683 40.7612,51.9509 40.19215,50 40,48.0491 40.19215,46.17317 40.7612,44.4443 41.6853,42.92893 42.92893,41.6853 44.4443,40.7612 46.17317,40.19215 48.0491,40 50,40.19215 51.9509,40.7612 53.82683,41.6853 55.5557,42.92893 57.07107,148.12357 161.60116))
+line join=mitre mitre_limit=1.0 side=both|POLYGON((147.65367 161.7958,160 156.68179,160 50,159.80785 48.0491,159.2388 46.17317,158.3147 44.4443,157.07107 42.92893,155.5557 41.6853,153.82683 40.7612,151.9509 40.19215,150 40,148.0491 40.19215,146.17317 40.7612,144.4443 41.6853,142.92893 42.92893,141.6853 44.4443,140.7612 46.17317,140.19215 48.0491,140 50,140 125.85786,57.07107 42.92893,55.5557 41.6853,53.82683 40.7612,51.9509 40.19215,50 40,48.0491 40.19215,46.17317 40.7612,44.4443 41.6853,42.92893 42.92893,41.6853 44.4443,40.7612 46.17317,40.19215 48.0491,40 50,40.19215 51.9509,40.7612 53.82683,41.6853 55.5557,42.92893 57.07107,147.65367 161.7958))
 line side=left|POLYGON((150 50,150 150,50 50,42.92893 57.07107,142.92893 157.07107,144.4443 158.3147,146.17317 159.2388,148.0491 159.80785,150 160,151.9509 159.80785,153.82683 159.2388,155.5557 158.3147,157.07107 157.07107,158.3147 155.5557,159.2388 153.82683,159.80785 151.9509,160 150,160 50,150 50))
 line side=right|POLYGON((50 50,150 150,150 50,140 50,140 125.85786,57.07107 42.92893,50 50))
 line side=left join=mitre|POLYGON((150 50,150 150,50 50,42.92893 57.07107,160 174.14214,160 50,150 50))
 poly quadsegs=2 join=round|POLYGON((-2 0,-2 10,-1.41421 11.41421,0 12,10 12,11.41421 11.41421,12 10,12 0,11.41421 -1.41421,10 -2,0 -2,-1.41421 -1.41421,-2 0))
 poly quadsegs=2 join=bevel|POLYGON((-2 0,-2 10,0 12,10 12,12 10,12 0,10 -2,0 -2,-2 0))
 poly quadsegs=2 join=mitre|POLYGON((-2 -2,-2 12,12 12,12 -2,-2 -2))
-poly quadsegs=2 join=mitre mitre_limit=1|POLYGON((-1.82843 -1,-1.82843 11,-1 11.82843,11 11.82843,11.82843 11,11.82843 -1,11 -1.82843,-1 -1.82843,-1.82843 -1))
-poly quadsegs=2 join=miter miter_limit=1|POLYGON((-1.82843 -1,-1.82843 11,-1 11.82843,11 11.82843,11.82843 11,11.82843 -1,11 -1.82843,-1 -1.82843,-1.82843 -1))
+poly quadsegs=2 join=mitre mitre_limit=1|POLYGON((-2 -0.82843,-2 10.82843,-0.82843 12,10.82843 12,12 10.82843,12 -0.82843,10.82843 -2,-0.82843 -2,-2 -0.82843))
+poly quadsegs=2 join=miter miter_limit=1|POLYGON((-2 -0.82843,-2 10.82843,-0.82843 12,10.82843 12,12 10.82843,12 -0.82843,10.82843 -2,-0.82843 -2,-2 -0.82843))
 poly boundary rhr side=left|POLYGON((20 20,10 20,10 50,50 50,50 10,20 10,20 20),(20 20,40 20,40 40,20 40,20 20))
-----------------------------------------------------------------------------

 ./regress/core/offsetcurve .. failed (diff expected obtained: /projects/postgis/tmp/3.1.7_pg12_geos3.9_gdal3.4.3w64/test_81_diff)
-----------------------------------------------------------------------------
--- ./regress/core/offsetcurve_expected 2022-08-17 23:03:19.179980400 -0400
+++ /projects/postgis/tmp/3.1.7_pg12_geos3.9_gdal3.4.3w64/test_81_out   2022-08-18 02:12:19.092764900 -0400
@@ -1,20 +1,20 @@
 ERROR:  lwgeom_offsetcurve: input is not linear
 t0|SRID=42;LINESTRING(0 0,10 0)
 t1|SRID=42;LINESTRING(0 10,10 10)
-t2|SRID=42;LINESTRING(10 -10,0 -10)
+t2|SRID=42;LINESTRING(0 -10,10 -10)
 t3|SRID=42;LINESTRING(10 -10,0 -10)
-t4|SRID=42;LINESTRING(0 10,10 10)
-t5|SRID=42;LINESTRING(20 10,20 0,20 -2,19 -4,18 -6,17 -7,16 -8,14 -9,12 -10,10 -10,0 -10)
+t4|SRID=42;LINESTRING(10 10,0 10)
+t5|SRID=42;LINESTRING(0 -10,10 -10,12 -10,14 -9,16 -8,17 -7,18 -6,19 -4,20 -2,20 0,20 10)
 t5b|SRID=42;LINESTRING EMPTY
-t6|SRID=42;LINESTRING(20 10,20 0,17 -7,10 -10,0 -10)
-t7|SRID=42;LINESTRING(20 10,20 0,10 -10,0 -10)
-t8|SRID=42;LINESTRING(20 10,20 -10,0 -10)
-t9|SRID=42;LINESTRING(14 14,21 -1,16 -9,0 -10)
+t6|SRID=42;LINESTRING(0 -10,10 -10,17 -7,20 0,20 10)
+t7|SRID=42;LINESTRING(0 -10,10 -10,20 0,20 10)
+t8|SRID=42;LINESTRING(0 -10,20 -10,20 10)
+t9|SRID=42;LINESTRING(0 -2,0 -10,16 -10,21 -1,14 14,5 10)
 t10|SRID=42;LINESTRING(0 2,7 2,3 9)
 t10b|SRID=42;LINESTRING(0 2,7 2,3 9)
 t11|LINESTRING(37.6 39.2,39.2 36.6,42 35.8,43 34.8,46.4 33.6,48.2 30,48.8 30,50.6 33.8,56.6 35)
-t12|LINESTRING(57.4 31,53.4 30.2,51.2 26,45.8 26,43.6 30.4,41 31.2,40 32.2,36.8 33.4,34.4 36.8)
+t12|LINESTRING(34.4 36.8,36.8 33.4,40 32.2,41 31.2,43.6 30.4,45.8 26,51.2 26,53.4 30.2,57.4 31)
 t13|LINESTRING(-2 0,-2 22,12 22,12 8,2 8)
-t14|MULTILINESTRING((2 12,8 12,8 18,2 18,2 12),(2 8,2 0))
-t15|MULTILINESTRING((2 12,8 12,8 18,2 18,2 12),(2 8,2 0),(4 12,10 12,10 18,4 18,4 12),(4 8,4 0),(5 12,11 12,11 18,5 18,5 12),(5 8,5 0))
+t14|LINESTRING(2 0,2 8)
+t15|MULTILINESTRING((2 0,2 8),(4 0,4 8),(5 0,5 8))
 #2508|t




Change History (5)

comment:1 by robe, 2 years ago

Milestone: PostGIS 3.1.7PostGIS 3.0.8
Version: 3.2.x3.1.x

I'm not going to bother fixing this in this go round

comment:2 by robe, 2 years ago

Owner: changed from pramsey to robe

comment:3 by pramsey, 2 years ago

Looks like it's 99% ordering and one behaviour change in offset curve that should be probably just be removed. Offset curve definitely got re-imagined for some of the odder input cases.

comment:4 by Regina Obe <lr@…>, 2 years ago

In 8958203b/git:

Make tests regress on GEOS 3.11/3.10
Remove some tests that can't be easily changed to work on all GEOS
References #5223
References #5220
For PostGIS 3.0.8

comment:5 by Regina Obe <lr@…>, 2 years ago

Resolution: fixed
Status: newclosed

In e9117c4/git:

Fix regression failures with GEOS 3.10, 3.11
Closes #5220
Closes #5223
for PostGIS 3.1.8

Note: See TracTickets for help on using tickets.