[postgis-tickets] [SCM] PostGIS branch master updated. 3.1.0alpha2-41-g58afcd1

git at osgeo.org git at osgeo.org
Mon Aug 3 12:28:34 PDT 2020


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, master has been updated
       via  58afcd1711370aa16c9cf4bef251458d870d89a3 (commit)
      from  d3d372eb89c10821654007f1a8872916aa9ffc1b (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 58afcd1711370aa16c9cf4bef251458d870d89a3
Author: Regina Obe <lr at pcorp.us>
Date:   Mon Aug 3 15:28:28 2020 -0400

    Fix raster regression for GDAL 3.2, polygonize behavior change. Use area and ST_Equals for compare instead of wkt equality. References #4734 for PostGIS 3.1

diff --git a/raster/test/cunit/cu_gdal.c b/raster/test/cunit/cu_gdal.c
index d5f40ed..680c262 100644
--- a/raster/test/cunit/cu_gdal.c
+++ b/raster/test/cunit/cu_gdal.c
@@ -166,7 +166,10 @@ static void test_gdal_polygonize() {
 	rt_raster rt;
 	int nPols = 0;
 	rt_geomval gv = NULL;
-	char *wkt = NULL;
+	LWGEOM *gexpected, *gobserved;
+	//char *wkt = NULL;
+	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);
 
 	rt = fillRasterToPolygonize(1, -1.0);
 	CU_ASSERT(rt_raster_has_band(rt, 0));
@@ -176,25 +179,27 @@ static void test_gdal_polygonize() {
 
 	CU_ASSERT_DOUBLE_EQUAL(gv[0].val, 1.8, FLT_EPSILON);
 
-	wkt = lwgeom_to_text((const LWGEOM *) gv[0].geom);
-	CU_ASSERT_STRING_EQUAL(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))");
-	rtdealloc(wkt);
+	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);
-	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);
+	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);
-
-	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);
-
+	gobserved = (const 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 = (const 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);
-	wkt = lwgeom_to_text((const LWGEOM *) gv[3].geom);
-	CU_ASSERT_STRING_EQUAL(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))");
-	rtdealloc(wkt);
+	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);
@@ -218,19 +223,28 @@ static void test_gdal_polygonize() {
 	*/
 
 	CU_ASSERT_DOUBLE_EQUAL(gv[1].val, 0.0, 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);
+	gobserved = (const 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);
-	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);
+	gobserved = (const 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);
-	wkt = lwgeom_to_text((const LWGEOM *) gv[3].geom);
-	CU_ASSERT_STRING_EQUAL(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))");
-	rtdealloc(wkt);
+	gobserved = (const 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);
@@ -253,21 +267,22 @@ static void test_gdal_polygonize() {
 	}
 	*/
 
-	CU_ASSERT_DOUBLE_EQUAL(gv[0].val, 1.8, FLT_EPSILON);
-
 	CU_ASSERT_DOUBLE_EQUAL(gv[3].val, 0.0, FLT_EPSILON);
-	wkt = lwgeom_to_text((const LWGEOM *) gv[3].geom);
-	CU_ASSERT_STRING_EQUAL(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))");
-	rtdealloc(wkt);
+	gobserved = (const 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);
 
-	wkt = lwgeom_to_text((const LWGEOM *) gv[0].geom);
-	CU_ASSERT_STRING_EQUAL(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))");
-	rtdealloc(wkt);
+	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);
-	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);
+	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);
 
 	for (i = 0; i < nPols; i++) lwgeom_free((LWGEOM *) gv[i].geom);
 	rtdealloc(gv);
@@ -290,16 +305,15 @@ static void test_gdal_polygonize() {
 	*/
 
 	CU_ASSERT_DOUBLE_EQUAL(gv[0].val, 1.8, FLT_EPSILON);
-
-	wkt = lwgeom_to_text((const LWGEOM *) gv[0].geom);
-	CU_ASSERT_STRING_EQUAL(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))");
-	rtdealloc(wkt);
+	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);
-
-	wkt = lwgeom_to_text((const LWGEOM *) gv[1].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);
+	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);
 
 	for (i = 0; i < nPols; i++) lwgeom_free((LWGEOM *) gv[i].geom);
 	rtdealloc(gv);
