Construct an rt_raster from a binary WKB representation.
281 uint16_t version = 0;
289 rterror(
"rt_raster_from_wkb: wkb size (%d) < min size (%d)",
293 wkbend = wkb + wkbsize;
295 RASTER_DEBUGF(3,
"Parsing header from wkb position %d (expected 0)",
296 d_binptr_to_pos(ptr, wkbend, wkbsize));
307 rterror(
"rt_raster_from_wkb: WKB version %d unsupported", version);
314 rterror(
"rt_raster_from_wkb: Out of memory allocating raster for wkb input");
330 assert(ptr <= wkbend);
344 RASTER_DEBUGF(3,
"Parsing raster header finished at wkb position %d (expected 61)",
345 d_binptr_to_pos(ptr, wkbend, wkbsize));
350 if (!
rast->numBands) {
353 rtwarn(
"%d bytes of WKB remained unparsed", wkbend - ptr);
355 else if (ptr > wkbend) {
357 rtwarn(
"We parsed %d bytes more then available!", ptr - wkbend);
367 rterror(
"rt_raster_from_wkb: Out of memory allocating bands for WKB raster decoding");
374 assert(ptr <= wkbend);
376 for (i = 0; i <
rast->numBands; ++i) {
378 d_binptr_to_pos(ptr, wkbend, wkbsize));
381 &ptr, wkbend, endian);
383 rterror(
"rt_raster_from_wkb: Error reading WKB form of band %d", i);
395 rtwarn(
"%d bytes of WKB remained unparsed", wkbend - ptr);
397 else if (ptr > wkbend) {
399 rtwarn(
"We parsed %d bytes more then available!", ptr - wkbend);
int clamp_srid(int srid)
Return a valid SRID from an arbitrary integer Raises a notice if what comes out is different from wha...
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 rt_raster_destroy(rt_raster raster)
Release memory associated to a raster.
void rtwarn(const char *fmt,...)
void rt_band_destroy(rt_band band)
Destroy a raster band.
struct rt_raster_t * rt_raster
Types definitions.
double read_float64(const uint8_t **from, uint8_t littleEndian)
int32_t read_int32(const uint8_t **from, uint8_t littleEndian)
uint16_t read_uint16(const uint8_t **from, uint8_t littleEndian)
#define CHECK_BINPTR_POSITION(ptr, end, size, pos)
static rt_band rt_band_from_wkb(uint16_t width, uint16_t height, const uint8_t **ptr, const uint8_t *end, uint8_t littleEndian)