PostGIS  3.4.0dev-r@@SVN_REVISION@@

◆ ptarray_to_wkt_sb()

static void ptarray_to_wkt_sb ( const POINTARRAY ptarray,
stringbuffer_t sb,
int  precision,
uint8_t  variant 
)
static

Definition at line 97 of file lwout_wkt.c.

98 {
99  /* OGC only includes X/Y */
100  uint32_t dimensions = 2;
101 
102  /* ISO and extended formats include all dimensions */
103  if ( variant & ( WKT_ISO | WKT_EXTENDED ) )
104  dimensions = FLAGS_NDIMS(ptarray->flags);
105 
106  stringbuffer_makeroom(sb, 2 + ((OUT_MAX_BYTES_DOUBLE + 1) * dimensions * ptarray->npoints));
107  /* Opening paren? */
108  if ( ! (variant & WKT_NO_PARENS) )
109  stringbuffer_append_len(sb, "(", 1);
110 
111  /* Digits and commas */
112  if (ptarray->npoints)
113  {
114  uint32_t i = 0;
115 
116  double *dbl_ptr = (double *)getPoint_internal(ptarray, i);
117  coordinate_to_wkt_sb(dbl_ptr, sb, dimensions, precision);
118 
119  for (i = 1; i < ptarray->npoints; i++)
120  {
121  stringbuffer_append_len(sb, ",", 1);
122  dbl_ptr = (double *)getPoint_internal(ptarray, i);
123  coordinate_to_wkt_sb(dbl_ptr, sb, dimensions, precision);
124  }
125  }
126 
127  /* Closing paren? */
128  if ( ! (variant & WKT_NO_PARENS) )
129  stringbuffer_append_len(sb, ")", 1);
130 }
static uint8_t variant
Definition: cu_in_twkb.c:26
static uint8_t precision
Definition: cu_in_twkb.c:25
#define WKT_EXTENDED
Definition: liblwgeom.h:2186
#define FLAGS_NDIMS(flags)
Definition: liblwgeom.h:179
#define WKT_ISO
Definition: liblwgeom.h:2184
#define WKT_NO_PARENS
#define OUT_MAX_BYTES_DOUBLE
static uint8_t * getPoint_internal(const POINTARRAY *pa, uint32_t n)
Definition: lwinline.h:77
static void coordinate_to_wkt_sb(double *coords, stringbuffer_t *sb, uint32_t dimensions, int precision)
Definition: lwout_wkt.c:80
static void stringbuffer_append_len(stringbuffer_t *s, const char *a, size_t alen)
Append the specified string to the stringbuffer_t using known length.
Definition: stringbuffer.h:93
static void stringbuffer_makeroom(stringbuffer_t *s, size_t size_to_add)
If necessary, expand the stringbuffer_t internal buffer to accommodate the specified additional size.
Definition: stringbuffer.h:71
lwflags_t flags
Definition: liblwgeom.h:431
uint32_t npoints
Definition: liblwgeom.h:427

References coordinate_to_wkt_sb(), POINTARRAY::flags, FLAGS_NDIMS, getPoint_internal(), POINTARRAY::npoints, OUT_MAX_BYTES_DOUBLE, precision, stringbuffer_append_len(), stringbuffer_makeroom(), variant, WKT_EXTENDED, WKT_ISO, and WKT_NO_PARENS.

Referenced by lwcircstring_to_wkt_sb(), lwline_to_wkt_sb(), lwpoint_to_wkt_sb(), lwpoly_to_wkt_sb(), and lwtriangle_to_wkt_sb().

Here is the call graph for this function:
Here is the caller graph for this function: