PG_RETURN_NULL();
}
numBands = rt_raster_get_num_bands(raster);
- POSTGIS_RT_DEBUGF(3, "RASTER_reclass: %d possible bands to be reclassified", n);
+ POSTGIS_RT_DEBUGF(3, "RASTER_reclass: %d possible bands to be reclassified", numBands);
/* process set of reclassarg */
POSTGIS_RT_DEBUG(3, "RASTER_reclass: Processing Arg 1 (reclassargset)");
PG_RETURN_POINTER(pgrtn);
}
expr = text_to_cstring(exprtext);
- POSTGIS_RT_DEBUGF(5, "RASTER_reclass: expr (raw) %s", expr);
+ POSTGIS_RT_DEBUGF(4, "RASTER_reclass: expr (raw) %s", expr);
expr = rtpg_removespaces(expr);
- POSTGIS_RT_DEBUGF(5, "RASTER_reclass: expr (clean) %s", expr);
+ POSTGIS_RT_DEBUGF(4, "RASTER_reclass: expr (clean) %s", expr);
/* split string to its components */
/* comma (,) separating rangesets */
}
/* set of reclass expressions */
- POSTGIS_RT_DEBUGF(5, "RASTER_reclass: %d possible expressions", comma_n);
+ POSTGIS_RT_DEBUGF(4, "RASTER_reclass: %d possible expressions", comma_n);
exprset = palloc(comma_n * sizeof(rt_reclassexpr));
for (a = 0, j = 0; a < comma_n; a++) {
- POSTGIS_RT_DEBUGF(5, "RASTER_reclass: map %s", comma_set[a]);
+ POSTGIS_RT_DEBUGF(4, "RASTER_reclass: map %s", comma_set[a]);
/* colon (:) separating range "src" and "dst" */
colon_set = rtpg_strsplit(comma_set[a], ":", &colon_n);
exprset[j] = palloc(sizeof(struct rt_reclassexpr_t));
for (b = 0; b < colon_n; b++) {
- POSTGIS_RT_DEBUGF(5, "RASTER_reclass: range %s", colon_set[b]);
+ POSTGIS_RT_DEBUGF(4, "RASTER_reclass: range %s", colon_set[b]);
/* dash (-) separating "min" and "max" */
dash_set = rtpg_strsplit(colon_set[b], "-", &dash_n);
}
}
}
- POSTGIS_RT_DEBUGF(5, "RASTER_reclass: exc_val %d inc_val %d", exc_val, inc_val);
+ POSTGIS_RT_DEBUGF(4, "RASTER_reclass: exc_val %d inc_val %d", exc_val, inc_val);
/* remove interval flags */
dash_set[c] = rtpg_chartrim(dash_set[c], "()[]");
- POSTGIS_RT_DEBUGF(5, "RASTER_reclass: min/max (char) %s", dash_set[c]);
+ POSTGIS_RT_DEBUGF(4, "RASTER_reclass: min/max (char) %s", dash_set[c]);
/* value from string to double */
errno = 0;
SET_VARSIZE(pgrtn, pgrtn->size);
PG_RETURN_POINTER(pgrtn);
}
- POSTGIS_RT_DEBUGF(5, "RASTER_reclass: min/max (double) %f", val);
+ POSTGIS_RT_DEBUGF(4, "RASTER_reclass: min/max (double) %f", val);
/* strsplit removes dash (a.k.a. negative sign), compare now to restore */
- junk = strstr(colon_set[b], dash_set[c]);
+ if (c < 1)
+ junk = strstr(colon_set[b], dash_set[c]);
+ else
+ junk = rtpg_strrstr(colon_set[b], dash_set[c]);
+ POSTGIS_RT_DEBUGF(
+ 4,
+ "(colon_set[%d], dash_set[%d], junk) = (%s, %s, %s)",
+ b, c, colon_set[b], dash_set[c], junk
+ );
/* not beginning of string */
if (junk != colon_set[b]) {
/* prior is a dash */
}
}
}
- POSTGIS_RT_DEBUGF(5, "RASTER_reclass: min/max (double) %f", val);
+ POSTGIS_RT_DEBUGF(4, "RASTER_reclass: min/max (double) %f", val);
/* src */
if (b < 1) {
ROW(2, '-10000--100]:50-1,(-100-1000]:150-50,(1000-10000]:254-150', '8BUI', 0)
) AS rast
) AS t;
+
+-- ticket #2555
+SELECT
+ ST_Value(rast, 1, 2, 2),
+ ST_Value(rast, 1, 3, 3),
+ ST_Value(rast, 1, 4, 4)
+FROM (
+ SELECT ST_Reclass(
+ ST_SetValues(
+ ST_AddBand(
+ ST_MakeEmptyRaster(5, 5, 10, 10, 2, 2, 0, 0, 0),
+ 1, '32BF', 1, -9999
+ ),
+ 1, 1, 1,
+ ARRAY[
+ [1, 1, 1, 1, 1],
+ [1, 9000, 1, 1, 1],
+ [1, 1, -9000, 1, 1],
+ [1, 1, 1, 9000, 1],
+ [1, 1, 1, 1, 1]
+ ]::double precision[]
+ ),
+
+ 1, '[-9000-9000]:[-900-900]', '32BF'
+ ) AS rast
+) AS t;