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

◆ pointArray_toGML3()

static size_t pointArray_toGML3 ( POINTARRAY pa,
char *  buf,
int  precision,
int  opts 
)
static

Definition at line 1889 of file lwout_gml.c.

1890{
1891 uint32_t i;
1892 char *ptr;
1895 char z[OUT_DOUBLE_BUFFER_SIZE];
1896
1897 ptr = output;
1898
1899 if ( ! FLAGS_GET_Z(pa->flags) )
1900 {
1901 for (i=0; i<pa->npoints; i++)
1902 {
1903 const POINT2D *pt;
1904 pt = getPoint2d_cp(pa, i);
1909
1910 if ( i ) ptr += sprintf(ptr, " ");
1911 if (IS_DEGREE(opts))
1912 ptr += sprintf(ptr, "%s %s", y, x);
1913 else
1914 ptr += sprintf(ptr, "%s %s", x, y);
1915 }
1916 }
1917 else
1918 {
1919 for (i=0; i<pa->npoints; i++)
1920 {
1921 const POINT3D *pt = getPoint3d_cp(pa, i);
1922
1929
1930 if ( i ) ptr += sprintf(ptr, " ");
1931 if (IS_DEGREE(opts))
1932 ptr += sprintf(ptr, "%s %s %s", y, x, z);
1933 else
1934 ptr += sprintf(ptr, "%s %s %s", x, y, z);
1935 }
1936 }
1937
1938 return ptr-output;
1939}
static uint8_t precision
Definition cu_in_twkb.c:25
#define FLAGS_GET_Z(flags)
Definition liblwgeom.h:179
#define IS_DEGREE(x)
Definition liblwgeom.h:1658
#define OUT_DOUBLE_BUFFER_SIZE
int lwprint_double(double d, int maxdd, char *buf, size_t bufsize)
Definition lwprint.c:492
static const POINT3D * getPoint3d_cp(const POINTARRAY *pa, uint32_t n)
Returns a POINT2D pointer into the POINTARRAY serialized_ptlist, suitable for reading from.
Definition lwinline.h:103
static const POINT2D * getPoint2d_cp(const POINTARRAY *pa, uint32_t n)
Returns a POINT2D pointer into the POINTARRAY serialized_ptlist, suitable for reading from.
Definition lwinline.h:91
double y
Definition liblwgeom.h:376
double x
Definition liblwgeom.h:376
double z
Definition liblwgeom.h:388
double x
Definition liblwgeom.h:388
double y
Definition liblwgeom.h:388
lwflags_t flags
Definition liblwgeom.h:417
uint32_t npoints
Definition liblwgeom.h:413

References POINTARRAY::flags, FLAGS_GET_Z, getPoint2d_cp(), getPoint3d_cp(), IS_DEGREE, lwprint_double(), POINTARRAY::npoints, OUT_DOUBLE_BUFFER_SIZE, precision, POINT2D::x, POINT3D::x, POINT2D::y, POINT3D::y, and POINT3D::z.

Referenced by asgml3_circstring_buf(), asgml3_compound_buf(), asgml3_curvepoly_buf(), asgml3_line_buf(), asgml3_point_buf(), asgml3_poly_buf(), asgml3_triangle_buf(), and gbox_to_gml3().

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