PostGIS  2.1.10dev-r@@SVN_REVISION@@
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.

width: number of pixel columns
height: number of pixel rows
pixtype: pixel type for the band
hasnodata: indicates if the band has nodata value
nodataval: the nodata value, will be appropriately truncated to fit the pixtype size.
data: pointer to actual band data, required to be aligned accordingly to rt_pixtype_aligment(pixtype) and big enough to hold raster width*height values. Data will NOT be copied, ownership is left to caller which is responsible to keep it allocated for the whole lifetime of the returned rt_band.
an rt_band, or 0 on failure

Definition at line 1466 of file rt_api.c.

References ovdump::band, ovdump::data, rt_band_t::data, ES_NONE, FALSE, rt_band_t::hasnodata, rt_band_t::height, rt_band_t::isnodata, rt_band_t::mem, rt_band_t::nodataval, rt_band_t::offline, rt_band_t::ownsdata, rt_band_t::pixtype, rt_band_t::raster, RASTER_DEBUGF, rt_band_destroy(), rt_band_set_nodata(), rt_pixtype_name(), rtalloc(), rterror(), and rt_band_t::width.

Referenced by cu_add_band(), rt_band_duplicate(), rt_band_reclass(), rt_raster_gdal_rasterize(), rt_raster_generate_new_band(), test_band_metadata(), test_band_pixtype_16BSI(), test_band_pixtype_16BUI(), test_band_pixtype_1BB(), test_band_pixtype_2BUI(), test_band_pixtype_32BF(), test_band_pixtype_32BSI(), test_band_pixtype_32BUI(), test_band_pixtype_4BUI(), test_band_pixtype_64BF(), test_band_pixtype_8BSI(), test_band_pixtype_8BUI(), and test_raster_replace_band().

1471  {
1472  rt_band band = NULL;
1474  assert(NULL != data);
1476  band = rtalloc(sizeof(struct rt_band_t));
1477  if (band == NULL) {
1478  rterror("rt_band_new_inline: Out of memory allocating rt_band");
1479  return NULL;
1480  }
1482  RASTER_DEBUGF(3, "Created rt_band @ %p with pixtype %s", band, rt_pixtype_name(pixtype));
1484  band->pixtype = pixtype;
1485  band->offline = 0;
1486  band->width = width;
1487  band->height = height;
1488  band->hasnodata = hasnodata ? 1 : 0;
1489  band->isnodata = FALSE; /* we don't know what is in data, so must be FALSE */
1490  band->nodataval = 0;
1491  band->data.mem = data;
1492  band->ownsdata = 0; /* we do NOT own this data!!! */
1493  band->raster = NULL;
1495  RASTER_DEBUGF(3, "Created rt_band with dimensions %d x %d", band->width, band->height);
1497  /* properly set nodataval as it may need to be constrained to the data type */
1498  if (hasnodata && rt_band_set_nodata(band, nodataval, NULL) != ES_NONE) {
1499  rterror("rt_band_new_inline: Could not set NODATA value");
1500  rt_band_destroy(band);
1501  return NULL;
1502  }
1504  return band;
1505 }
tuple data
rt_errorstate rt_band_set_nodata(rt_band band, double val, int *converted)
Set nodata value.
Definition: rt_api.c:2061
const char * rt_pixtype_name(rt_pixtype pixtype)
Definition: rt_api.c:1168
rt_raster raster
Definition: rt_api.h:2249
rt_pixtype pixtype
Definition: rt_api.h:2239
tuple band
uint16_t height
Definition: rt_api.h:2242
#define RASTER_DEBUGF(level, msg,...)
Definition: rt_api.h:285
int8_t ownsdata
Definition: rt_api.h:2247
double nodataval
Definition: rt_api.h:2246
uint16_t width
Definition: rt_api.h:2241
void rt_band_destroy(rt_band band)
Destroy a raster band.
Definition: rt_api.c:1650
union rt_band_t::@14 data
void * rtalloc(size_t size)
Raster core memory management functions.
Definition: rt_api.c:867
void rterror(const char *fmt,...)
Raster core error and info handlers.
Definition: rt_api.c:895
int32_t offline
Definition: rt_api.h:2240
int32_t isnodata
Definition: rt_api.h:2244
#define FALSE
Definition: dbfopen.c:169
void * mem
Definition: rt_api.h:2252
int32_t hasnodata
Definition: rt_api.h:2243

Here is the call graph for this function:

Here is the caller graph for this function: