return NULL;
}
- ptr = values;
- for (iY = 0; iY < nYValid; iY++) {
+ /* if block width is same as raster width, shortcut */
+ if (nXBlocks == 1 && nYBlockSize > 1 && nXValid == width) {
+ x = 0;
+ y = nYBlockSize * iYBlock;
+
+ RASTER_DEBUGF(4, "Setting set of pixel lines at (%d, %d) for %d pixels", x, y, nXValid * nYValid);
+ rt_band_set_pixel_line(band, x, y, values, nXValid * nYValid);
+ }
+ else {
+ ptr = values;
x = nXBlockSize * iXBlock;
- y = iY + (nYBlockSize * iYBlock);
+ for (iY = 0; iY < nYValid; iY++) {
+ y = iY + (nYBlockSize * iYBlock);
- RASTER_DEBUGF(4, "Setting pixel line at (%d, %d) for %d pixels", x, y, nXValid);
- rt_band_set_pixel_line(band, x, y, ptr, nXValid);
- ptr += (nXValid * ptlen);
+ RASTER_DEBUGF(4, "Setting pixel line at (%d, %d) for %d pixels", x, y, nXValid);
+ rt_band_set_pixel_line(band, x, y, ptr, nXValid);
+ ptr += (nXValid * ptlen);
+ }
}
}
}
rt_raster raster;
rt_raster rast;
rt_band band;
+ const uint32_t xmax = 100;
+ const uint32_t ymax = 100;
uint32_t x;
- uint32_t xmax = 100;
uint32_t y;
- uint32_t ymax = 100;
+ double values[xmax][ymax];
int rtn = 0;
double value;
for (x = 0; x < xmax; x++) {
for (y = 0; y < ymax; y++) {
- rtn = rt_band_set_pixel(band, x, y, (((double) x * y) + (x + y) + (x + y * x)) / (x + y + 1));
+ values[x][y] = (((double) x * y) + (x + y) + (x + y * x)) / (x + y + 1);
+ rtn = rt_band_set_pixel(band, x, y, values[x][y]);
CHECK((rtn != -1));
}
}
band = rt_raster_get_band(rast, 0);
CHECK(band);
- rtn = rt_band_get_pixel(band, 0, 3, &value);
- CHECK((rtn != -1));
- CHECK(FLT_EQ(value, 0.75));
-
- rtn = rt_band_get_pixel(band, 99, 0, &value);
- CHECK((rtn != -1));
- CHECK(FLT_EQ(value, 1.98));
-
- rtn = rt_band_get_pixel(band, 95, 4, &value);
- CHECK((rtn != -1));
- CHECK(FLT_EQ(value, 9.54));
+ for (x = 0; x < xmax; x++) {
+ for (y = 0; y < ymax; y++) {
+ rtn = rt_band_get_pixel(band, x, y, &value);
+ CHECK((rtn != -1));
+ CHECK(FLT_EQ(value, values[x][y]));
+ }
+ }
GDALClose(gdds);
GDALDeregisterDriver(gddrv);