PostGIS 3.7.0dev-r@@SVN_REVISION@@
Loading...
Searching...
No Matches

◆ 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:2221
#define FLAGS_NDIMS(flags)
Definition liblwgeom.h:179
#define WKT_ISO
Definition liblwgeom.h:2219
#define WKT_NO_PARENS
#define OUT_MAX_BYTES_DOUBLE
static uint8_t * getPoint_internal(const POINTARRAY *pa, uint32_t n)
Definition lwinline.h:75
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.
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.
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: