[postgis-tickets] [SCM] PostGIS branch stable-3.3 updated. 3.3.2-43-ge58affa55
git at osgeo.org
git at osgeo.org
Thu Apr 20 22:52:27 PDT 2023
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.3 has been updated
via e58affa55e620b3be47a6269c2cc27ca148abb53 (commit)
from ccd8969dee644822a3e9457808d04c7055c9cb1b (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 e58affa55e620b3be47a6269c2cc27ca148abb53
Author: Regina Obe <lr at pcorp.us>
Date: Fri Apr 21 01:35:05 2023 -0400
Change gdal polygonize tests to be sum of areas and values
instead of checking individual elements.
This is to account for GDAL 3.7 results array sorted in different order
from prior versions.
References #5366 for PostGIS 3.3.3
diff --git a/raster/test/cunit/cu_gdal.c b/raster/test/cunit/cu_gdal.c
index 54daa3ebd..c20da3b43 100644
--- a/raster/test/cunit/cu_gdal.c
+++ b/raster/test/cunit/cu_gdal.c
@@ -155,6 +155,8 @@ static void test_gdal_polygonize() {
int i;
rt_raster rt;
int nPols = 0;
+ double total_area = 0;
+ double total_val = 0;
rt_geomval gv = NULL;
LWGEOM *gexpected, *gobserved;
//char *wkt = NULL;
@@ -166,32 +168,18 @@ static void test_gdal_polygonize() {
nPols = 0;
gv = rt_raster_gdal_polygonize(rt, 0, TRUE, &nPols);
+ CU_ASSERT_DOUBLE_EQUAL(nPols, 4, FLT_EPSILON);
+ total_area = 0; total_val = 0;
+ for (i = 0; i < nPols; i++) {
+ total_val += gv[i].val;
+ gobserved = (LWGEOM *) gv[i].geom;
+ total_area += lwgeom_area(gobserved);
+ lwgeom_free((LWGEOM *) gv[i].geom);
+ }
+ printf("total area, total val, nPols = %f, %f, %i\n", total_area, total_val, nPols);
+ CU_ASSERT_DOUBLE_EQUAL(total_val, 1.8 + 0.0 + 2.8 + 0, FLT_EPSILON);
+ CU_ASSERT_DOUBLE_EQUAL(total_area, 81, FLT_EPSILON);
- CU_ASSERT_DOUBLE_EQUAL(gv[0].val, 1.8, FLT_EPSILON);
-
- gobserved = (LWGEOM *)gv[0].geom;
-
- CU_ASSERT_DOUBLE_EQUAL(lwgeom_area(gobserved), lwgeom_area(gexpected), FLT_EPSILON);
-
- CU_ASSERT_DOUBLE_EQUAL(gv[1].val, 0.0, FLT_EPSILON);
- gobserved = (LWGEOM *)gv[1].geom;
- gexpected = lwgeom_from_wkt("POLYGON((3 3,3 6,6 6,6 3,3 3))", LW_PARSER_CHECK_NONE);
- CU_ASSERT_DOUBLE_EQUAL(lwgeom_area(gobserved), lwgeom_area(gexpected), FLT_EPSILON );
-
- CU_ASSERT_DOUBLE_EQUAL(gv[2].val, 2.8, FLT_EPSILON);
- gobserved = (LWGEOM *)gv[2].geom;
- gexpected = lwgeom_from_wkt("POLYGON((5 1,5 3,6 3,6 6,5 6,5 8,6 8,6 7,7 7,7 6,8 6,8 3,7 3,7 2,6 2,6 1,5 1))",
- LW_PARSER_CHECK_NONE);
- CU_ASSERT_DOUBLE_EQUAL(lwgeom_area(gobserved), lwgeom_area(gexpected), FLT_EPSILON);
-
- gobserved = (LWGEOM *)gv[3].geom;
- gexpected = lwgeom_from_wkt(
- "POLYGON((0 0,0 9,9 9,9 0,0 0),(6 7,6 8,3 8,3 7,2 7,2 6,1 6,1 3,2 3,2 2,3 2,3 1,6 1,6 2,7 2,7 3,8 3,8 6,7 6,7 7,6 7))",
- LW_PARSER_CHECK_NONE);
- CU_ASSERT_DOUBLE_EQUAL(gv[3].val, 0.0, FLT_EPSILON);
- CU_ASSERT_DOUBLE_EQUAL(lwgeom_area(gobserved), lwgeom_area(gexpected), FLT_EPSILON);
-
- for (i = 0; i < nPols; i++) lwgeom_free((LWGEOM *) gv[i].geom);
rtdealloc(gv);
cu_free_raster(rt);
@@ -203,40 +191,19 @@ static void test_gdal_polygonize() {
nPols = 0;
gv = rt_raster_gdal_polygonize(rt, 0, TRUE, &nPols);
-
- /*
+ CU_ASSERT_DOUBLE_EQUAL(nPols, 4, FLT_EPSILON);
+ total_area = 0; total_val = 0;
for (i = 0; i < nPols; i++) {
- wkt = lwgeom_to_text((const LWGEOM *) gv[i].geom);
- printf("(i, val, geom) = (%d, %f, %s)\n", i, gv[i].val, wkt);
- rtdealloc(wkt);
+ total_val += gv[i].val;
+ gobserved = (LWGEOM *) gv[i].geom;
+ total_area += lwgeom_area(gobserved);
+ lwgeom_free((LWGEOM *) gv[i].geom);
}
- */
+ printf("total area, total_val, polys = %f, %f, %i\n", total_area, total_val, nPols);
+ CU_ASSERT_DOUBLE_EQUAL(total_val, 4.6, FLT_EPSILON);
+ CU_ASSERT_DOUBLE_EQUAL(total_area, 81, FLT_EPSILON);
+
- CU_ASSERT_DOUBLE_EQUAL(gv[1].val, 0.0, FLT_EPSILON);
- gobserved = (LWGEOM *)gv[1].geom;
- gexpected = lwgeom_from_wkt("POLYGON((3 3,3 6,6 6,6 3,3 3))", LW_PARSER_CHECK_NONE);
- CU_ASSERT_DOUBLE_EQUAL(lwgeom_area(gobserved), lwgeom_area(gexpected), FLT_EPSILON);
- //wkt = lwgeom_to_text((const LWGEOM *) gv[1].geom);
- //CU_ASSERT_STRING_EQUAL(wkt, "POLYGON((3 3,3 6,6 6,6 3,3 3))");
- //rtdealloc(wkt);
-
- CU_ASSERT_DOUBLE_EQUAL(gv[2].val, 2.8, FLT_EPSILON);
- gobserved = (LWGEOM *)gv[2].geom;
- gexpected = lwgeom_from_wkt("POLYGON((5 1,5 3,6 3,6 6,5 6,5 8,6 8,6 7,7 7,7 6,8 6,8 3,7 3,7 2,6 2,6 1,5 1))",
- LW_PARSER_CHECK_NONE);
- CU_ASSERT_DOUBLE_EQUAL(lwgeom_area(gobserved), lwgeom_area(gexpected), FLT_EPSILON);
- //wkt = lwgeom_to_text((const LWGEOM *) gv[2].geom);
- //CU_ASSERT_STRING_EQUAL(wkt, "POLYGON((5 1,5 3,6 3,6 6,5 6,5 8,6 8,6 7,7 7,7 6,8 6,8 3,7 3,7 2,6 2,6 1,5 1))");
- //rtdealloc(wkt);
-
- CU_ASSERT_DOUBLE_EQUAL(gv[3].val, 0.0, FLT_EPSILON);
- gobserved = (LWGEOM *)gv[3].geom;
- gexpected = lwgeom_from_wkt(
- "POLYGON((0 0,0 9,9 9,9 0,0 0),(6 7,6 8,3 8,3 7,2 7,2 6,1 6,1 3,2 3,2 2,3 2,3 1,6 1,6 2,7 2,7 3,8 3,8 6,7 6,7 7,6 7))",
- LW_PARSER_CHECK_NONE);
- CU_ASSERT_DOUBLE_EQUAL(lwgeom_area(gobserved), lwgeom_area(gexpected), FLT_EPSILON);
-
- for (i = 0; i < nPols; i++) lwgeom_free((LWGEOM *) gv[i].geom);
rtdealloc(gv);
cu_free_raster(rt);
@@ -248,33 +215,19 @@ static void test_gdal_polygonize() {
nPols = 0;
gv = rt_raster_gdal_polygonize(rt, 0, TRUE, &nPols);
-
- /*
+ CU_ASSERT_DOUBLE_EQUAL(nPols, 4, FLT_EPSILON);
+ total_area = 0; total_val = 0;
for (i = 0; i < nPols; i++) {
- wkt = lwgeom_to_text((const LWGEOM *) gv[i].geom);
- printf("(i, val, geom) = (%d, %f, %s)\n", i, gv[i].val, wkt);
- rtdealloc(wkt);
+ total_val += gv[i].val;
+ gobserved = (LWGEOM *) gv[i].geom;
+ total_area += lwgeom_area(gobserved);
+ lwgeom_free((LWGEOM *) gv[i].geom);
}
- */
-
- CU_ASSERT_DOUBLE_EQUAL(gv[3].val, 0.0, FLT_EPSILON);
- gobserved = (LWGEOM *)gv[3].geom;
- gexpected = lwgeom_from_wkt(
- "POLYGON((0 0,0 9,9 9,9 0,0 0),(6 7,6 8,3 8,3 7,2 7,2 6,1 6,1 3,2 3,2 2,3 2,3 1,6 1,6 2,7 2,7 3,8 3,8 6,7 6,7 7,6 7))",
- LW_PARSER_CHECK_NONE);
- CU_ASSERT_DOUBLE_EQUAL(lwgeom_area(gobserved), lwgeom_area(gexpected), FLT_EPSILON);
-
- gobserved = (LWGEOM *)gv[0].geom;
- gexpected = lwgeom_from_wkt(
- "POLYGON((3 1,3 2,2 2,2 3,1 3,1 6,2 6,2 7,3 7,3 8,5 8,5 6,3 6,3 3,4 3,5 3,5 1,3 1))", LW_PARSER_CHECK_NONE);
- CU_ASSERT_DOUBLE_EQUAL(lwgeom_area(gobserved), lwgeom_area(gexpected), FLT_EPSILON);
- CU_ASSERT_DOUBLE_EQUAL(gv[1].val, 0.0, FLT_EPSILON);
- gobserved = (LWGEOM *)gv[1].geom;
- gexpected = lwgeom_from_wkt("POLYGON((3 3,3 6,6 6,6 3,3 3))", LW_PARSER_CHECK_NONE);
- CU_ASSERT_DOUBLE_EQUAL(lwgeom_area(gobserved), lwgeom_area(gexpected), FLT_EPSILON);
+ printf("total area, total_val, polys = %f, %f, %i\n", total_area, total_val, nPols);
+ CU_ASSERT_DOUBLE_EQUAL(total_val, 4.6, FLT_EPSILON);
+ CU_ASSERT_DOUBLE_EQUAL(total_area, 81, FLT_EPSILON);
- for (i = 0; i < nPols; i++) lwgeom_free((LWGEOM *) gv[i].geom);
rtdealloc(gv);
cu_free_raster(rt);
@@ -286,26 +239,19 @@ static void test_gdal_polygonize() {
nPols = 0;
gv = rt_raster_gdal_polygonize(rt, 0, TRUE, &nPols);
- /*
+ CU_ASSERT_DOUBLE_EQUAL(nPols, 2, FLT_EPSILON);
+ total_area = 0; total_val = 0;
for (i = 0; i < nPols; i++) {
- wkt = lwgeom_to_text((const LWGEOM *) gv[i].geom);
- printf("(i, val, geom) = (%d, %f, %s)\n", i, gv[i].val, wkt);
- rtdealloc(wkt);
+ total_val += gv[i].val;
+ gobserved = (LWGEOM *) gv[i].geom;
+ total_area += lwgeom_area(gobserved);
+ lwgeom_free((LWGEOM *) gv[i].geom);
}
- */
-
- CU_ASSERT_DOUBLE_EQUAL(gv[0].val, 1.8, FLT_EPSILON);
- gobserved = (LWGEOM *)gv[0].geom;
- gexpected = lwgeom_from_wkt("POLYGON((3 1,3 2,2 2,2 3,1 3,1 6,2 6,2 7,3 7,3 8,5 8,5 6,3 6,3 3,4 3,5 3,5 1,3 1))", LW_PARSER_CHECK_NONE);
- CU_ASSERT_DOUBLE_EQUAL(lwgeom_area(gobserved), lwgeom_area(gexpected), FLT_EPSILON);
- CU_ASSERT_DOUBLE_EQUAL(gv[1].val, 2.8, FLT_EPSILON);
- gobserved = (LWGEOM *)gv[1].geom;
- gexpected = lwgeom_from_wkt("POLYGON((5 1,5 3,6 3,6 6,5 6,5 8,6 8,6 7,7 7,7 6,8 6,8 3,7 3,7 2,6 2,6 1,5 1))",
- LW_PARSER_CHECK_NONE);
- CU_ASSERT_DOUBLE_EQUAL(lwgeom_area(gobserved), lwgeom_area(gexpected), FLT_EPSILON);
+ printf("total area, total_val, polys = %f, %f, %i\n", total_area, total_val, nPols);
+ CU_ASSERT_DOUBLE_EQUAL(total_val, 4.6, FLT_EPSILON);
+ CU_ASSERT_DOUBLE_EQUAL(total_area, 28, FLT_EPSILON);
- for (i = 0; i < nPols; i++) lwgeom_free((LWGEOM *) gv[i].geom);
rtdealloc(gv);
cu_free_raster(rt);
@@ -317,39 +263,18 @@ static void test_gdal_polygonize() {
nPols = 0;
gv = rt_raster_gdal_polygonize(rt, 0, TRUE, &nPols);
- /*
+ CU_ASSERT_DOUBLE_EQUAL(nPols, 4, FLT_EPSILON);
+ total_area = 0; total_val = 0;
for (i = 0; i < nPols; i++) {
- wkt = lwgeom_to_text((const LWGEOM *) gv[i].geom);
- printf("(i, val, geom) = (%d, %f, %s)\n", i, gv[i].val, wkt);
- rtdealloc(wkt);
+ total_val += gv[i].val;
+ gobserved = (LWGEOM *) gv[i].geom;
+ total_area += lwgeom_area(gobserved);
+ lwgeom_free((LWGEOM *) gv[i].geom);
}
- */
- CU_ASSERT_DOUBLE_EQUAL(gv[0].val, 1.8, FLT_EPSILON);
- gobserved = (LWGEOM *)gv[0].geom;
- gexpected = lwgeom_from_wkt(
- "POLYGON((3 1,3 2,2 2,2 3,1 3,1 6,2 6,2 7,3 7,3 8,5 8,5 6,3 6,3 3,4 3,5 3,5 1,3 1))", LW_PARSER_CHECK_NONE);
- CU_ASSERT_DOUBLE_EQUAL(lwgeom_area(gobserved), lwgeom_area(gexpected), FLT_EPSILON);
-
- CU_ASSERT_DOUBLE_EQUAL(gv[1].val, 0.0, FLT_EPSILON);
- gobserved = (LWGEOM *)gv[1].geom;
- gexpected = lwgeom_from_wkt("POLYGON((3 3,3 6,6 6,6 3,3 3))", LW_PARSER_CHECK_NONE);
- CU_ASSERT_DOUBLE_EQUAL(lwgeom_area(gobserved), lwgeom_area(gexpected), FLT_EPSILON);
-
- CU_ASSERT_DOUBLE_EQUAL(gv[2].val, 2.8, FLT_EPSILON);
- gobserved = (LWGEOM *)gv[2].geom;
- gexpected = lwgeom_from_wkt("POLYGON((5 1,5 3,6 3,6 6,5 6,5 8,6 8,6 7,7 7,7 6,8 6,8 3,7 3,7 2,6 2,6 1,5 1))",
- LW_PARSER_CHECK_NONE);
- CU_ASSERT_DOUBLE_EQUAL(lwgeom_area(gobserved), lwgeom_area(gexpected), FLT_EPSILON);
-
- CU_ASSERT_DOUBLE_EQUAL(gv[3].val, 0.0, FLT_EPSILON);
- gobserved = (LWGEOM *)gv[3].geom;
- gexpected = lwgeom_from_wkt(
- "POLYGON((0 0,0 9,9 9,9 0,0 0),(6 7,6 8,3 8,3 7,2 7,2 6,1 6,1 3,2 3,2 2,3 2,3 1,6 1,6 2,7 2,7 3,8 3,8 6,7 6,7 7,6 7))",
- LW_PARSER_CHECK_NONE);
- CU_ASSERT_DOUBLE_EQUAL(lwgeom_area(gobserved), lwgeom_area(gexpected), FLT_EPSILON);
-
- for (i = 0; i < nPols; i++) lwgeom_free((LWGEOM *) gv[i].geom);
+ printf("total area, total_val, polys = %f, %f, %i\n", total_area, total_val, nPols);
+ CU_ASSERT_DOUBLE_EQUAL(total_val, 1.8 + 0.0 + 2.8 + 0.0, FLT_EPSILON);
+ CU_ASSERT_DOUBLE_EQUAL(total_area, 81, FLT_EPSILON);
rtdealloc(gv);
cu_free_raster(rt);
}
-----------------------------------------------------------------------
Summary of changes:
raster/test/cunit/cu_gdal.c | 175 +++++++++++++-------------------------------
1 file changed, 50 insertions(+), 125 deletions(-)
hooks/post-receive
--
PostGIS
More information about the postgis-tickets
mailing list