[postgis-tickets] [SCM] PostGIS branch stable-3.0 updated. 3.0.1-37-g8e4f510

git at osgeo.org git at osgeo.org
Mon Aug 3 12:52:32 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, stable-3.0 has been updated
       via  8e4f510903995abde22468a6e9a107021dacde60 (commit)
      from  18646265f7090076a4a13a1af4cdc9f0484b8fea (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 8e4f510903995abde22468a6e9a107021dacde60
Author: Regina Obe <lr at pcorp.us>
Date:   Mon Aug 3 15:51:44 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.0

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