PostGIS  3.7.0dev-r@@SVN_REVISION@@

◆ LWGEOM_asBinary()

Datum LWGEOM_asBinary ( PG_FUNCTION_ARGS  )

Definition at line 977 of file lwgeom_ogc.c.

978 {
979  GSERIALIZED *geom;
980  LWGEOM *lwgeom;
981  uint8_t variant = WKB_ISO;
982 
983  if (PG_ARGISNULL(0))
984  PG_RETURN_NULL();
985 
986  /* Get a 2D version of the geometry */
987  geom = PG_GETARG_GSERIALIZED_P(0);
988  lwgeom = lwgeom_from_gserialized(geom);
989 
990 
991  /* If user specified endianness, respect it */
992  if ( (PG_NARGS()>1) && (!PG_ARGISNULL(1)) )
993  {
994  text *wkb_endian = PG_GETARG_TEXT_P(1);
995 
996  if ( ! strncmp(VARDATA(wkb_endian), "xdr", 3) ||
997  ! strncmp(VARDATA(wkb_endian), "XDR", 3) )
998  {
999  variant = variant | WKB_XDR;
1000  }
1001  else
1002  {
1003  variant = variant | WKB_NDR;
1004  }
1005  }
1006 
1007  /* Write to WKB and free the geometry */
1008  PG_RETURN_BYTEA_P(lwgeom_to_wkb_varlena(lwgeom, variant));
1009 }
static uint8_t variant
Definition: cu_in_twkb.c:26
LWGEOM * lwgeom_from_gserialized(const GSERIALIZED *g)
Allocate a new LWGEOM from a GSERIALIZED.
Definition: gserialized.c:268
#define WKB_ISO
Definition: liblwgeom.h:2207
#define WKB_NDR
Definition: liblwgeom.h:2210
lwvarlena_t * lwgeom_to_wkb_varlena(const LWGEOM *geom, uint8_t variant)
Definition: lwout_wkb.c:851
#define WKB_XDR
Definition: liblwgeom.h:2211

References lwgeom_from_gserialized(), lwgeom_to_wkb_varlena(), variant, WKB_ISO, WKB_NDR, and WKB_XDR.

Here is the call graph for this function: