]> granicus.if.org Git - postgis/commitdiff
Changed signature of rt_band_get_nodata() as there was no way to
authorBborie Park <bkpark at ucdavis.edu>
Mon, 22 Oct 2012 17:19:20 +0000 (17:19 +0000)
committerBborie Park <bkpark at ucdavis.edu>
Mon, 22 Oct 2012 17:19:20 +0000 (17:19 +0000)
indicate an error if the band has no NODATA.

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

raster/rt_core/rt_api.c
raster/rt_core/rt_api.h
raster/rt_pg/rt_pg.c
raster/test/core/testapi.c
raster/test/core/testwkb.c
raster/test/regress/rt_pixelvalue_expected

index 9d41d9940eea133ef5055205ecc42687271585a0..7078473cb402d8c0cb06761211e3d481c06eed86 100644 (file)
@@ -2083,7 +2083,8 @@ rt_band_set_pixel_line(
 #endif
 
        /* set band's isnodata flag to FALSE */
-       rt_band_set_isnodata_flag(band, 0);
+       if (rt_band_get_hasnodata_flag(band))
+               rt_band_set_isnodata_flag(band, 0);
 
        return 1;
 }
@@ -2393,8 +2394,6 @@ rt_band_get_pixel(
                ) {
                        *nodata = 1;
                }
-               else
-                       *nodata = 0;
        }
 
        return 0;
@@ -2761,18 +2760,27 @@ rt_band_get_pixel_of_value(
 
        return count;
 }
-// WORK FROM HERE
-double
-rt_band_get_nodata(rt_band band) {
 
+/**
+ * Get NODATA value
+ *
+ * @param band: the band whose NODATA value will be returned
+ * @param nodata: the band's NODATA value
+ *
+ * @return 0 if error, 1 otherwise
+ */
+int
+rt_band_get_nodata(rt_band band, double *nodata) { 
+       assert(NULL != band);
 
-    assert(NULL != band);
-
-    if (!band->hasnodata)
-        RASTER_DEBUGF(3, "Getting nodata value for a band without NODATA values. Using %g", band->nodataval);
+       *nodata = band->nodataval;
 
+       if (!band->hasnodata) {
+               rterror("rt_band_get_nodata: Band has no NODATA value");
+               return 0;
+       }
 
-    return band->nodataval;
+       return 1;
 }
 
 double
@@ -3021,7 +3029,7 @@ rt_band_get_summary_stats(
 
        hasnodata = rt_band_get_hasnodata_flag(band);
        if (hasnodata != FALSE)
-               nodata = rt_band_get_nodata(band);
+               rt_band_get_nodata(band, &nodata);
        else
                exclude_nodata_value = 0;
 
@@ -3904,7 +3912,7 @@ rt_band_get_quantiles_stream(rt_band band,
 
        hasnodata = rt_band_get_hasnodata_flag(band);
        if (hasnodata != FALSE)
-               nodata = rt_band_get_nodata(band);
+               rt_band_get_nodata(band, &nodata);
        else
                exclude_nodata_value = 0;
        RASTER_DEBUGF(3, "nodata = %f", nodata);
@@ -4499,7 +4507,7 @@ rt_band_get_value_count(rt_band band, int exclude_nodata_value,
 
        hasnodata = rt_band_get_hasnodata_flag(band);
        if (hasnodata != FALSE)
-               nodata = rt_band_get_nodata(band);
+               rt_band_get_nodata(band, &nodata);
        else
                exclude_nodata_value = 0;
 
@@ -4744,7 +4752,8 @@ rt_band_reclass(rt_band srcband, rt_pixtype pixtype,
 
        /* source nodata */
        src_hasnodata = rt_band_get_hasnodata_flag(srcband);
-       src_nodataval = rt_band_get_nodata(srcband);
+       if (src_hasnodata)
+               rt_band_get_nodata(srcband, &src_nodataval);
 
        /* size of memory block to allocate */
        width = rt_band_get_width(srcband);
@@ -5874,7 +5883,7 @@ rt_raster_gdal_polygonize(
        if (exclude_nodata_value) {
                iBandHasNodataValue = rt_band_get_hasnodata_flag(band);
                if (iBandHasNodataValue)
-                       dBandNoData = rt_band_get_nodata(band);
+                       rt_band_get_nodata(band, &dBandNoData);
                else
                        exclude_nodata_value = FALSE;
        }
@@ -8828,7 +8837,7 @@ rt_raster_to_gdal_mem(
 
                /* Add nodata value for band */
                if (rt_band_get_hasnodata_flag(rtband) != FALSE && excludeNodataValues[i]) {
-                       nodata = rt_band_get_nodata(rtband);
+                       rt_band_get_nodata(rtband, &nodata);
                        if (GDALSetRasterNoDataValue(band, nodata) != CE_None)
                                rtwarn("rt_raster_to_gdal_mem: Could not set nodata value for band");
                        RASTER_DEBUGF(3, "nodata value set to %f", GDALGetRasterNoDataValue(band, NULL));
@@ -9807,7 +9816,7 @@ rt_raster rt_raster_gdal_warp(
 
                /* set nodata */
                if (rt_band_get_hasnodata_flag(rtband) != FALSE) {
-                       nodata = rt_band_get_nodata(rtband);
+                       rt_band_get_nodata(rtband, &nodata);
                        if (GDALSetRasterNoDataValue(band, nodata) != CE_None)
                                rtwarn("rt_raster_gdal_warp: Could not set nodata value for band %d", i);
                        RASTER_DEBUGF(3, "nodata value set to %f", GDALGetRasterNoDataValue(band, NULL));
@@ -9965,7 +9974,7 @@ rt_raster rt_raster_gdal_warp(
                        wopts->padfSrcNoDataReal[i] = -123456.789;
                }
                else {
-                       wopts->padfSrcNoDataReal[i] = rt_band_get_nodata(band);
+                       rt_band_get_nodata(band, &(wopts->padfSrcNoDataReal[i]));
                }
 
                wopts->padfDstNoDataReal[i] = wopts->padfSrcNoDataReal[i];
@@ -11590,7 +11599,7 @@ rt_raster_intersects(
 
        hasnodataS = rt_band_get_hasnodata_flag(bandS);
        if (hasnodataS != FALSE)
-               nodataS = rt_band_get_nodata(bandS);
+               rt_band_get_nodata(bandS, &nodataS);
 
        /* load band of larger raster */
        bandL = rt_raster_get_band(rastL, nbandL);
@@ -11602,7 +11611,7 @@ rt_raster_intersects(
 
        hasnodataL = rt_band_get_hasnodata_flag(bandL);
        if (hasnodataL != FALSE)
-               nodataL = rt_band_get_nodata(bandL);
+               rt_band_get_nodata(bandL, &nodataL);
 
        /* no band to use, ignore nodata */
        if (nband1 < 0) {
@@ -13305,6 +13314,7 @@ rt_raster_iterator(
 
        double minval;
        double value;
+       int isnodata;
        int nodata;
 
        RASTER_DEBUG(3, "Starting...");
@@ -13747,7 +13757,7 @@ rt_raster_iterator(
                                                _param->band[i],
                                                x, y,
                                                &value,
-                                               NULL
+                                               &isnodata
                                        ) < 0) {
                                                rterror("rt_raster_iterator: Unable to get the pixel value of band");
 
@@ -13764,11 +13774,12 @@ rt_raster_iterator(
                                        RASTER_DEBUG(4, "Outside band extent, setting value to NODATA");
                                        /* has NODATA, use NODATA */
                                        if (rt_band_get_hasnodata_flag(_param->band[i]))
-                                               value = rt_band_get_nodata(_param->band[i]);
+                                               rt_band_get_nodata(_param->band[i], &value);
                                        /* no NODATA, use min possible value */
                                        else
                                                value = rt_band_get_min_value(_param->band[i]);
                                        inextent = 0;
+                                       isnodata = 1;
                                }
 
                                /* add pixel to neighborhood */
@@ -13794,14 +13805,7 @@ rt_raster_iterator(
                                npixels[status - 1].value = value;
 
                                /* set nodata flag */
-                               if (
-                                       (!rt_band_get_hasnodata_flag(_param->band[i]) && inextent) || (
-                                               (rt_band_get_hasnodata_flag(_param->band[i]) != FALSE) && (
-                                                       FLT_NEQ(value, rt_band_get_nodata(_param->band[i])) &&
-                                                       (rt_band_clamped_value_is_nodata(_param->band[i], value) != 1)
-                                               )
-                                       )
-                               ) {
+                               if ((!rt_band_get_hasnodata_flag(_param->band[i]) && inextent) || !isnodata) {
                                        npixels[status - 1].nodata = 0;
                                }
                                RASTER_DEBUGF(4, "value, nodata: %f, %d", value, npixels[status - 1].nodata);
index 3ff78a616c8b7585e82f44aaf8bac9cfe4469213..3ce57c28da76f4285485986048f2609aa4f96872 100644 (file)
@@ -547,13 +547,14 @@ int rt_band_get_isnodata_flag(rt_band band);
 int rt_band_set_nodata(rt_band band, double val);
 
 /**
- * Get nodata value
+ * Get NODATA value
  *
- * @param band : the band to set nodata value to
+ * @param band: the band whose NODATA value will be returned
+ * @param nodata: the band's NODATA value
  *
- * @return nodata value
+ * @return 0 if error, 1 otherwise
  */
-double rt_band_get_nodata(rt_band band);
+int rt_band_get_nodata(rt_band band, double *nodata);
 
 /**
  * Set values of multiple pixels.  Unlike rt_band_set_pixel,
index b0a9fcd16c8d4dba318afe5f1fdd7012c16014b1..45f7bf98a2fec8dcc30afada00d10edf2a26689a 100644 (file)
@@ -2112,7 +2112,7 @@ Datum RASTER_getBandNoDataValue(PG_FUNCTION_ARGS)
         PG_RETURN_NULL();
     }
 
-    nodata = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &nodata);
 
     rt_raster_destroy(raster);
     PG_FREE_IF_COPY(pgraster, 0);
@@ -2377,7 +2377,8 @@ Datum RASTER_getPixelValue(PG_FUNCTION_ARGS)
     int32_t x = 0;
     int32_t y = 0;
     int result = 0;
-    bool hasnodata = TRUE;
+    bool exclude_nodata_value = TRUE;
+               int isnodata = 0;
 
     /* Index is 1-based */
     bandindex = PG_GETARG_INT32(1);
@@ -2390,7 +2391,7 @@ Datum RASTER_getPixelValue(PG_FUNCTION_ARGS)
 
     y = PG_GETARG_INT32(3);
 
-    hasnodata = PG_GETARG_BOOL(4);
+    exclude_nodata_value = PG_GETARG_BOOL(4);
 
     POSTGIS_RT_DEBUGF(3, "Pixel coordinates (%d, %d)", x, y);
 
@@ -2415,12 +2416,11 @@ Datum RASTER_getPixelValue(PG_FUNCTION_ARGS)
         PG_RETURN_NULL();
     }
     /* Fetch pixel using 0-based coordinates */
-    result = rt_band_get_pixel(band, x - 1, y - 1, &pixvalue, NULL);
+    result = rt_band_get_pixel(band, x - 1, y - 1, &pixvalue, &isnodata);
 
     /* If the result is -1 or the value is nodata and we take nodata into account
      * then return nodata = NULL */
-    if (result == -1 || (hasnodata && rt_band_get_hasnodata_flag(band) &&
-            pixvalue == rt_band_get_nodata(band))) {
+    if (result == -1 || (exclude_nodata_value && isnodata)) {
         rt_raster_destroy(raster);
         PG_FREE_IF_COPY(pgraster, 0);
         PG_RETURN_NULL();
@@ -2714,7 +2714,7 @@ Datum RASTER_dumpValues(PG_FUNCTION_ARGS)
                        /* band's hasnodata and nodataval */
                        hasnodata = rt_band_get_hasnodata_flag(band);
                        if (hasnodata)
-                               nodataval = rt_band_get_nodata(band);
+                               rt_band_get_nodata(band, &nodataval);
                        POSTGIS_RT_DEBUGF(4, "(hasnodata, nodataval) = (%d, %f)", hasnodata, nodataval);
 
                        /* allocate memory for values and nodata flags */
@@ -2924,7 +2924,7 @@ Datum RASTER_setPixelValue(PG_FUNCTION_ARGS)
                                        PG_RETURN_POINTER(pgraster);
                                }
                                else {
-                                       pixvalue = rt_band_get_nodata(band);
+                                       rt_band_get_nodata(band, &pixvalue);
                                        rt_band_set_pixel(band, x - 1, y - 1, pixvalue);
                                }
                        }
@@ -3298,7 +3298,7 @@ Datum RASTER_setPixelValuesArray(PG_FUNCTION_ARGS)
        /* has NODATA, use NODATA */
        hasnodata = rt_band_get_hasnodata_flag(band);
        if (hasnodata)
-               nodataval = rt_band_get_nodata(band);
+               rt_band_get_nodata(band, &nodataval);
        /* no NODATA, use min possible value */
        else
                nodataval = rt_band_get_min_value(band);
@@ -3559,7 +3559,7 @@ Datum RASTER_setPixelValuesGeomval(PG_FUNCTION_ARGS)
        pixtype = rt_band_get_pixtype(band);
        hasnodata = rt_band_get_hasnodata_flag(band);
        if (hasnodata)
-               nodataval = rt_band_get_nodata(band);
+               rt_band_get_nodata(band, &nodataval);
 
        /* array of geomval (2) */
        if (PG_ARGISNULL(2)) {
@@ -3993,7 +3993,7 @@ Datum RASTER_getPixelPolygons(PG_FUNCTION_ARGS)
 
                                hasnodata = rt_band_get_hasnodata_flag(band);
                                if (hasnodata) {
-                                       nodataval = rt_band_get_nodata(band);
+                                       rt_band_get_nodata(band, &nodataval);
                                        POSTGIS_RT_DEBUGF(4, "(hasnodata, nodataval) = (%d, %f)", hasnodata, nodataval);
                                }
                                else
@@ -4492,6 +4492,7 @@ Datum RASTER_nearestValue(PG_FUNCTION_ARGS)
        rt_pixel npixels = NULL;
        double value = 0;
        int hasvalue = 0;
+       int isnodata = 0;
 
        if (PG_ARGISNULL(0))
                PG_RETURN_NULL();
@@ -4580,7 +4581,7 @@ Datum RASTER_nearestValue(PG_FUNCTION_ARGS)
                (x >= 0 && x < rt_raster_get_width(raster)) &&
                (y >= 0 && y < rt_raster_get_height(raster))
        ) {
-               if (rt_band_get_pixel(band, x, y, &value, NULL) < 0) {
+               if (rt_band_get_pixel(band, x, y, &value, &isnodata) < 0) {
                        elog(ERROR, "RASTER_nearestValue: Unable to get pixel value for band at index %d", bandindex);
                        rt_raster_destroy(raster);
                        PG_FREE_IF_COPY(pgraster, 0);
@@ -4590,16 +4591,7 @@ Datum RASTER_nearestValue(PG_FUNCTION_ARGS)
                }
 
                /* value at point, return value */
-               if (
-                       !exclude_nodata_value || 
-                       !rt_band_get_hasnodata_flag(band) || (
-                               exclude_nodata_value &&
-                               rt_band_get_hasnodata_flag(band) && (
-                                       FLT_NEQ(value, rt_band_get_nodata(band)) &&
-                                       (rt_band_clamped_value_is_nodata(band, value) != 1)
-                               )
-                       )
-               ) {
+               if (!exclude_nodata_value || !isnodata) {
                        rt_raster_destroy(raster);
                        PG_FREE_IF_COPY(pgraster, 0);
                        lwgeom_free(lwgeom);
@@ -4699,6 +4691,7 @@ Datum RASTER_neighborhood(PG_FUNCTION_ARGS)
        int distance[2] = {0};
        bool exclude_nodata_value = TRUE;
        double pixval;
+       int isnodata = 0;
        int inextent = 0;
 
        rt_pixel npixels = NULL;
@@ -4815,7 +4808,7 @@ Datum RASTER_neighborhood(PG_FUNCTION_ARGS)
                        band,
                        _x, _y,
                        &pixval,
-                       NULL
+                       &isnodata
                ) < 0) {
                        elog(NOTICE, "Unable to get the pixel of band at index %d. Returning NULL", bandindex);
                        rt_band_destroy(band);
@@ -4829,11 +4822,12 @@ Datum RASTER_neighborhood(PG_FUNCTION_ARGS)
        else {
                /* has NODATA, use NODATA */
                if (rt_band_get_hasnodata_flag(band))
-                       pixval = rt_band_get_nodata(band);
+                       rt_band_get_nodata(band, &pixval);
                /* no NODATA, use min possible value */
                else
                        pixval = rt_band_get_min_value(band);
                inextent = 0;
+               isnodata = 1;
        }
        POSTGIS_RT_DEBUGF(4, "pixval: %f", pixval);
 
@@ -4859,16 +4853,7 @@ Datum RASTER_neighborhood(PG_FUNCTION_ARGS)
        npixels[count - 1].value = pixval;
 
        /* set NODATA */
-       if (
-               !exclude_nodata_value || 
-               (!rt_band_get_hasnodata_flag(band) && inextent) || (
-                       exclude_nodata_value &&
-                       (rt_band_get_hasnodata_flag(band) != FALSE) && (
-                               FLT_NEQ(pixval, rt_band_get_nodata(band)) &&
-                               (rt_band_clamped_value_is_nodata(band, pixval) != 1)
-                       )
-               )
-       ) {
+       if (!exclude_nodata_value || !isnodata) {
                npixels[count - 1].nodata = 0;
        }
 
@@ -5702,7 +5687,7 @@ Datum RASTER_mapAlgebraExpr(PG_FUNCTION_ARGS)
     POSTGIS_RT_DEBUG(3, "RASTER_mapAlgebraExpr: Getting NODATA value for band...");
 
     if (rt_band_get_hasnodata_flag(band)) {
-        newnodatavalue = rt_band_get_nodata(band);
+        rt_band_get_nodata(band, &newnodatavalue);
     }
 
     else {
@@ -6363,7 +6348,7 @@ Datum RASTER_mapAlgebraFct(PG_FUNCTION_ARGS)
     POSTGIS_RT_DEBUG(3, "RASTER_mapAlgebraFct: Getting NODATA value for band...");
 
     if (rt_band_get_hasnodata_flag(band)) {
-        newnodatavalue = rt_band_get_nodata(band);
+        rt_band_get_nodata(band, &newnodatavalue);
     }
 
     else {
@@ -11241,7 +11226,7 @@ Datum RASTER_bandmetadata(PG_FUNCTION_ARGS)
 
                        /* nodatavalue */
                        if (bmd[i].hasnodata)
-                               bmd[i].nodataval = rt_band_get_nodata(band);
+                               rt_band_get_nodata(band, &(bmd[i].nodataval));
                        else
                                bmd[i].nodataval = 0;
 
@@ -13191,7 +13176,7 @@ Datum RASTER_mapAlgebra2(PG_FUNCTION_ARGS)
 
                _hasnodata[i] = rt_band_get_hasnodata_flag(_band[i]);
                if (_hasnodata[i])
-                       _nodataval[i] = rt_band_get_nodata(_band[i]);
+                       rt_band_get_nodata(_band[i], &(_nodataval[i]));
        }
 
        /* pixtype is PT_END, get pixtype based upon extent */
@@ -13269,12 +13254,6 @@ Datum RASTER_mapAlgebra2(PG_FUNCTION_ARGS)
                rt_raster_get_srid(raster)
        );
 
-       POSTGIS_RT_DEBUGF(4, "bandmetadata = (%s, %d, %f)",
-               rt_pixtype_name(rt_band_get_pixtype(band)),
-               rt_band_get_hasnodata_flag(band),
-               rt_band_get_nodata(band)
-       );
-
        /*
                determine who called this function
                Arg 4 will either be text or regprocedure
@@ -14055,7 +14034,7 @@ Datum RASTER_mapAlgebraFctNgb(PG_FUNCTION_ARGS)
     POSTGIS_RT_DEBUG(3, "RASTER_mapAlgebraFctNgb: Getting NODATA value for band...");
 
     if (rt_band_get_hasnodata_flag(band)) {
-        newnodatavalue = rt_band_get_nodata(band);
+        rt_band_get_nodata(band, &newnodatavalue);
     }
 
     else {
@@ -15124,7 +15103,7 @@ Datum RASTER_nMapAlgebra(PG_FUNCTION_ARGS)
        /* set hasnodata and nodataval */
        arg->hasnodata = 1;
        if (rt_band_get_hasnodata_flag(band))
-               arg->nodataval = rt_band_get_nodata(band);
+               rt_band_get_nodata(band, &(arg->nodataval));
        else
                arg->nodataval = rt_band_get_min_value(band);
 
@@ -15810,7 +15789,7 @@ Datum RASTER_union_transfn(PG_FUNCTION_ARGS)
                                pixtype = rt_band_get_pixtype(_band);
                                hasnodata = 1;
                                if (rt_band_get_hasnodata_flag(_band))
-                                       nodataval = rt_band_get_nodata(_band);
+                                       rt_band_get_nodata(_band, &nodataval);
                                else
                                        nodataval = rt_band_get_min_value(_band);
                        }
@@ -15946,7 +15925,7 @@ Datum RASTER_union_finalfn(PG_FUNCTION_ARGS)
                        pixtype = rt_band_get_pixtype(_band);
                        hasnodata = rt_band_get_hasnodata_flag(_band);
                        if (hasnodata)
-                               nodataval = rt_band_get_nodata(_band);
+                               rt_band_get_nodata(_band, &nodataval);
                        POSTGIS_RT_DEBUGF(4, "(pixtype, hasnodata, nodataval) = (%s, %d, %f)", rt_pixtype_name(pixtype), hasnodata, nodataval);
 
                        itrset[0].raster = iwr->bandarg[i].raster[0];
index 42f274298da309f03046bc33973847f6f5fd19f9..4c80c247014a007411be1ab65a197d8f9c433d97 100644 (file)
@@ -371,13 +371,13 @@ static void testBand1BB(rt_band band)
 
     failure = rt_band_set_nodata(band, 1);
     CHECK(!failure);
-    //printf("1BB nodata is %g\n", rt_band_get_nodata(band));
-    CHECK_EQUALS(rt_band_get_nodata(band), 1);
+               rt_band_get_nodata(band, &val);
+    CHECK_EQUALS(val, 1);
 
     failure = rt_band_set_nodata(band, 0);
     CHECK(!failure);
-    //printf("1BB nodata is %g\n", rt_band_get_nodata(band));
-    CHECK_EQUALS(rt_band_get_nodata(band), 0);
+               rt_band_get_nodata(band, &val);
+    CHECK_EQUALS(val, 0);
 
     failure = rt_band_set_nodata(band, 2);
     CHECK(failure); /* out of range value */
@@ -421,22 +421,22 @@ static void testBand2BUI(rt_band band)
     int failure;
 
     failure = rt_band_set_nodata(band, 1);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 1);
     CHECK(!failure);
 
     failure = rt_band_set_nodata(band, 0);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 0);
     CHECK(!failure);
 
     failure = rt_band_set_nodata(band, 2);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 2);
     CHECK(!failure);
 
     failure = rt_band_set_nodata(band, 3);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 3);
     CHECK(!failure);
 
@@ -489,31 +489,31 @@ static void testBand4BUI(rt_band band)
 
     failure = rt_band_set_nodata(band, 1);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 1);
 
     failure = rt_band_set_nodata(band, 0);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK(!failure);
     CHECK_EQUALS(val, 0);
 
     failure = rt_band_set_nodata(band, 2);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK(!failure);
     CHECK_EQUALS(val, 2);
 
     failure = rt_band_set_nodata(band, 4);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK(!failure);
     CHECK_EQUALS(val, 4);
 
     failure = rt_band_set_nodata(band, 8);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK(!failure);
     CHECK_EQUALS(val, 8);
 
     failure = rt_band_set_nodata(band, 15);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK(!failure);
     CHECK_EQUALS(val, 15);
 
@@ -570,42 +570,42 @@ static void testBand8BUI(rt_band band)
 
     failure = rt_band_set_nodata(band, 1);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 1);
 
     failure = rt_band_set_nodata(band, 0);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 0);
 
     failure = rt_band_set_nodata(band, 2);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 2);
 
     failure = rt_band_set_nodata(band, 4);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 4);
 
     failure = rt_band_set_nodata(band, 8);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 8);
 
     failure = rt_band_set_nodata(band, 15);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 15);
 
     failure = rt_band_set_nodata(band, 31);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 31);
 
     failure = rt_band_set_nodata(band, 255);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 255);
 
     failure = rt_band_set_nodata(band, 256); /* out of value range */
@@ -649,46 +649,46 @@ static void testBand8BSI(rt_band band)
 
     failure = rt_band_set_nodata(band, 1);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 1);
 
     failure = rt_band_set_nodata(band, 0);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 0);
 
     failure = rt_band_set_nodata(band, 2);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 2);
 
     failure = rt_band_set_nodata(band, 4);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 4);
 
     failure = rt_band_set_nodata(band, 8);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 8);
 
     failure = rt_band_set_nodata(band, 15);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 15);
 
     failure = rt_band_set_nodata(band, 31);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 31);
 
     failure = rt_band_set_nodata(band, -127);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, -127);
 
     failure = rt_band_set_nodata(band, 127);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 127);
 
     /* out of range (-127..127) */
