Get values of multiple pixels.
Unlike rt_band_get_pixel, values in vals are of the band's pixel type so cannot be assumed to be double. Function uses memcpy.
It is important to be careful when using this function as the number of values being fetched may exceed a pixel "row". Remember that the band values are stored in a stream (1-D array) regardless of what the raster's width and height might be. So, getting a number of values may cross multiple pixel "rows".
- Parameters
-
| band | : the band to get pixel value from |
| x | : pixel column (0-based) |
| y | : pixel row (0-based) |
| len | : the number of pixels to get |
| **vals | : the pixel values |
| *nvals | : the number of pixel values being returned |
- Returns
- ES_NONE on success, ES_ERROR on error
Definition at line 1137 of file rt_band.c.
1143 uint8_t *_vals = NULL;
1145 uint8_t *
data = NULL;
1146 uint32_t offset = 0;
1147 uint16_t _nvals = 0;
1149 uint8_t *ptr = NULL;
1151 assert(NULL !=
band);
1152 assert(vals != NULL && nvals != NULL);
1158 x < 0 || x >=
band->width ||
1159 y < 0 || y >=
band->height
1161 rtwarn(
"Attempting to get pixel values with out of range raster coordinates: (%d, %d)",
x,
y);
1170 rterror(
"rt_band_get_pixel_line: Cannot get band data");
1175 offset =
x + (
y *
band->width);
1183 maxlen =
band->width *
band->height;
1185 if (((
int) (offset + _nvals)) > maxlen) {
1186 _nvals = maxlen - offset;
1187 rtwarn(
"Limiting returning number values to %d", _nvals);
1191 ptr =
data + (offset * pixsize);
1193 _vals =
rtalloc(_nvals * pixsize);
1194 if (_vals == NULL) {
1195 rterror(
"rt_band_get_pixel_line: Could not allocate memory for pixel values");
1200 memcpy(_vals, ptr, _nvals * pixsize);
void rterror(const char *fmt,...)
Wrappers used for reporting errors and info.
void * rtalloc(size_t size)
Wrappers used for managing memory.
#define RASTER_DEBUGF(level, msg,...)
void rtwarn(const char *fmt,...)
int rt_pixtype_size(rt_pixtype pixtype)
Return size in bytes of a value in the given pixtype.
void * rt_band_get_data(rt_band band)
Get pointer to raster band data.
References ovdump::band, ovdump::data, ES_ERROR, ES_NONE, RASTER_DEBUGF, rt_band_get_data(), rt_pixtype_size(), rtalloc(), rterror(), rtwarn(), pixval::x, and pixval::y.
Referenced by RASTER_tile(), RASTER_union_transfn(), and test_band_get_pixel_line().