131{
132 int size;
135 char *ptr, *output;
136 size_t prefixlen = strlen(prefix);
137 int dimension = 2;
138
139 if ( ! bbox )
140 {
141 size = ( sizeof("<Envelope>/") + (prefixlen*2) ) * 2;
142 if ( srs ) size += strlen(srs) + sizeof(" srsName=..");
143
145
146 ptr += sprintf(ptr, "<%sEnvelope", prefix);
147 if ( srs ) ptr += sprintf(ptr, " srsName=\"%s\"", srs);
148
149 ptr += sprintf(ptr, "/>");
150
151 return output;
152 }
153
155
157
162
164 size += ( sizeof("<Envelope><lowerCorner><upperCorner>//") + (prefixlen*3) ) * 2;
165 if ( srs ) size += strlen(srs) + sizeof(" srsName=..");
166 if (
IS_DIMS(opts) ) size +=
sizeof(
" srsDimension=. .");
167
169
170 ptr += sprintf(ptr, "<%sEnvelope", prefix);
171 if ( srs ) ptr += sprintf(ptr, " srsName=\"%s\"", srs);
172 if (
IS_DIMS(opts) ) ptr += sprintf(ptr,
" srsDimension=\"%d\"", dimension);
173 ptr += sprintf(ptr, ">");
174
175 ptr += sprintf(ptr, "<%slowerCorner>", prefix);
177 ptr += sprintf(ptr, "</%slowerCorner>", prefix);
178
184
185 ptr += sprintf(ptr, "<%supperCorner>", prefix);
187 ptr += sprintf(ptr, "</%supperCorner>", prefix);
188
189 ptr += sprintf(ptr, "</%sEnvelope>", prefix);
190
192
193 return output;
194}
int ptarray_remove_point(POINTARRAY *pa, uint32_t where)
Remove a point from an existing POINTARRAY.
POINTARRAY * ptarray_construct_empty(char hasz, char hasm, uint32_t maxpoints)
Create a new POINTARRAY with no points.
#define FLAGS_GET_Z(flags)
void * lwalloc(size_t size)
void ptarray_free(POINTARRAY *pa)
int ptarray_append_point(POINTARRAY *pa, const POINT4D *pt, int allow_duplicates)
Append a point to the end of an existing POINTARRAY If allow_duplicate is LW_FALSE,...
#define LW_TRUE
Return types for functions with status returns.
static size_t pointArray_toGML3(POINTARRAY *pa, char *buf, int precision, int opts)
static size_t pointArray_GMLsize(POINTARRAY *pa, int precision)