@@ -750,27 +750,27 @@ static void testBand16BUI(rt_band band)
 
     failure = rt_band_set_nodata(band, 1);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 1);
 
     failure = rt_band_set_nodata(band, 0);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 0);
 
     failure = rt_band_set_nodata(band, 31);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 31);
 
     failure = rt_band_set_nodata(band, 255);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 255);
 
     failure = rt_band_set_nodata(band, 65535);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     //printf("set 65535 on %s band gets %g back\n", pixtypeName, val);
     CHECK_EQUALS(val, 65535);
 
@@ -814,33 +814,33 @@ static void testBand16BSI(rt_band band)
 
     failure = rt_band_set_nodata(band, 1);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 1);
 
     failure = rt_band_set_nodata(band, 0);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 0);
 
     failure = rt_band_set_nodata(band, 31);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 31);
 
     failure = rt_band_set_nodata(band, 255);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 255);
 
     failure = rt_band_set_nodata(band, -32767);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     //printf("set 65535 on %s band gets %g back\n", pixtypeName, val);
     CHECK_EQUALS(val, -32767);
 
     failure = rt_band_set_nodata(band, 32767);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     //printf("set 65535 on %s band gets %g back\n", pixtypeName, val);
     CHECK_EQUALS(val, 32767);
 
@@ -899,22 +899,22 @@ static void testBand32BUI(rt_band band)
 
     failure = rt_band_set_nodata(band, 1);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 1);
 
     failure = rt_band_set_nodata(band, 0);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 0);
 
     failure = rt_band_set_nodata(band, 65535);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 65535);
 
     failure = rt_band_set_nodata(band, 4294967295UL);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 4294967295UL);
 
     /* out of range */
