From: Bborie Park Date: Thu, 25 Aug 2011 14:44:55 +0000 (+0000) Subject: Fixed the problem where having configure detect that GDAL has the GDALFPolygonize... X-Git-Tag: 2.0.0alpha1~1067 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=56791ce3b547bdd13733b6bf5bd3ca5e7f37ccf5;p=postgis Fixed the problem where having configure detect that GDAL has the GDALFPolygonize function does not cause the code to use GDALFPolygonize. This is due to the macro GDALFPOLYGONIZE not being set anywhere. So, it is now being set in raster_config.h.in and included in rt_core/rt_api.h. Had to update testapi.c as the geometries generated differ depending on whether or not GDALFPolygonize is used. Associated ticket is #650 git-svn-id: http://svn.osgeo.org/postgis/trunk@7785 b70326c6-7e19-0410-871a-916f4a2858ee --- diff --git a/raster/raster_config.h.in b/raster/raster_config.h.in index 84c141a0b..b29526ac1 100644 --- a/raster/raster_config.h.in +++ b/raster/raster_config.h.in @@ -63,6 +63,9 @@ /* PostGIS Raster version */ #undef POSTGIS_RASTER_VERSION +/* Define to 1 if GDAL has GDALFPolygonize function. */ +#undef GDALFPOLYGONIZE + /* Enable development variable */ #undef ENABLE_DEVELOPMENT diff --git a/raster/rt_core/rt_api.h b/raster/rt_core/rt_api.h index 0d12c0aca..ff37a7b10 100644 --- a/raster/rt_core/rt_api.h +++ b/raster/rt_core/rt_api.h @@ -98,6 +98,7 @@ #include "cpl_vsi.h" #include "cpl_conv.h" #include "../../postgis_config.h" +#include "../raster_config.h" /** * @file rt_api.h diff --git a/raster/rt_pg/rt_pg.c b/raster/rt_pg/rt_pg.c index 2514bf840..a90559ae1 100644 --- a/raster/rt_pg/rt_pg.c +++ b/raster/rt_pg/rt_pg.c @@ -51,8 +51,6 @@ #include "liblwgeom.h" #include "rt_pg.h" #include "pgsql_compat.h" -#include "rt_api.h" -#include "../raster_config.h" #include /* for get_typlenbyvalalign */ #include /* for ArrayType */ diff --git a/raster/rt_pg/rt_pg.h b/raster/rt_pg/rt_pg.h index 715a9533e..c9e4655d0 100644 --- a/raster/rt_pg/rt_pg.h +++ b/raster/rt_pg/rt_pg.h @@ -33,6 +33,7 @@ #include "rt_api.h" #include "../../postgis_config.h" +#include "../raster_config.h" #include "gserialized.h" /* Debugging macros */ diff --git a/raster/test/core/testapi.c b/raster/test/core/testapi.c index 7918b81b2..e8c39a387 100644 --- a/raster/test/core/testapi.c +++ b/raster/test/core/testapi.c @@ -1478,15 +1478,15 @@ static void testGDALToRaster() { rtn = rt_band_get_pixel(band, 0, 3, &value); CHECK((rtn != -1)); - CHECK((fabs(value - 0.75) < FLT_EPSILON)); + CHECK(FLT_EQ(value, 0.75)); rtn = rt_band_get_pixel(band, 99, 0, &value); CHECK((rtn != -1)); - CHECK((fabs(value - 1.98) < FLT_EPSILON)); + CHECK(FLT_EQ(value, 1.98)); rtn = rt_band_get_pixel(band, 95, 4, &value); CHECK((rtn != -1)); - CHECK((fabs(value - 9.54) < FLT_EPSILON)); + CHECK(FLT_EQ(value, 9.54)); GDALClose(gdds); GDALDeregisterDriver(gddrv); @@ -1545,10 +1545,10 @@ static void testGDALWarp() { CHECK(band); CHECK(rt_band_get_hasnodata_flag(band)); - CHECK((fabs(rt_band_get_nodata(band) - 0.) < FLT_EPSILON)); + CHECK(FLT_EQ(rt_band_get_nodata(band), 0.)); CHECK(rt_band_get_pixel(band, 0, 0, &value) == 0); - CHECK(fabs(value - 0.) < FLT_EPSILON); + CHECK(FLT_EQ(value, 0.)); deepRelease(rast); deepRelease(raster); @@ -1752,10 +1752,18 @@ main() rt_geomval gv = (rt_geomval) rt_raster_dump_as_wktpolygons(rt, 1, &nPols); + /* + int i; + for (i = 0; i < nPols; i++) { + printf("(i, val, geom) = (%d, %f, %s)\n", i, gv[i].val, gv[i].geom); + } + */ + + #if GDALFPOLYGONIZE == 1 - CHECK_EQUALS_DOUBLE(gv[0].val, 1.8); + CHECK(FLT_EQ(gv[0].val, 1.8)); #else - CHECK_EQUALS_DOUBLE(gv[0].val, 2.0); + CHECK(FLT_EQ(gv[0].val, 2.0)); #endif CHECK(!strcmp(gv[0].geom, "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))")); @@ -1764,9 +1772,9 @@ main() CHECK(!strcmp(gv[1].geom, "POLYGON ((3 3,3 6,6 6,6 3,3 3))")); #if GDALFPOLYGONIZE == 1 - CHECK_EQUALS_DOUBLE(gv[2].val, 2.8); + CHECK(FLT_EQ(gv[2].val, 2.8)); #else - CHECK_EQUALS_DOUBLE(gv[2].val, 3.0); + CHECK(FLT_EQ(gv[2].val, 3.0)); #endif CHECK(!strcmp(gv[2].geom, "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))")); @@ -1793,19 +1801,32 @@ main() gv = (rt_geomval) rt_raster_dump_as_wktpolygons(rt, 1, &nPols); - CHECK_EQUALS_DOUBLE(gv[0].val, 0.0); - CHECK(!strcmp(gv[0].geom, "POLYGON ((3 3,3 6,6 6,6 3,3 3))")); + /* + for (i = 0; i < nPols; i++) { + printf("(i, val, geom) = (%d, %f, %s)\n", i, gv[i].val, gv[i].geom); + } + */ #if GDALFPOLYGONIZE == 1 - CHECK_EQUALS_DOUBLE(gv[1].val, 2.8); + CHECK_EQUALS_DOUBLE(gv[1].val, 0.0); + CHECK(!strcmp(gv[1].geom, "POLYGON ((3 3,3 6,6 6,6 3,3 3))")); + + CHECK(FLT_EQ(gv[2].val, 2.8)); + CHECK(!strcmp(gv[2].geom, "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))")); + + CHECK_EQUALS_DOUBLE(gv[3].val, 0.0); + CHECK(!strcmp(gv[3].geom, "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))")); #else - CHECK_EQUALS_DOUBLE(gv[1].val, 3.0); -#endif + CHECK_EQUALS_DOUBLE(gv[0].val, 0.0); + CHECK(!strcmp(gv[0].geom, "POLYGON ((3 3,3 6,6 6,6 3,3 3))")); - CHECK(!strcmp(gv[1].geom, "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))")); + CHECK(FLT_EQ(gv[1].val, 3.0)); + CHECK(!strcmp(gv[1].geom, "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))")); CHECK_EQUALS_DOUBLE(gv[2].val, 0.0); CHECK(!strcmp(gv[2].geom, "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))")); +#endif + rt_raster_destroy(rt); /* Third test: NODATA value = 2.8 */ @@ -1822,21 +1843,30 @@ main() gv = (rt_geomval) rt_raster_dump_as_wktpolygons(rt, 1, &nPols); -#if GDALFPOLYGONIZE == 1 - CHECK_EQUALS_DOUBLE(gv[0].val, 1.8); -#else - CHECK_EQUALS_DOUBLE(gv[0].val, 2.0); -#endif + /* + for (i = 0; i < nPols; i++) { + printf("(i, val, geom) = (%d, %f, %s)\n", i, gv[i].val, gv[i].geom); + } + */ - CHECK(!strcmp(gv[0].geom, "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))")); +#if GDALFPOLYGONIZE == 1 + CHECK(FLT_EQ(gv[0].val, 1.8)); - CHECK_EQUALS_DOUBLE(gv[1].val, 0.0); - CHECK(!strcmp(gv[1].geom, "POLYGON ((3 3,3 6,6 6,6 3,3 3))")); + CHECK_EQUALS_DOUBLE(gv[3].val, 0.0); + CHECK(!strcmp(gv[3].geom, "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))")); + rt_raster_destroy(rt); +#else + CHECK(FLT_EQ(gv[0].val, 2.0)); CHECK_EQUALS_DOUBLE(gv[2].val, 0.0); CHECK(!strcmp(gv[2].geom, "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))")); rt_raster_destroy(rt); +#endif + + CHECK(!strcmp(gv[0].geom, "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))")); + CHECK_EQUALS_DOUBLE(gv[1].val, 0.0); + CHECK(!strcmp(gv[1].geom, "POLYGON ((3 3,3 6,6 6,6 3,3 3))")); /* Fourth test: NODATA value = 0 */ rt = fillRasterToPolygonize(1, 0.0); @@ -1848,18 +1878,24 @@ main() gv = (rt_geomval) rt_raster_dump_as_wktpolygons(rt, 1, &nPols); + /* + for (i = 0; i < nPols; i++) { + printf("(i, val, geom) = (%d, %f, %s)\n", i, gv[i].val, gv[i].geom); + } + */ + #if GDALFPOLYGONIZE == 1 - CHECK_EQUALS_DOUBLE(gv[0].val, 1.8); + CHECK(FLT_EQ(gv[0].val, 1.8)); #else - CHECK_EQUALS_DOUBLE(gv[0].val, 2.0); + CHECK(FLT_EQ(gv[0].val, 2.0)); #endif CHECK(!strcmp(gv[0].geom, "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))")); #if GDALFPOLYGONIZE == 1 - CHECK_EQUALS_DOUBLE(gv[1].val, 2.8); + CHECK(FLT_EQ(gv[1].val, 2.8)); #else - CHECK_EQUALS_DOUBLE(gv[1].val, 3.0); + CHECK(FLT_EQ(gv[1].val, 3.0)); #endif CHECK(!strcmp(gv[1].geom, "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))")); @@ -1876,10 +1912,16 @@ main() gv = (rt_geomval) rt_raster_dump_as_wktpolygons(rt, 1, &nPols); + /* + for (i = 0; i < nPols; i++) { + printf("(i, val, geom) = (%d, %f, %s)\n", i, gv[i].val, gv[i].geom); + } + */ + #if GDALFPOLYGONIZE == 1 - CHECK_EQUALS_DOUBLE(gv[0].val, 1.8); + CHECK(FLT_EQ(gv[0].val, 1.8)); #else - CHECK_EQUALS_DOUBLE(gv[0].val, 2.0); + CHECK(FLT_EQ(gv[0].val, 2.0)); #endif CHECK(!strcmp(gv[0].geom, "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))")); @@ -1888,9 +1930,9 @@ main() CHECK(!strcmp(gv[1].geom, "POLYGON ((3 3,3 6,6 6,6 3,3 3))")); #if GDALFPOLYGONIZE == 1 - CHECK_EQUALS_DOUBLE(gv[2].val, 2.8); + CHECK(FLT_EQ(gv[2].val, 2.8)); #else - CHECK_EQUALS_DOUBLE(gv[2].val, 3.0); + CHECK(FLT_EQ(gv[2].val, 3.0)); #endif CHECK(!strcmp(gv[2].geom, "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))"));