693 {
694 uint8_t *wkb = NULL;
695 char* hexwkb = NULL;
696 uint32_t wkbsize = 0;
697
698 assert(NULL != raster);
699 assert(NULL != hexwkbsize);
700
701 RASTER_DEBUG(2,
"rt_raster_to_hexwkb: calling rt_raster_to_wkb");
702
704
705 RASTER_DEBUG(3,
"rt_raster_to_hexwkb: rt_raster_to_wkb returned");
706
707 *hexwkbsize = wkbsize * 2;
708 hexwkb = (
char*)
rtalloc((*hexwkbsize) + 1);
709 if (!hexwkb) {
710 rterror(
"rt_raster_to_hexwkb: Out of memory hexifying raster WKB");
712 return NULL;
713 }
714
715 char *optr = hexwkb;
716 uint8_t *iptr = wkb;
717 const char hexchar[]="0123456789ABCDEF";
718 while (wkbsize--) {
719 uint8_t v = *iptr++;
720 *optr++ = hexchar[v>>4];
721 *optr++ = hexchar[v & 0x0F];
722 }
723 *optr = '\0';
724
726
727 RASTER_DEBUGF(3,
"rt_raster_to_hexwkb: output wkb: %s", hexwkb);
728 return hexwkb;
729}
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.