]> granicus.if.org Git - postgis/commitdiff
Fixed the problem where having configure detect that GDAL has the GDALFPolygonize...
authorBborie Park <bkpark at ucdavis.edu>
Thu, 25 Aug 2011 14:44:55 +0000 (14:44 +0000)
committerBborie Park <bkpark at ucdavis.edu>
Thu, 25 Aug 2011 14:44:55 +0000 (14:44 +0000)
Associated ticket is #650

git-svn-id: http://svn.osgeo.org/postgis/trunk@7785 b70326c6-7e19-0410-871a-916f4a2858ee

raster/raster_config.h.in
raster/rt_core/rt_api.h
raster/rt_pg/rt_pg.c
raster/rt_pg/rt_pg.h
raster/test/core/testapi.c

index 84c141a0b0cc3d9d1fd3d67efab312109ec5b3c9..b29526ac1ea6ca435feaa95d5d22eaa9bb76c855 100644 (file)
@@ -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
 
index 0d12c0aca43833d47044039011c8c37951d1e716..ff37a7b10310de4573565b750a425ecae8932e5e 100644 (file)
@@ -98,6 +98,7 @@
 #include "cpl_vsi.h"
 #include "cpl_conv.h"
 #include "../../postgis_config.h"
+#include "../raster_config.h"
 
 /**
  * @file rt_api.h
index 2514bf84059227a630216689a5a8307c4d957345..a90559ae1b68007971cc35235cc0995e206940c4 100644 (file)
@@ -51,8 +51,6 @@
 #include "liblwgeom.h"
 #include "rt_pg.h"
 #include "pgsql_compat.h"
-#include "rt_api.h"
-#include "../raster_config.h"
 
 #include <utils/lsyscache.h> /* for get_typlenbyvalalign */
 #include <utils/array.h> /* for ArrayType */
index 715a9533e59c96972d5fa02f35262bee4be8d9ac..c9e4655d05f60a2d1fa710087e85ca772a3b19b1 100644 (file)
@@ -33,6 +33,7 @@
 
 #include "rt_api.h"
 #include "../../postgis_config.h"
+#include "../raster_config.h"
 #include "gserialized.h"
 
 /* Debugging macros */
index 7918b81b206a846a4aebdca2fb89cdbbc61f480f..e8c39a387b9bbd05e01eefc33b221f3162cdabbe 100644 (file)
@@ -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))"));