30#include "../ows/ows.h"
44 fprintf(o->
output,
" <DCPType>\n");
45 fprintf(o->
output,
" <HTTP>\n");
46 fprintf(o->
output,
" <Get onlineResource=\"");
48 fprintf(o->
output,
" </HTTP>\n");
49 fprintf(o->
output,
" </DCPType>\n");
50 fprintf(o->
output,
" <DCPType>\n");
51 fprintf(o->
output,
" <HTTP>\n");
52 fprintf(o->
output,
" <Post onlineResource=\"");
54 fprintf(o->
output,
" </HTTP>\n");
55 fprintf(o->
output,
" </DCPType>\n");
68 fprintf(o->
output,
" <GMLObjectType>\n");
69 fprintf(o->
output,
" <Name>gml:%s</Name>\n", type);
70 fprintf(o->
output,
" <OutputFormats>\n");
71 fprintf(o->
output,
" <Format>text/xml; subtype=gml/2.1.2</Format>\n");
72 fprintf(o->
output,
" <Format>text/xml; subtype=gml/3.1.1</Format>\n");
73 fprintf(o->
output,
" </OutputFormats>\n");
74 fprintf(o->
output,
" </GMLObjectType>\n");
87 fprintf(o->
output,
" <SupportsGMLObjectTypeList>\n");
95 fprintf(o->
output,
" </SupportsGMLObjectTypeList>\n");
107 fprintf(o->
output,
" <Capability>\n");
108 fprintf(o->
output,
" <Request>\n");
109 fprintf(o->
output,
" <GetCapabilities>\n");
111 fprintf(o->
output,
" </GetCapabilities>\n");
112 fprintf(o->
output,
" <DescribeFeatureType>\n");
113 fprintf(o->
output,
" <SchemaDescriptionLanguage>\n");
114 fprintf(o->
output,
" <XMLSCHEMA/>\n");
115 fprintf(o->
output,
" </SchemaDescriptionLanguage>\n");
117 fprintf(o->
output,
" </DescribeFeatureType>\n");
118 fprintf(o->
output,
" <GetFeature>\n");
119 fprintf(o->
output,
"<ResultFormat>\n");
120 fprintf(o->
output,
"<GML2/>\n");
121 fprintf(o->
output,
"</ResultFormat>\n");
123 fprintf(o->
output,
" </GetFeature>\n");
124 fprintf(o->
output,
" <Transaction>\n");
126 fprintf(o->
output,
" </Transaction>\n");
127 fprintf(o->
output,
" </Request>\n");
128 fprintf(o->
output,
" </Capability>\n");
140 fprintf(o->
output,
" <ows:OperationsMetadata>\n");
141 fprintf(o->
output,
" <ows:Operation name='GetCapabilities'>\n");
143 fprintf(o->
output,
" <ows:Parameter name='AcceptVersions'>\n");
144 fprintf(o->
output,
" <ows:Value>1.1.0</ows:Value>\n");
145 fprintf(o->
output,
" <ows:Value>1.0.0</ows:Value>\n");
146 fprintf(o->
output,
" </ows:Parameter>\n");
147 fprintf(o->
output,
" <ows:Parameter name='AcceptFormats'>\n");
148 fprintf(o->
output,
" <ows:Value>text/xml</ows:Value>\n");
149 fprintf(o->
output,
" </ows:Parameter>\n");
150 fprintf(o->
output,
" <ows:Parameter name='Sections'>\n");
151 fprintf(o->
output,
" <ows:Value>ServiceIdentification</ows:Value>\n");
152 fprintf(o->
output,
" <ows:Value>ServiceProvider</ows:Value>\n");
153 fprintf(o->
output,
" <ows:Value>OperationsMetadata</ows:Value>\n");
154 fprintf(o->
output,
" <ows:Value>FeatureTypeList</ows:Value>\n");
155 fprintf(o->
output,
" <ows:Value>ServesGMLObjectTypeList</ows:Value>\n");
156 fprintf(o->
output,
" <ows:Value>SupportsGMLObjectTypeList</ows:Value>\n");
157 fprintf(o->
output,
" </ows:Parameter>\n");
158 fprintf(o->
output,
" </ows:Operation>\n");
159 fprintf(o->
output,
" <ows:Operation name='DescribeFeatureType'>\n");
161 fprintf(o->
output,
" <ows:Parameter name='outputFormat'>\n");
162 fprintf(o->
output,
" <ows:Value>text/xml; subtype=gml/3.1.1</ows:Value>\n");
163 fprintf(o->
output,
" <ows:Value>text/xml; subtype=gml/2.1.2</ows:Value>\n");
164 fprintf(o->
output,
" </ows:Parameter>\n");
165 fprintf(o->
output,
" </ows:Operation>\n");
166 fprintf(o->
output,
" <ows:Operation name='GetFeature'>\n");
168 fprintf(o->
output,
" <ows:Parameter name='resultType'>\n");
169 fprintf(o->
output,
" <ows:Value>results</ows:Value>\n");
170 fprintf(o->
output,
" <ows:Value>hits</ows:Value>\n");
171 fprintf(o->
output,
" </ows:Parameter>\n");
172 fprintf(o->
output,
" <ows:Parameter name='outputFormat'>\n");
173 fprintf(o->
output,
" <ows:Value>text/xml; subtype=gml/3.1.1</ows:Value>\n");
174 fprintf(o->
output,
" <ows:Value>text/xml; subtype=gml/2.1.2</ows:Value>\n");
175 fprintf(o->
output,
" <ows:Value>application/json</ows:Value>\n");
176 fprintf(o->
output,
" </ows:Parameter>\n");
177 fprintf(o->
output,
" </ows:Operation>\n");
178 fprintf(o->
output,
" <ows:Operation name='Transaction'>\n");
180 fprintf(o->
output,
" <ows:Parameter name='inputFormat'>\n");
181 fprintf(o->
output,
" <ows:Value>text/xml; subtype=gml/3.1.1</ows:Value>\n");
182 fprintf(o->
output,
" </ows:Parameter>\n");
183 fprintf(o->
output,
" <ows:Parameter name='idgen'>\n");
184 fprintf(o->
output,
" <ows:Value>GenerateNew</ows:Value>\n");
185 fprintf(o->
output,
" <ows:Value>UseExisting</ows:Value>\n");
186 fprintf(o->
output,
" </ows:Parameter>\n");
187 fprintf(o->
output,
" </ows:Operation>\n");
189 fprintf(o->
output,
" <ows:Constraint name='DefaultMaxFeatures'>\n");
191 fprintf(o->
output,
" </ows:Constraint>\n");
193 fprintf(o->
output,
" <ows:Constraint name='LocalTraverseXLinkScope'>\n");
194 fprintf(o->
output,
" <ows:Value>0</ows:Value>\n");
195 fprintf(o->
output,
" </ows:Constraint>\n");
196 fprintf(o->
output,
" <ows:Constraint name='RemoteTraverseXLinkScope'>\n");
197 fprintf(o->
output,
" <ows:Value>0</ows:Value>\n");
198 fprintf(o->
output,
" </ows:Constraint>\n");
199 fprintf(o->
output,
" </ows:OperationsMetadata>\n");
214 bool writable, retrievable;
221 fprintf(o->
output,
" <FeatureTypeList>\n");
227 fprintf(o->
output,
" <Operations>\n");
231 fprintf(o->
output,
" <Query/>\n");
233 fprintf(o->
output,
" <Operation>Query</Operation>\n");
240 fprintf(o->
output,
" <Insert/>\n");
241 fprintf(o->
output,
" <Update/>\n");
242 fprintf(o->
output,
" <Delete/>\n");
244 fprintf(o->
output,
" <Operation>Insert</Operation>\n");
245 fprintf(o->
output,
" <Operation>Update</Operation>\n");
246 fprintf(o->
output,
" <Operation>Delete</Operation>\n");
254 fprintf(o->
output,
" </Operations>\n");
260 fprintf(o->
output,
"<FeatureType xmlns:%s=\"%s\">\n",
267 fprintf(o->
output,
" <Name>");
269 fprintf(o->
output,
"</Name>\n");
276 fprintf(o->
output,
" <Title>");
278 fprintf(o->
output,
"</Title>\n");
285 fprintf(o->
output,
" <Abstract>");
287 fprintf(o->
output,
"</Abstract>\n");
294 fprintf(o->
output,
" <Keywords>");
301 fprintf(o->
output,
" <Keyword>");
303 fprintf(o->
output,
"</Keyword>");
307 fprintf(o->
output,
"</Keywords>\n");
320 if (srs && srs->
use) {
322 fprintf(o->
output,
" <SRS>");
324 fprintf(o->
output,
"</SRS>\n");
326 fprintf(o->
output,
" <DefaultSRS>urn:ogc:def:crs:EPSG::%s</DefaultSRS>\n", srid->
buf);
331 fprintf(o->
output,
" <OtherSRS>urn:ogc:def:crs:EPSG::%s</OtherSRS>\n", l_srid->
value->
buf);
338 fprintf(o->
output,
" <SRS></SRS>\n");
340 fprintf(o->
output,
" <NoSRS/>");
350 fprintf(o->
output,
" <Operations>\n");
354 fprintf(o->
output,
" <Query/>\n");
356 fprintf(o->
output,
" <Operation>Query</Operation>\n");
361 fprintf(o->
output,
" <Insert/>\n");
362 fprintf(o->
output,
" <Update/>\n");
363 fprintf(o->
output,
" <Delete/>\n");
365 fprintf(o->
output,
" <Operation>Insert</Operation>\n");
366 fprintf(o->
output,
" <Operation>Update</Operation>\n");
367 fprintf(o->
output,
" <Operation>Delete</Operation>\n");
371 fprintf(o->
output,
" </Operations>\n");
390 fprintf(o->
output,
" <LatLongBoundingBox");
392 fprintf(o->
output,
" <ows:WGS84BoundingBox>");
394 if (gb->
east != DBL_MIN) {
416 fprintf(o->
output,
" />\n");
418 fprintf(o->
output,
" <ows:LowerCorner>%.*f %.*f</ows:LowerCorner>",
420 fprintf(o->
output,
" <ows:UpperCorner>%.*f %.*f</ows:UpperCorner>",
425 fprintf(o->
output,
" minx='0' miny='0' maxx='0' maxy='0'/>\n");
427 fprintf(o->
output,
" <ows:LowerCorner>0 0</ows:LowerCorner>");
428 fprintf(o->
output,
" <ows:UpperCorner>0 0</ows:UpperCorner>");
433 fprintf(o->
output,
" </ows:WGS84BoundingBox>\n");
438 fprintf(o->
output,
"</FeatureType>\n");
442 fprintf(o->
output,
" </FeatureTypeList>\n");
457 fprintf(o->
output,
"Content-Type: text/xml\n\n");
459 fprintf(o->
output,
"Content-Type: application/xml\n\n");
462 fprintf(o->
output,
"<WFS_Capabilities");
463 fprintf(o->
output,
" version='1.1.0' updateSequence='0'\n");
464 fprintf(o->
output,
" xmlns='http://www.opengis.net/wfs'\n");
465 fprintf(o->
output,
" xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'\n");
466 fprintf(o->
output,
" xmlns:ogc='http://www.opengis.net/ogc'\n");
467 fprintf(o->
output,
" xmlns:gml='http://www.opengis.net/gml'\n");
468 fprintf(o->
output,
" xmlns:ows='http://www.opengis.net/ows'\n");
469 fprintf(o->
output,
" xmlns:xlink='http://www.w3.org/1999/xlink'\n");
470 fprintf(o->
output,
" xsi:schemaLocation='http://www.opengis.net/wfs\n");
471 fprintf(o->
output,
" http://schemas.opengis.net/wfs/1.1.0/wfs.xsd' >\n");
533 fprintf(o->
output,
"</WFS_Capabilities>\n");
548 fprintf(o->
output,
"Content-Type: application/xml\n\n");
550 fprintf(o->
output,
"<WFS_Capabilities\n");
551 fprintf(o->
output,
"version='1.0.0' updateSequence='0'\n");
552 fprintf(o->
output,
" xmlns='http://www.opengis.net/wfs'\n");
553 fprintf(o->
output,
" xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'\n");
554 fprintf(o->
output,
" xmlns:ogc='http://www.opengis.net/ogc'\n");
555 fprintf(o->
output,
" xsi:schemaLocation='http://www.opengis.net/wfs\n");
556 fprintf(o->
output,
" http://schemas.opengis.net/wfs/1.0.0/WFS-capabilities.xsd' >\n");
573 fprintf(o->
output,
"</WFS_Capabilities>\n");
ows_geobbox * ows_geobbox_compute(ows *o, buffer *layer_name)
int ows_version_get(ows_version *v)
void buffer_empty(buffer *buf)
void fe_filter_capabilities_110(const ows *o)
bool buffer_cmp(const buffer *buf, const char *str)
bool in_list(const list *l, const buffer *value)
bool ows_layer_list_writable(const ows_layer_list *ll)
void buffer_add_str(buffer *buf, const char *str)
void buffer_flush(buffer *buf, FILE *output)
bool buffer_case_cmp(const buffer *buf, const char *str)
void ows_service_metadata(const ows *o)
bool ows_layer_match_table(const ows *o, const buffer *name)
void ows_geobbox_free(ows_geobbox *g)
bool ows_layer_list_retrievable(const ows_layer_list *ll)
void buffer_free(buffer *buf)
buffer * ows_layer_uri_to_prefix(ows_layer_list *ll, buffer *layer_name)
void buffer_add_int(buffer *buf, int i)
void fe_filter_capabilities_100(const ows *o)
int ows_srs_get_srid_from_layer(ows *o, buffer *layer_name)
ows_geobbox * ows_geobbox_init()
void ows_service_identification(const ows *o)
void ows_get_capabilities_dcpt(const ows *o, const char *req)
buffer * ows_srs_get_from_a_srid(ows *o, int srid)
void ows_service_provider(const ows *o)
char * buf
size to next realloc
struct Ows_layer_node * next
void wfs_get_capabilities(ows *o, wfs_request *wr)
static void wfs_feature_type_list(ows *o)
static void wfs_capability(ows *o)
static void wfs_get_capabilities_100(ows *o, wfs_request *wr)
static void wfs_get_capabilities_dcpt_100(const ows *o, char *req)
static void wfs_get_capabilities_110(ows *o, wfs_request *wr)
static void wfs_gml_object_type(ows *o, char *type)
static void wfs_operations_metadata(ows *o)
static void wfs_gml_object_type_list(ows *o)