Generate a new inline band and add it to a raster.
Memory is allocated in this function for band data.
502 int32_t checkvalint = 0;
503 uint32_t checkvaluint = 0;
504 double checkvaldouble = 0;
505 float checkvalfloat = 0;
515 else if (index > oldnumbands + 1)
516 index = oldnumbands + 1;
521 numval = width * height;
524 mem = (
int *)
rtalloc(datasize);
526 rterror(
"rt_raster_generate_new_band: Could not allocate memory for band");
530 if (
FLT_EQ(initialvalue, 0.0))
531 memset(mem, 0, datasize);
539 for (i = 0; i < numval; i++)
540 ptr[i] = clamped_initval;
541 checkvalint = ptr[0];
548 for (i = 0; i < numval; i++)
549 ptr[i] = clamped_initval;
550 checkvalint = ptr[0];
557 for (i = 0; i < numval; i++)
558 ptr[i] = clamped_initval;
559 checkvalint = ptr[0];
566 for (i = 0; i < numval; i++)
567 ptr[i] = clamped_initval;
568 checkvalint = ptr[0];
575 for (i = 0; i < numval; i++)
576 ptr[i] = clamped_initval;
577 checkvalint = ptr[0];
584 for (i = 0; i < numval; i++)
585 ptr[i] = clamped_initval;
586 checkvalint = ptr[0];
593 for (i = 0; i < numval; i++)
594 ptr[i] = clamped_initval;
595 checkvalint = ptr[0];
602 for (i = 0; i < numval; i++)
603 ptr[i] = clamped_initval;
604 checkvalint = ptr[0];
611 for (i = 0; i < numval; i++)
612 ptr[i] = clamped_initval;
613 checkvaluint = ptr[0];
620 for (i = 0; i < numval; i++)
621 ptr[i] = clamped_initval;
622 checkvalfloat = ptr[0];
628 for (i = 0; i < numval; i++)
629 ptr[i] = initialvalue;
630 checkvaldouble = ptr[0];
635 rterror(
"rt_raster_generate_new_band: Unknown pixeltype %d", pixtype);
645 checkvalint, checkvaluint,
646 checkvalfloat, checkvaldouble,
652 rterror(
"rt_raster_generate_new_band: Could not add band to raster. Aborting");
659 if (numbands == oldnumbands || index == -1) {
660 rterror(
"rt_raster_generate_new_band: Could not add band to raster. Aborting");
665 if (hasnodata &&
FLT_EQ(initialvalue, nodatavalue))
rt_band rt_band_new_inline(uint16_t width, uint16_t height, rt_pixtype pixtype, uint32_t hasnodata, double nodataval, uint8_t *data)
Create an in-db rt_band with no data.
void rt_band_set_ownsdata_flag(rt_band band, int flag)
void rterror(const char *fmt,...)
Wrappers used for reporting errors and info.
void * rtalloc(size_t size)
Wrappers used for managing memory.
rt_errorstate rt_band_set_isnodata_flag(rt_band band, int flag)
Set isnodata flag value.
int8_t rt_util_clamp_to_8BSI(double value)
uint8_t rt_util_clamp_to_1BB(double value)
int32_t rt_util_clamp_to_32BSI(double value)
int rt_util_dbl_trunc_warning(double initialvalue, int32_t checkvalint, uint32_t checkvaluint, float checkvalfloat, double checkvaldouble, rt_pixtype pixtype)
uint8_t rt_util_clamp_to_2BUI(double value)
uint8_t rt_util_clamp_to_8BUI(double value)
void rt_band_destroy(rt_band band)
Destroy a raster band.
int16_t rt_util_clamp_to_16BSI(double value)
uint8_t rt_util_clamp_to_4BUI(double value)
void rtdealloc(void *mem)
uint16_t rt_util_clamp_to_16BUI(double value)
uint32_t rt_util_clamp_to_32BUI(double value)
float rt_util_clamp_to_32F(double value)
int rt_pixtype_size(rt_pixtype pixtype)
Return size in bytes of a value in the given pixtype.
raster
Be careful!! Zeros function's input parameter can be a (height x width) array, not (width x height): ...
int rt_raster_add_band(rt_raster raster, rt_band band, int index)
Add band data to a raster.
uint16_t rt_raster_get_num_bands(rt_raster raster)
uint16_t rt_raster_get_height(rt_raster raster)
uint16_t rt_raster_get_width(rt_raster raster)