855{
856 char *ptr=output;
857 int dimension=2;
859
861
862 if ( shortline )
863 {
864 ptr += sprintf(ptr, "<%sLineString", prefix);
865 }
866 else
867 {
868 ptr += sprintf(ptr, "<%sCurve", prefix);
869 }
870
871 if (srs) ptr += sprintf(ptr, " srsName=\"%s\"", srs);
872 if (id) ptr += sprintf(ptr, " %sid=\"%s\"", prefix, id);
873
875 {
876 ptr += sprintf(ptr, "/>");
877 return (ptr-output);
878 }
879 ptr += sprintf(ptr, ">");
880
881 if ( ! shortline )
882 {
883 ptr += sprintf(ptr, "<%ssegments>", prefix);
884 ptr += sprintf(ptr, "<%sLineStringSegment>", prefix);
885 }
886
888 {
889 ptr += sprintf(ptr, "<%sposList srsDimension=\"%d\">",
890 prefix, dimension);
891 }
892 else
893 {
894 ptr += sprintf(ptr, "<%sposList>", prefix);
895 }
896
898
899 ptr += sprintf(ptr, "</%sposList>", prefix);
900
901 if ( shortline )
902 {
903 ptr += sprintf(ptr, "</%sLineString>", prefix);
904 }
905 else
906 {
907 ptr += sprintf(ptr, "</%sLineStringSegment>", prefix);
908 ptr += sprintf(ptr, "</%ssegments>", prefix);
909 ptr += sprintf(ptr, "</%sCurve>", prefix);
910 }
911
912 return (ptr-output);
913}
#define LW_GML_SHORTLINE
For GML3, use <LineString> rather than <Curve> for lines.
#define FLAGS_GET_Z(flags)
int lwline_is_empty(const LWLINE *line)
static size_t pointArray_toGML3(POINTARRAY *pa, char *buf, int precision, int opts)