@@ -971,22 +971,22 @@ static void testBand32BSI(rt_band band)
 
     failure = rt_band_set_nodata(band, 1);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 1);
 
     failure = rt_band_set_nodata(band, 0);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 0);
 
     failure = rt_band_set_nodata(band, 65535);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 65535);
 
     failure = rt_band_set_nodata(band, 2147483647);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     /*printf("32BSI pix is %ld\n", (long int)val);*/
     CHECK_EQUALS(val, 2147483647);
 
@@ -1044,23 +1044,23 @@ static void testBand32BF(rt_band band)
 
     failure = rt_band_set_nodata(band, 1);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 1);
 
     failure = rt_band_set_nodata(band, 0);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 0);
 
     failure = rt_band_set_nodata(band, 65535.5);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     //printf("set 65535.56 on %s band gets %g back\n", pixtypeName, val);
     CHECK_EQUALS_DOUBLE(val, 65535.5);
 
     failure = rt_band_set_nodata(band, 0.006);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS_DOUBLE(val, 0.0060000000521540); /* XXX: Alternatively, use CHECK_EQUALS_DOUBLE_EX */
 
     {
@@ -1105,22 +1105,22 @@ static void testBand64BF(rt_band band)
 
     failure = rt_band_set_nodata(band, 1);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 1);
 
     failure = rt_band_set_nodata(band, 0);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 0);
 
     failure = rt_band_set_nodata(band, 65535.56);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 65535.56);
 
     failure = rt_band_set_nodata(band, 0.006);
     CHECK(!failure);
-    val = rt_band_get_nodata(band);
+    rt_band_get_nodata(band, &val);
     CHECK_EQUALS(val, 0.006);
 
     {
@@ -1243,7 +1243,7 @@ static void testBandStats() {
                }
        }
 
-       nodata = rt_band_get_nodata(band);
+       rt_band_get_nodata(band, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        stats = (rt_bandstats) rt_band_get_summary_stats(band, 1, 0, 1, NULL, NULL, NULL);
@@ -1340,7 +1340,7 @@ static void testBandStats() {
                }
        }
 
-       nodata = rt_band_get_nodata(band);
+       rt_band_get_nodata(band, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        quantile = (rt_quantile) rt_band_get_quantiles_stream(
@@ -1374,7 +1374,7 @@ static void testBandStats() {
                }
        }
 
-       nodata = rt_band_get_nodata(band);
+       rt_band_get_nodata(band, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        max_run = 5;
@@ -1424,7 +1424,7 @@ static void testRasterReplaceBand() {
 
        rband = rt_raster_replace_band(raster, band, 0);
        CHECK(rband);
-       nodata = rt_band_get_nodata(rt_raster_get_band(raster, 0));
+       rt_band_get_nodata(rt_raster_get_band(raster, 0), &nodata);
        CHECK((nodata == 1));
 
        deepRelease(raster);
@@ -1461,7 +1461,7 @@ static void testBandReclass() {
                }
        }
 
-       nodata = rt_band_get_nodata(band);
+       rt_band_get_nodata(band, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        exprset = rtalloc(cnt * sizeof(rt_reclassexpr));
@@ -1822,7 +1822,8 @@ static void testGDALWarp() {
        CHECK(band);
 
        CHECK(rt_band_get_hasnodata_flag(band));
-       CHECK(FLT_EQ(rt_band_get_nodata(band), 0.));
+       rt_band_get_nodata(band, &value);
+       CHECK(FLT_EQ(value, 0.));
 
        CHECK(rt_band_get_pixel(band, 0, 0, &value, NULL) == 0);
        CHECK(FLT_EQ(value, 0.));
@@ -1942,7 +1943,7 @@ static void testIntersects() {
        rtn = rt_band_set_pixel(band1, 1, 0, 1);
        rtn = rt_band_set_pixel(band1, 1, 1, 1);
 
-       nodata = rt_band_get_nodata(band1);
+       rt_band_get_nodata(band1, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        /*
@@ -1967,7 +1968,7 @@ static void testIntersects() {
        rtn = rt_band_set_pixel(band2, 1, 0, 1);
        rtn = rt_band_set_pixel(band2, 1, 1, 1);
 
-       nodata = rt_band_get_nodata(band2);
+       rt_band_get_nodata(band2, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        rtn = rt_raster_intersects(
@@ -2181,7 +2182,7 @@ static void testIntersects() {
        rtn = rt_band_set_pixel(band2, 2, 1, 1);
        rtn = rt_band_set_pixel(band2, 2, 2, 1);
 
-       nodata = rt_band_get_nodata(band2);
+       rt_band_get_nodata(band2, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        rtn = rt_raster_intersects(
@@ -2405,7 +2406,7 @@ static void testOverlaps() {
        rtn = rt_band_set_pixel(band1, 1, 0, 1);
        rtn = rt_band_set_pixel(band1, 1, 1, 1);
 
-       nodata = rt_band_get_nodata(band1);
+       rt_band_get_nodata(band1, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        rtn = rt_raster_overlaps(
@@ -2438,7 +2439,7 @@ static void testOverlaps() {
        rtn = rt_band_set_pixel(band2, 1, 0, 1);
        rtn = rt_band_set_pixel(band2, 1, 1, 1);
 
-       nodata = rt_band_get_nodata(band2);
+       rt_band_get_nodata(band2, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        rtn = rt_raster_overlaps(
@@ -2652,7 +2653,7 @@ static void testOverlaps() {
        rtn = rt_band_set_pixel(band2, 2, 1, 1);
        rtn = rt_band_set_pixel(band2, 2, 2, 1);
 
-       nodata = rt_band_get_nodata(band2);
+       rt_band_get_nodata(band2, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        rtn = rt_raster_overlaps(
@@ -2876,7 +2877,7 @@ static void testTouches() {
        rtn = rt_band_set_pixel(band1, 1, 0, 1);
        rtn = rt_band_set_pixel(band1, 1, 1, 1);
 
-       nodata = rt_band_get_nodata(band1);
+       rt_band_get_nodata(band1, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        rtn = rt_raster_touches(
@@ -2909,7 +2910,7 @@ static void testTouches() {
        rtn = rt_band_set_pixel(band2, 1, 0, 1);
        rtn = rt_band_set_pixel(band2, 1, 1, 1);
 
-       nodata = rt_band_get_nodata(band2);
+       rt_band_get_nodata(band2, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        rtn = rt_raster_touches(
@@ -3175,7 +3176,7 @@ static void testTouches() {
        rtn = rt_band_set_pixel(band2, 2, 1, 1);
        rtn = rt_band_set_pixel(band2, 2, 2, 1);
 
-       nodata = rt_band_get_nodata(band2);
+       rt_band_get_nodata(band2, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        rtn = rt_raster_touches(
@@ -3399,7 +3400,7 @@ static void testContains() {
        rtn = rt_band_set_pixel(band1, 1, 0, 1);
        rtn = rt_band_set_pixel(band1, 1, 1, 1);
 
-       nodata = rt_band_get_nodata(band1);
+       rt_band_get_nodata(band1, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        rtn = rt_raster_contains(
@@ -3432,7 +3433,7 @@ static void testContains() {
        rtn = rt_band_set_pixel(band2, 1, 0, 1);
        rtn = rt_band_set_pixel(band2, 1, 1, 1);
 
-       nodata = rt_band_get_nodata(band2);
+       rt_band_get_nodata(band2, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        rtn = rt_raster_contains(
@@ -3698,7 +3699,7 @@ static void testContains() {
        rtn = rt_band_set_pixel(band2, 2, 1, 1);
        rtn = rt_band_set_pixel(band2, 2, 2, 1);
 
-       nodata = rt_band_get_nodata(band2);
+       rt_band_get_nodata(band2, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        rtn = rt_raster_contains(
@@ -3922,7 +3923,7 @@ static void testContainsProperly() {
        rtn = rt_band_set_pixel(band1, 1, 0, 1);
        rtn = rt_band_set_pixel(band1, 1, 1, 1);
 
-       nodata = rt_band_get_nodata(band1);
+       rt_band_get_nodata(band1, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        rtn = rt_raster_contains_properly(
@@ -3955,7 +3956,7 @@ static void testContainsProperly() {
        rtn = rt_band_set_pixel(band2, 1, 0, 1);
        rtn = rt_band_set_pixel(band2, 1, 1, 1);
 
-       nodata = rt_band_get_nodata(band2);
+       rt_band_get_nodata(band2, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        rtn = rt_raster_contains_properly(
@@ -4221,7 +4222,7 @@ static void testContainsProperly() {
        rtn = rt_band_set_pixel(band2, 2, 1, 1);
        rtn = rt_band_set_pixel(band2, 2, 2, 1);
 
-       nodata = rt_band_get_nodata(band2);
+       rt_band_get_nodata(band2, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        rtn = rt_raster_contains_properly(
@@ -4445,7 +4446,7 @@ static void testCovers() {
        rtn = rt_band_set_pixel(band1, 1, 0, 1);
        rtn = rt_band_set_pixel(band1, 1, 1, 1);
 
-       nodata = rt_band_get_nodata(band1);
+       rt_band_get_nodata(band1, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        rtn = rt_raster_covers(
@@ -4478,7 +4479,7 @@ static void testCovers() {
        rtn = rt_band_set_pixel(band2, 1, 0, 1);
        rtn = rt_band_set_pixel(band2, 1, 1, 1);
 
-       nodata = rt_band_get_nodata(band2);
+       rt_band_get_nodata(band2, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        rtn = rt_raster_covers(
@@ -4744,7 +4745,7 @@ static void testCovers() {
        rtn = rt_band_set_pixel(band2, 2, 1, 1);
        rtn = rt_band_set_pixel(band2, 2, 2, 1);
 
-       nodata = rt_band_get_nodata(band2);
+       rt_band_get_nodata(band2, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        rtn = rt_raster_covers(
@@ -4968,7 +4969,7 @@ static void testCoveredBy() {
        rtn = rt_band_set_pixel(band1, 1, 0, 1);
        rtn = rt_band_set_pixel(band1, 1, 1, 1);
 
-       nodata = rt_band_get_nodata(band1);
+       rt_band_get_nodata(band1, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        rtn = rt_raster_coveredby(
@@ -5001,7 +5002,7 @@ static void testCoveredBy() {
        rtn = rt_band_set_pixel(band2, 1, 0, 1);
        rtn = rt_band_set_pixel(band2, 1, 1, 1);
 
-       nodata = rt_band_get_nodata(band2);
+       rt_band_get_nodata(band2, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        rtn = rt_raster_coveredby(
@@ -5267,7 +5268,7 @@ static void testCoveredBy() {
        rtn = rt_band_set_pixel(band2, 2, 1, 1);
        rtn = rt_band_set_pixel(band2, 2, 2, 1);
 
-       nodata = rt_band_get_nodata(band2);
+       rt_band_get_nodata(band2, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        rtn = rt_raster_coveredby(
@@ -5491,7 +5492,7 @@ static void testDWithin() {
        rtn = rt_band_set_pixel(band1, 1, 0, 1);
        rtn = rt_band_set_pixel(band1, 1, 1, 1);
 
-       nodata = rt_band_get_nodata(band1);
+       rt_band_get_nodata(band1, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        rtn = rt_raster_within_distance(
@@ -5533,7 +5534,7 @@ static void testDWithin() {
        rtn = rt_band_set_pixel(band2, 1, 0, 1);
        rtn = rt_band_set_pixel(band2, 1, 1, 1);
 
-       nodata = rt_band_get_nodata(band2);
+       rt_band_get_nodata(band2, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        rtn = rt_raster_within_distance(
@@ -5774,7 +5775,7 @@ static void testDWithin() {
        rtn = rt_band_set_pixel(band2, 2, 1, 1);
        rtn = rt_band_set_pixel(band2, 2, 2, 1);
 
-       nodata = rt_band_get_nodata(band2);
+       rt_band_get_nodata(band2, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        rtn = rt_raster_within_distance(
@@ -6049,7 +6050,7 @@ static void testDFullyWithin() {
        rtn = rt_band_set_pixel(band1, 1, 0, 1);
        rtn = rt_band_set_pixel(band1, 1, 1, 1);
 
-       nodata = rt_band_get_nodata(band1);
+       rt_band_get_nodata(band1, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        rtn = rt_raster_fully_within_distance(
@@ -6091,7 +6092,7 @@ static void testDFullyWithin() {
        rtn = rt_band_set_pixel(band2, 1, 0, 1);
        rtn = rt_band_set_pixel(band2, 1, 1, 1);
 
-       nodata = rt_band_get_nodata(band2);
+       rt_band_get_nodata(band2, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        rtn = rt_raster_fully_within_distance(
@@ -6332,7 +6333,7 @@ static void testDFullyWithin() {
        rtn = rt_band_set_pixel(band2, 2, 1, 1);
        rtn = rt_band_set_pixel(band2, 2, 2, 1);
 
-       nodata = rt_band_get_nodata(band2);
+       rt_band_get_nodata(band2, &nodata);
        CHECK_EQUALS(nodata, 0);
 
        rtn = rt_raster_fully_within_distance(
index 16d100f069b18e09335f88f66e89738e0f2c087e..76bb7c0c3bfd42dffd332cb9090fb8822ca75169 100644 (file)
@@ -187,7 +187,8 @@ main()
         CHECK_EQUALS(rt_band_get_pixtype(band), PT_1BB);
         CHECK(!rt_band_is_offline(band));
         CHECK(rt_band_get_hasnodata_flag(band));
-        CHECK_EQUALS(rt_band_get_nodata(band), 0);
+                               rt_band_get_nodata(band, &val);
+        CHECK_EQUALS(val, 0);
         failure = rt_band_get_pixel(band, 0, 0, &val, NULL);
         CHECK(!failure);
         CHECK_EQUALS(val, 1);
@@ -252,7 +253,8 @@ main()
         CHECK_EQUALS(rt_band_get_pixtype(band), PT_8BSI);
         CHECK(!rt_band_is_offline(band));
         CHECK(rt_band_get_hasnodata_flag(band));
-        CHECK_EQUALS(rt_band_get_nodata(band), -1);
+                               rt_band_get_nodata(band, &val);
+        CHECK_EQUALS(val, -1);
 
         failure = rt_band_get_pixel(band, 0, 0, &val, NULL);
         CHECK(!failure);
@@ -350,7 +352,6 @@ main()
         CHECK_EQUALS(rt_band_get_pixtype(band), PT_16BSI);
         CHECK(!rt_band_is_offline(band));
         CHECK(!rt_band_get_hasnodata_flag(band));
-        CHECK_EQUALS(rt_band_get_nodata(band), -1);
 
         failure = rt_band_get_pixel(band, 0, 0, &val, NULL);
         CHECK(!failure);
@@ -435,7 +436,6 @@ main()
         CHECK_EQUALS(rt_band_get_pixtype(band), PT_16BSI);
         CHECK(!rt_band_is_offline(band));
         CHECK(!rt_band_get_hasnodata_flag(band));
-        CHECK_EQUALS(rt_band_get_nodata(band), -1);
 
         failure = rt_band_get_pixel(band, 0, 0, &val, NULL);
         CHECK(!failure);
@@ -510,12 +510,14 @@ main()
     CHECK_EQUALS(rt_raster_get_width(raster), 3);
     CHECK_EQUALS(rt_raster_get_height(raster), 2);
     {
+                               double val;
         rt_band band = rt_raster_get_band(raster, 0);
         CHECK(band);
         CHECK_EQUALS(rt_band_get_pixtype(band), PT_16BSI);
         CHECK(rt_band_is_offline(band));
         CHECK(rt_band_get_hasnodata_flag(band));
-        CHECK_EQUALS(rt_band_get_nodata(band), -1);
+                               rt_band_get_nodata(band, &val);
+        CHECK_EQUALS(val, -1);
         printf("ext band path: %s\n", rt_band_get_ext_path(band));
         printf("ext band  num: %u\n", rt_band_get_ext_band_num(band));
         CHECK( ! strcmp(rt_band_get_ext_path(band), "/tmp/t.tif"));
@@ -577,7 +579,8 @@ main()
         CHECK_EQUALS(rt_band_get_pixtype(band), PT_16BSI);
         CHECK(!rt_band_is_offline(band));
         CHECK(rt_band_get_hasnodata_flag(band));
-        CHECK_EQUALS(rt_band_get_nodata(band), 1);
+                               rt_band_get_nodata(band, &val);
+        CHECK_EQUALS(val, 1);
 
         failure = rt_band_get_pixel(band, 0, 0, &val, NULL);
         CHECK(!failure);
@@ -672,7 +675,8 @@ main()
         CHECK_EQUALS(rt_band_get_pixtype(band), PT_8BUI);
         CHECK(!rt_band_is_offline(band));
         CHECK(rt_band_get_hasnodata_flag(band));
-        CHECK_EQUALS(rt_band_get_nodata(band), 0);
+                               rt_band_get_nodata(band, &val);
+        CHECK_EQUALS(val, 0);
 
         failure = rt_band_get_pixel(band, 0, 0, &val, NULL);
         CHECK(!failure);
@@ -704,7 +708,8 @@ main()
         CHECK_EQUALS(rt_band_get_pixtype(band), PT_8BUI);
         CHECK(!rt_band_is_offline(band));
         CHECK(rt_band_get_hasnodata_flag(band));
-        CHECK_EQUALS(rt_band_get_nodata(band), 0);
+                               rt_band_get_nodata(band, &val);
+        CHECK_EQUALS(val, 0);
 
         failure = rt_band_get_pixel(band, 0, 0, &val, NULL);
         CHECK(!failure);
@@ -736,7 +741,8 @@ main()
         CHECK_EQUALS(rt_band_get_pixtype(band), PT_8BUI);
         CHECK(!rt_band_is_offline(band));
         CHECK(rt_band_get_hasnodata_flag(band));
-        CHECK_EQUALS(rt_band_get_nodata(band), 0);
+                               rt_band_get_nodata(band, &val);
+        CHECK_EQUALS(val, 0);
 
         failure = rt_band_get_pixel(band, 0, 0, &val, NULL);
         CHECK(!failure);
index 8f0eec9218c0e8b544d519f49cf7bc22f85e60ae..5dbb56fd14c85aaec81f4958b83e85e0e82cc3f0 100644 (file)
@@ -1,7 +1,5 @@
 NOTICE:  Band's isnodata flag is TRUE. Returning NODATA value
 NOTICE:  Band's isnodata flag is TRUE. Returning NODATA value
-NOTICE:  Band's isnodata flag is TRUE. Returning NODATA value
-NOTICE:  Band's isnodata flag is TRUE. Returning NODATA value
 NOTICE:  Attempting to get pixel value with out of range raster coordinates: (-2, -2)
 NOTICE:  Attempting to get pixel value with out of range raster coordinates: (-2, -2)
 NOTICE:  Attempting to get pixel value with out of range raster coordinates: (-2, -2)
@@ -9,5 +7,6 @@ NOTICE:  Attempting to get pixel value with out of range raster coordinates: (-2
 NOTICE:  Band's isnodata flag is TRUE. Returning NODATA value
 NOTICE:  Raster do not have a nodata value defined. Set band nodata value first. Nodata value not set. Returning original raster
 NOTICE:  Raster do not have a nodata value defined. Set band nodata value first. Nodata value not set. Returning original raster
+NOTICE:  Setting isnodata to FALSE as band no longer has NODATA
 NOTICE:  Raster do not have a nodata value defined. Set band nodata value first. Nodata value not set. Returning original raster
 NOTICE:  Raster do not have a nodata value defined. Set band nodata value first. Nodata value not set. Returning original raster