@@ -322,26 +336,28 @@ static void test_gdal_polygonize() {
 	*/
 
 	CU_ASSERT_DOUBLE_EQUAL(gv[0].val, 1.8, FLT_EPSILON);
-
-	wkt = lwgeom_to_text((const LWGEOM *) gv[0].geom);
-	CU_ASSERT_STRING_EQUAL(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))");
-	rtdealloc(wkt);
+	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);
-	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);
+	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);
-
-	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);
+	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);
-	wkt = lwgeom_to_text((const LWGEOM *) gv[3].geom);
-	CU_ASSERT_STRING_EQUAL(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))");
-	rtdealloc(wkt);
+	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);
diff --git a/raster/test/cunit/cu_raster_geometry.c b/raster/test/cunit/cu_raster_geometry.c
index 9253a3d..1f75666 100644
--- a/raster/test/cunit/cu_raster_geometry.c
+++ b/raster/test/cunit/cu_raster_geometry.c
@@ -261,6 +261,7 @@ static void test_raster_surface() {
 	char *wkt = NULL;
 	LWMPOLY *mpoly = NULL;
 	int err;
+	LWGEOM *gexpected, *gobserved;
 
 	rast = rt_raster_new(maxX, maxY);
 	CU_ASSERT(rast != NULL);
@@ -280,9 +281,10 @@ static void test_raster_surface() {
 	err = rt_raster_surface(rast, 0, &mpoly);
 	CU_ASSERT_EQUAL(err, ES_NONE);
 	CU_ASSERT(mpoly != NULL);
-	wkt = lwgeom_to_text(lwmpoly_as_lwgeom(mpoly));
-	CU_ASSERT_STRING_EQUAL(wkt, "MULTIPOLYGON(((0 0,0 -5,5 -5,5 0,0 0)))");
-	rtdealloc(wkt);
+	//wkt = lwgeom_to_text(lwmpoly_as_lwgeom(mpoly));
+	gobserved = (LWGEOM *)lwmpoly_as_lwgeom(mpoly);
+	gexpected = lwgeom_from_wkt("MULTIPOLYGON(((0 0,0 -5,5 -5,5 0,0 0)))", LW_PARSER_CHECK_NONE);
+	CU_ASSERT_DOUBLE_EQUAL(lwgeom_area(gobserved), lwgeom_area(gexpected), FLT_EPSILON);
 	lwmpoly_free(mpoly);
 	mpoly = NULL;
 
@@ -292,9 +294,9 @@ static void test_raster_surface() {
 	err = rt_raster_surface(rast, 0, &mpoly);
 	CU_ASSERT_EQUAL(err, ES_NONE);
 	CU_ASSERT(mpoly != NULL);
-	wkt = lwgeom_to_text(lwmpoly_as_lwgeom(mpoly));
-	CU_ASSERT_STRING_EQUAL(wkt, "MULTIPOLYGON(((1 0,1 -1,0 -1,0 -5,4 -5,5 -5,5 0,1 0)))");
-	rtdealloc(wkt);
+	gobserved = (LWGEOM *)lwmpoly_as_lwgeom(mpoly);
+	gexpected = lwgeom_from_wkt("MULTIPOLYGON(((1 0,1 -1,0 -1,0 -5,4 -5,5 -5,5 0,1 0)))", LW_PARSER_CHECK_NONE);
+	CU_ASSERT_DOUBLE_EQUAL(lwgeom_area(gobserved), lwgeom_area(gexpected), FLT_EPSILON);
 	lwmpoly_free(mpoly);
 	mpoly = NULL;
 
@@ -304,9 +306,10 @@ static void test_raster_surface() {
 	err = rt_raster_surface(rast, 0, &mpoly);
 	CU_ASSERT_EQUAL(err, ES_NONE);
 	CU_ASSERT(mpoly != NULL);
-	wkt = lwgeom_to_text(lwmpoly_as_lwgeom(mpoly));
-	CU_ASSERT_STRING_EQUAL(wkt, "MULTIPOLYGON(((1 0,1 -1,0 -1,0 -5,4 -5,5 -5,5 0,1 0),(1 -1,1 -2,2 -2,2 -1,1 -1)))");
-	rtdealloc(wkt);
+	gobserved = (LWGEOM *)lwmpoly_as_lwgeom(mpoly);
+	gexpected = lwgeom_from_wkt("MULTIPOLYGON(((1 0,1 -1,0 -1,0 -5,4 -5,5 -5,5 0,1 0),(1 -1,1 -2,2 -2,2 -1,1 -1)))",
+				    LW_PARSER_CHECK_NONE);
+	CU_ASSERT_DOUBLE_EQUAL(lwgeom_area(gobserved), lwgeom_area(gexpected), FLT_EPSILON);
 	lwmpoly_free(mpoly);
 	mpoly = NULL;
 
@@ -316,11 +319,11 @@ static void test_raster_surface() {
 	err = rt_raster_surface(rast, 0, &mpoly);
 	CU_ASSERT_EQUAL(err, ES_NONE);
 	CU_ASSERT(mpoly != NULL);
-	wkt = lwgeom_to_text(lwmpoly_as_lwgeom(mpoly));
-
-	CU_ASSERT_STRING_EQUAL(wkt, "MULTIPOLYGON(((1 -1,1 0,5 0,5 -5,4 -5,0 -5,0 -1,1 -1),(1 -1,1 -2,2 -2,2 -1,1 -1),(2 -2,2 -3,3 -3,3 -2,2 -2)))");
-
-	rtdealloc(wkt);
+	gobserved = (LWGEOM *)lwmpoly_as_lwgeom(mpoly);
+	gexpected = lwgeom_from_wkt(
+	    "MULTIPOLYGON(((1 -1,1 0,5 0,5 -5,4 -5,0 -5,0 -1,1 -1),(1 -1,1 -2,2 -2,2 -1,1 -1),(2 -2,2 -3,3 -3,3 -2,2 -2)))",
+	    LW_PARSER_CHECK_NONE);
+	CU_ASSERT_DOUBLE_EQUAL(lwgeom_area(gobserved), lwgeom_area(gexpected), FLT_EPSILON);
 	lwmpoly_free(mpoly);
 	mpoly = NULL;
 
@@ -330,11 +333,11 @@ static void test_raster_surface() {
 	err = rt_raster_surface(rast, 0, &mpoly);
 	CU_ASSERT_EQUAL(err, ES_NONE);
 	CU_ASSERT(mpoly != NULL);
-	wkt = lwgeom_to_text(lwmpoly_as_lwgeom(mpoly));
-
-	CU_ASSERT_STRING_EQUAL(wkt, "MULTIPOLYGON(((1 -1,1 0,5 0,5 -5,4 -5,0 -5,0 -1,1 -1),(1 -1,1 -2,2 -2,2 -1,1 -1),(2 -2,2 -3,3 -3,3 -2,2 -2),(3 -3,3 -4,4 -4,4 -3,3 -3)))");
-
-	rtdealloc(wkt);
+	gobserved = (LWGEOM *)lwmpoly_as_lwgeom(mpoly);
+	gexpected = lwgeom_from_wkt(
+	    "MULTIPOLYGON(((1 -1,1 0,5 0,5 -5,4 -5,0 -5,0 -1,1 -1),(1 -1,1 -2,2 -2,2 -1,1 -1),(2 -2,2 -3,3 -3,3 -2,2 -2),(3 -3,3 -4,4 -4,4 -3,3 -3)))",
+	    LW_PARSER_CHECK_NONE);
+	CU_ASSERT_DOUBLE_EQUAL(lwgeom_area(gobserved), lwgeom_area(gexpected), FLT_EPSILON);
 	lwmpoly_free(mpoly);
 	mpoly = NULL;
 
@@ -344,9 +347,11 @@ static void test_raster_surface() {
 	err = rt_raster_surface(rast, 0, &mpoly);
 	CU_ASSERT_EQUAL(err, ES_NONE);
 	CU_ASSERT(mpoly != NULL);
-	wkt = lwgeom_to_text(lwmpoly_as_lwgeom(mpoly));
-	CU_ASSERT_STRING_EQUAL(wkt, "MULTIPOLYGON(((4 -4,4 -5,0 -5,0 -1,1 -1,1 -2,2 -2,2 -3,3 -3,3 -4,4 -4)),((1 -1,1 0,5 0,5 -4,4 -4,4 -3,3 -3,3 -2,2 -2,2 -1,1 -1)))");
-	rtdealloc(wkt);
+	gobserved = (LWGEOM *)lwmpoly_as_lwgeom(mpoly);
+	gexpected = lwgeom_from_wkt(
+	    "MULTIPOLYGON(((4 -4,4 -5,0 -5,0 -1,1 -1,1 -2,2 -2,2 -3,3 -3,3 -4,4 -4)),((1 -1,1 0,5 0,5 -4,4 -4,4 -3,3 -3,3 -2,2 -2,2 -1,1 -1)))",
+	    LW_PARSER_CHECK_NONE);
+	CU_ASSERT_DOUBLE_EQUAL(lwgeom_area(gobserved), lwgeom_area(gexpected), FLT_EPSILON);
 	lwmpoly_free(mpoly);
 	mpoly = NULL;
 
@@ -359,9 +364,11 @@ static void test_raster_surface() {
 	err = rt_raster_surface(rast, 0, &mpoly);
 	CU_ASSERT_EQUAL(err, ES_NONE);
 	CU_ASSERT(mpoly != NULL);
-	wkt = lwgeom_to_text(lwmpoly_as_lwgeom(mpoly));
-	CU_ASSERT_STRING_EQUAL(wkt, "MULTIPOLYGON(((1 -4,2 -4,2 -3,3 -3,3 -4,4 -4,4 -5,3 -5,1 -5,1 -4)),((1 -4,0 -4,0 -1,1 -1,1 -2,2 -2,2 -3,1 -3,1 -4)),((3 -2,4 -2,4 -1,5 -1,5 -4,4 -4,4 -3,3 -3,3 -2)),((3 -2,2 -2,2 -1,1 -1,1 0,4 0,4 -1,3 -1,3 -2)))");
-	rtdealloc(wkt);
+	gobserved = (LWGEOM *)lwmpoly_as_lwgeom(mpoly);
+	gexpected = lwgeom_from_wkt(
+	    "MULTIPOLYGON(((1 -4,2 -4,2 -3,3 -3,3 -4,4 -4,4 -5,3 -5,1 -5,1 -4)),((1 -4,0 -4,0 -1,1 -1,1 -2,2 -2,2 -3,1 -3,1 -4)),((3 -2,4 -2,4 -1,5 -1,5 -4,4 -4,4 -3,3 -3,3 -2)),((3 -2,2 -2,2 -1,1 -1,1 0,4 0,4 -1,3 -1,3 -2)))",
+	    LW_PARSER_CHECK_NONE);
+	CU_ASSERT_DOUBLE_EQUAL(lwgeom_area(gobserved), lwgeom_area(gexpected), FLT_EPSILON);
 	lwmpoly_free(mpoly);
 	mpoly = NULL;
 
diff --git a/raster/test/regress/rt_polygon.sql b/raster/test/regress/rt_polygon.sql
index cd4220f..454f28f 100644
--- a/raster/test/regress/rt_polygon.sql
+++ b/raster/test/regress/rt_polygon.sql
@@ -31,11 +31,11 @@ CREATE OR REPLACE FUNCTION temp_geos_version()
 	LANGUAGE 'sql' IMMUTABLE STRICT;
 
 SELECT
-	ST_AsText(ST_Polygon(rast)) = 'MULTIPOLYGON(((0 0,0 -5,5 -5,5 0,0 0)))'
+	ST_Equals( ST_Polygon(rast),  'MULTIPOLYGON(((0 0,0 -5,5 -5,5 0,0 0)))'::geometry)
 FROM raster_polygon;
 
 SELECT
-	ST_AsText(ST_Polygon(rast)) = 'MULTIPOLYGON(((1 0,1 -1,0 -1,0 -5,4 -5,5 -5,5 0,1 0)))'
+	ST_Equals( ST_Polygon(rast), 'MULTIPOLYGON(((1 0,1 -1,0 -1,0 -5,4 -5,5 -5,5 0,1 0)))'::geometry)
 FROM (
 	SELECT
 		ST_SetValue(
@@ -45,7 +45,7 @@ FROM (
 ) foo;
 
 SELECT
-	ST_AsText(ST_Polygon(rast)) = 'MULTIPOLYGON(((1 0,1 -1,0 -1,0 -5,4 -5,5 -5,5 0,1 0),(1 -1,1 -2,2 -2,2 -1,1 -1)))'
+	ST_Equals( ST_Polygon(rast),  'MULTIPOLYGON(((1 0,1 -1,0 -1,0 -5,4 -5,5 -5,5 0,1 0),(1 -1,1 -2,2 -2,2 -1,1 -1)))'::geometry )
 FROM (
 	SELECT
 		ST_SetValue(
@@ -58,7 +58,7 @@ FROM (
 ) foo;
 
 SELECT
-	ST_AsText(ST_Polygon(rast)) = 'MULTIPOLYGON(((1 -1,1 0,5 0,5 -5,4 -5,0 -5,0 -1,1 -1),(1 -1,1 -2,2 -2,2 -1,1 -1),(2 -2,2 -3,3 -3,3 -2,2 -2)))'
+	ST_Equals( ST_Polygon(rast), 'MULTIPOLYGON(((1 -1,1 0,5 0,5 -5,4 -5,0 -5,0 -1,1 -1),(1 -1,1 -2,2 -2,2 -1,1 -1),(2 -2,2 -3,3 -3,3 -2,2 -2)))'::geometry)
 FROM (
 	SELECT
 		ST_SetValue(
@@ -74,7 +74,7 @@ FROM (
 ) foo;
 
 SELECT
-	ST_AsText(ST_Polygon(rast)) = 'MULTIPOLYGON(((1 -1,1 0,5 0,5 -5,4 -5,0 -5,0 -1,1 -1),(1 -1,1 -2,2 -2,2 -1,1 -1),(2 -2,2 -3,3 -3,3 -2,2 -2),(3 -3,3 -4,4 -4,4 -3,3 -3)))'
+	ST_Equals( ST_Polygon(rast) , 'MULTIPOLYGON(((1 -1,1 0,5 0,5 -5,4 -5,0 -5,0 -1,1 -1),(1 -1,1 -2,2 -2,2 -1,1 -1),(2 -2,2 -3,3 -3,3 -2,2 -2),(3 -3,3 -4,4 -4,4 -3,3 -3)))'::geometry)
 FROM (
 	SELECT
 		ST_SetValue(
@@ -93,7 +93,7 @@ FROM (
 ) foo;
 
 SELECT
-	ST_AsText(ST_Polygon(rast)) = 'MULTIPOLYGON(((4 -4,4 -5,0 -5,0 -1,1 -1,1 -2,2 -2,2 -3,3 -3,3 -4,4 -4)),((1 -1,1 0,5 0,5 -4,4 -4,4 -3,3 -3,3 -2,2 -2,2 -1,1 -1)))'
+	ST_Equals( ST_Polygon(rast) , 'MULTIPOLYGON(((4 -4,4 -5,0 -5,0 -1,1 -1,1 -2,2 -2,2 -3,3 -3,3 -4,4 -4)),((1 -1,1 0,5 0,5 -4,4 -4,4 -3,3 -3,3 -2,2 -2,2 -1,1 -1)))'::geometry)
 FROM (
 	SELECT
 		ST_SetValue(
@@ -115,7 +115,7 @@ FROM (
 ) foo;
 
 SELECT
-	ST_AsText(ST_Polygon(rast)) = 'MULTIPOLYGON(((1 -4,2 -4,2 -3,3 -3,3 -4,4 -4,4 -5,3 -5,1 -5,1 -4)),((1 -4,0 -4,0 -1,1 -1,1 -2,2 -2,2 -3,1 -3,1 -4)),((3 -2,4 -2,4 -1,5 -1,5 -4,4 -4,4 -3,3 -3,3 -2)),((3 -2,2 -2,2 -1,1 -1,1 0,4 0,4 -1,3 -1,3 -2)))'
+	ST_Equals( ST_Polygon(rast) , 'MULTIPOLYGON(((1 -4,2 -4,2 -3,3 -3,3 -4,4 -4,4 -5,3 -5,1 -5,1 -4)),((1 -4,0 -4,0 -1,1 -1,1 -2,2 -2,2 -3,1 -3,1 -4)),((3 -2,4 -2,4 -1,5 -1,5 -4,4 -4,4 -3,3 -3,3 -2)),((3 -2,2 -2,2 -1,1 -1,1 0,4 0,4 -1,3 -1,3 -2)))'::geometry)
 FROM (
 	SELECT
 		ST_SetValue(

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

Summary of changes:
 raster/test/cunit/cu_gdal.c            | 130 ++++++++++++++++++---------------
 raster/test/cunit/cu_raster_geometry.c |  57 ++++++++-------
 raster/test/regress/rt_polygon.sql     |  14 ++--
 3 files changed, 112 insertions(+), 89 deletions(-)


hooks/post-receive
-- 
PostGIS


More information about the postgis-tickets mailing list