}
}
+ /* no NODATA, exclude is FALSE */
+ if (!band->hasnodata)
+ exclude_nodata_value = FALSE;
+
/* determine the maximum distance to prevent an infinite loop */
if (!distance) {
int a, b;
assert(NULL != band);
assert(NULL != pixels);
+ if (!band->hasnodata)
+ exclude_nodata_value = FALSE;
+
for (x = 0; x < band->width; x++) {
for (y = 0; y < band->height; y++) {
err = rt_band_get_pixel(band, x, y, &pixval);
if (exclude_nodata_value) {
iBandHasNodataValue = rt_band_get_hasnodata_flag(band);
- if (iBandHasNodataValue) dBandNoData = rt_band_get_nodata(band);
+ if (iBandHasNodataValue)
+ dBandNoData = rt_band_get_nodata(band);
+ else
+ exclude_nodata_value = FALSE;
}
/*****************************************************
}
hasnodata = rt_band_get_hasnodata_flag(band);
- if (hasnodata)
+ if (hasnodata) {
nodataval = rt_band_get_nodata(band);
+ POSTGIS_RT_DEBUGF(4, "(hasnodata, nodataval) = (%d, %f)", hasnodata, nodataval);
+ }
+ else
+ exclude_nodata_value = FALSE;
}
while (0);
}
SRF_RETURN_DONE(funcctx);
}
pix[pixcount].geom = (LWGEOM *) poly;
+ /*
POSTGIS_RT_DEBUGF(4, "poly @ %p", poly);
POSTGIS_RT_DEBUGF(4, "geom @ %p", pix[pixcount].geom);
+ */
/* x, y */
pix[pixcount].x = x;
}
if (
- !exclude_nodata_value || (
+ !exclude_nodata_value ||
+ !hasnodata || (
exclude_nodata_value &&
(hasnodata != FALSE) && (
FLT_NEQ(pix[pixcount].value, nodataval) &&
) {
pix[pixcount].nodata = 0;
}
- else
+ else {
pix[pixcount].nodata = 1;
+ }
}
- else
+ else {
pix[pixcount].nodata = 1;
+ }
pixcount++;
}
/* value at point, return value */
if (
- !exclude_nodata_value || (
+ !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)) &&
/* add pixel to neighborhood */
if (
- !exclude_nodata_value || (
+ !exclude_nodata_value ||
+ !rt_band_get_hasnodata_flag(band) || (
exclude_nodata_value &&
(rt_band_get_hasnodata_flag(band) != FALSE) && (
FLT_NEQ(pixval, rt_band_get_nodata(band)) &&