682 {
683 uint8_t *wkb = NULL;
684 char* hexwkb = NULL;
685 uint32_t wkbsize = 0;
686
687 assert(NULL != raster);
688 assert(NULL != hexwkbsize);
689
690 RASTER_DEBUG(2,
"rt_raster_to_hexwkb: calling rt_raster_to_wkb");
691
693
694 RASTER_DEBUG(3,
"rt_raster_to_hexwkb: rt_raster_to_wkb returned");
695
696 *hexwkbsize = wkbsize * 2;
697 hexwkb = (
char*)
rtalloc((*hexwkbsize) + 1);
698 if (!hexwkb) {
699 rterror(
"rt_raster_to_hexwkb: Out of memory hexifying raster WKB");
701 return NULL;
702 }
703
704 char *optr = hexwkb;
705 uint8_t *iptr = wkb;
706 const char hexchar[]="0123456789ABCDEF";
707 while (wkbsize--) {
708 uint8_t v = *iptr++;
709 *optr++ = hexchar[v>>4];
710 *optr++ = hexchar[v & 0x0F];
711 }
712 *optr = '\0';
713
715
716 RASTER_DEBUGF(3,
"rt_raster_to_hexwkb: output wkb: %s", hexwkb);
717 return hexwkb;
718}
void rterror(const char *fmt,...) __attribute__((format(printf
Wrappers used for reporting errors and info.
void * rtalloc(size_t size)
Wrappers used for managing memory.
#define RASTER_DEBUG(level, msg)
#define RASTER_DEBUGF(level, msg,...)
void rtdealloc(void *mem)
uint8_t * rt_raster_to_wkb(rt_raster raster, int outasin, uint32_t *wkbsize)
Return this raster in WKB form.