10#if defined(HAVE_LANGINFO_H)
13#if defined(__MINGW32__) && defined(USE_NLS)
14#include <localcharset.h>
17#include "parser_local_proto.h"
24#define TYPE_PLAIN_TEXT 2
34static void wps_print_mimetype_text_plain(
void);
35static void wps_print_mimetype_raster_tiff(
void);
36static void wps_print_mimetype_raster_tiff_other(
void);
37static void wps_print_mimetype_raster_png(
void);
38static void wps_print_mimetype_raster_gif(
void);
39static void wps_print_mimetype_raster_jpeg(
void);
40static void wps_print_mimetype_raster_hfa(
void);
41static void wps_print_mimetype_raster_netCDF(
void);
42static void wps_print_mimetype_raster_netCDF_other(
void);
43static void wps_print_mimetype_vector_gml311(
void);
44static void wps_print_mimetype_vector_gml311_appl(
void);
45static void wps_print_mimetype_vector_gml212(
void);
46static void wps_print_mimetype_vector_gml212_appl(
void);
47static void wps_print_mimetype_vector_kml22(
void);
48static void wps_print_mimetype_vector_dgn(
void);
49static void wps_print_mimetype_vector_shape(
void);
50static void wps_print_mimetype_vector_zipped_shape(
void);
59static void wps_print_mimetype_space_time_datasets(
void);
60static void wps_print_mimetype_space_time_raster_datasets(
void);
61static void wps_print_mimetype_space_time_vector_datasets(
void);
62static void wps_print_mimetype_space_time_vector_datasets_tar(
void);
63static void wps_print_mimetype_space_time_raster_datasets_tar(
void);
64static void wps_print_mimetype_space_time_vector_datasets_tar_gz(
void);
65static void wps_print_mimetype_space_time_raster_datasets_tar_gz(
void);
66static void wps_print_mimetype_space_time_vector_datasets_tar_bz2(
void);
67static void wps_print_mimetype_space_time_raster_datasets_tar_bz2(
void);
69static void wps_print_process_descriptions_begin(
void);
70static void wps_print_process_descriptions_end(
void);
71static void wps_print_process_description_begin(
int,
int,
const char *,
72 const char *,
const char *,
74static void wps_print_process_description_end(
void);
75static void wps_print_data_inputs_begin(
void);
76static void wps_print_data_inputs_end(
void);
77static void wps_print_process_outputs_begin(
void);
78static void wps_print_process_outputs_end(
void);
79static void wps_print_bounding_box_data(
void);
80static void wps_print_ident_title_abstract(
const char *,
const char *,
82static void wps_print_complex_input(
int,
int,
const char *,
const char *,
83 const char *,
int,
int);
84static void wps_print_complex_output(
const char *,
const char *,
const char *,
86static void wps_print_comlpex_input_output(
int,
int,
int,
const char *,
87 const char *,
const char *,
int,
89static void wps_print_literal_input_output(
int,
int,
int,
const char *,
90 const char *,
const char *,
91 const char *,
int,
const char **,
92 int,
const char *,
int);
94static void print_escaped_for_xml(
FILE *fp,
const char *str)
162 const char *value =
NULL;
164 const char *encoding;
170 const char *title =
NULL;
172 const char **keywords =
NULL;
186#if defined(HAVE_LANGINFO_H)
188 if (!encoding ||
strlen(encoding) == 0) {
191#elif defined(__MINGW32__) && defined(USE_NLS)
193 if (!encoding ||
strlen(encoding) == 0) {
208 if (
st->module_info.description) {
209 title =
st->module_info.description;
213 if (
st->module_info.keywords) {
214 keywords =
st->module_info.keywords;
218 wps_print_process_descriptions_begin();
221 wps_print_process_description_begin(store, status,
identifier, title,
223 wps_print_data_inputs_begin();
230 wps_print_bounding_box_data();
234 opt = &
st->first_option;
250 if (
opt->gisprompt) {
251 const char *
atts[] = {
"age",
"element",
"prompt",
NULL};
261 if (
strcmp(token,
"new") == 0) {
265 if (
strcmp(token,
"raster") == 0) {
274 if (
strcmp(token,
"vector") == 0) {
279 if (
strcmp(token,
"stds") == 0) {
282 if (
strcmp(token,
"strds") == 0) {
289 if (
strcmp(token,
"stvds") == 0) {
292 if (
strcmp(token,
"file") == 0) {
307 for (i = 0; s !=
NULL; i++) {
335 if (
opt->required ==
YES) {
345 if (
opt->multiple ==
YES) {
358 if (
opt->description) {
360 title =
opt->description;
373 while (
opt->opts[i]) {
376 keywords =
opt->opts;
389 wps_print_literal_input_output(
404 char *ident = (
char *)
G_calloc(3,
sizeof(
char));
407 ident[1] =
flag->key;
412 if (
flag->description) {
413 title =
flag->description;
416 const char *val[] = {
"true",
"false"};
417 wps_print_literal_input_output(
WPS_INPUT, 0, 1, ident, title,
NULL,
418 "boolean", 0, val, 2,
"false",
428 wps_print_literal_input_output(
430 "Resolution of the mapset in north-south direction in meters or "
432 "This parameter defines the north-south resolution of the mapset "
433 "in meter or degrees, which should be used to process the input "
434 "and output raster data. To enable this setting, you need to "
435 "specify north-south and east-west resolution.",
437 wps_print_literal_input_output(
439 "Resolution of the mapset in east-west direction in meters or "
441 "This parameter defines the east-west resolution of the mapset in "
442 "meters or degrees, which should be used to process the input and "
443 "output raster data. To enable this setting, you need to specify "
444 "north-south and east-west resolution.",
450 wps_print_literal_input_output(
452 "Band to select for processing (default is all bands)",
453 "This parameter defines band number of the input raster files "
454 "which should be processed. As default all bands are processed and "
455 "used as single and multiple inputs for raster modules.",
459 wps_print_data_inputs_end();
461 wps_print_process_outputs_begin();
468 opt = &
st->first_option;
478 if (
opt->gisprompt) {
479 const char *
atts[] = {
"age",
"element",
"prompt",
NULL};
488 if (
strcmp(token,
"new") == 0)
490 if (
strcmp(token,
"raster") == 0) {
493 if (
strcmp(token,
"vector") == 0) {
496 if (
strcmp(token,
"stds") == 0) {
499 if (
strcmp(token,
"strds") == 0) {
502 if (
strcmp(token,
"stvds") == 0) {
505 if (
strcmp(token,
"file") == 0) {
517 _(
"Multiple outputs are not supported by WPS 1.0.0"));
523 if (
opt->description) {
525 title =
opt->description;
543 wps_print_complex_output(
544 "stdout",
"Module output on stdout",
548 wps_print_process_outputs_end();
549 wps_print_process_description_end();
550 wps_print_process_descriptions_end();
560static void wps_print_process_descriptions_begin(
void)
562 fprintf(
stdout,
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
564 "xmlns:wps=\"http://www.opengis.net/wps/1.0.0\"\n");
565 fprintf(
stdout,
"xmlns:ows=\"http://www.opengis.net/ows/1.1\"\n");
566 fprintf(
stdout,
"xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n");
568 "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n");
569 fprintf(
stdout,
"xsi:schemaLocation=\"http://www.opengis.net/wps/1.0.0\n "
570 "http://schemas.opengis.net/wps/1.0.0/"
571 "wpsDescribeProcess_response.xsd\"\n service=\"WPS\" "
572 "version=\"1.0.0\" xml:lang=\"en-US\"> \n");
577static void wps_print_process_descriptions_end(
void)
584static void wps_print_process_description_begin(
585 int store,
int status,
const char *
identifier,
const char *title,
591 "\t<ProcessDescription wps:processVersion=\"1\" "
592 "storeSupported=\"%s\" statusSupported=\"%s\">\n",
593 (store ?
"true" :
"false"), (status ?
"true" :
"false"));
605 print_escaped_for_xml(
stdout, title);
611 print_escaped_for_xml(
stdout,
"No title available");
617 fprintf(
stdout,
"https://grass.osgeo.org/grass-devel/manuals/%s.html",
624 print_escaped_for_xml(
stdout, keywords[i]);
631static void wps_print_process_description_end(
void)
638static void wps_print_data_inputs_begin(
void)
645static void wps_print_data_inputs_end(
void)
652static void wps_print_process_outputs_begin(
void)
659static void wps_print_process_outputs_end(
void)
666static void wps_print_complex_input(
int min,
int max,
const char *
identifier,
667 const char *title,
const char *
abstract,
676static void wps_print_complex_output(
const char *
identifier,
const char *title,
692 fprintf(
stdout,
"\t\t\t<Input minOccurs=\"%i\" maxOccurs=\"%i\">\n",
700 fprintf(
stdout,
"\t\t\t\t<ComplexData maximumMegabytes=\"%i\">\n",
707 wps_print_mimetype_raster_tiff();
710 wps_print_mimetype_vector_gml311();
715 wps_print_mimetype_space_time_raster_datasets_tar_gz();
718 wps_print_mimetype_space_time_raster_datasets_tar_gz();
721 wps_print_mimetype_space_time_vector_datasets_tar_gz();
724 wps_print_mimetype_text_plain();
731 wps_print_mimetype_raster_tiff();
732 wps_print_mimetype_raster_tiff_other();
733 wps_print_mimetype_raster_png();
734 wps_print_mimetype_raster_gif();
735 wps_print_mimetype_raster_jpeg();
736 wps_print_mimetype_raster_hfa();
737 wps_print_mimetype_raster_netCDF();
738 wps_print_mimetype_raster_netCDF_other();
741 wps_print_mimetype_raster_tiff();
742 wps_print_mimetype_raster_tiff_other();
743 wps_print_mimetype_raster_hfa();
744 wps_print_mimetype_raster_netCDF();
745 wps_print_mimetype_raster_netCDF_other();
750 wps_print_mimetype_vector_gml311();
751 wps_print_mimetype_vector_gml311_appl();
752 wps_print_mimetype_vector_gml212();
753 wps_print_mimetype_vector_gml212_appl();
754 wps_print_mimetype_vector_kml22();
755 wps_print_mimetype_vector_dgn();
756 wps_print_mimetype_vector_shape();
757 wps_print_mimetype_vector_zipped_shape();
760 wps_print_mimetype_vector_gml311();
761 wps_print_mimetype_vector_gml311_appl();
762 wps_print_mimetype_vector_gml212();
763 wps_print_mimetype_vector_gml212_appl();
764 wps_print_mimetype_vector_kml22();
768 wps_print_mimetype_space_time_datasets();
771 wps_print_mimetype_space_time_raster_datasets();
774 wps_print_mimetype_space_time_vector_datasets();
777 wps_print_mimetype_text_plain();
794static void wps_print_ident_title_abstract(
const char *
identifier,
809 print_escaped_for_xml(
stdout, title);
815 print_escaped_for_xml(
stdout,
"No title available");
828static void wps_print_literal_input_output(
838 fprintf(
stdout,
"\t\t\t<Input minOccurs=\"%i\" maxOccurs=\"%i\">\n",
849 "\t\t\t\t\t<ows:DataType "
850 "ows:reference=\"xs:%s\">%s</ows:DataType>\n",
856 fprintf(
stdout,
"\t\t\t\t\t\t\t<ows:UOM>meters</ows:UOM>\n");
859 fprintf(
stdout,
"\t\t\t\t\t\t\t<ows:UOM>meters</ows:UOM>\n");
860 fprintf(
stdout,
"\t\t\t\t\t\t\t<ows:UOM>degrees</ows:UOM>\n");
884 "\t\t\t\t\t\t<ows:Range ows:rangeClosure=\"closed\">\n");
886 "\t\t\t\t\t\t\t<ows:MinimumValue>%s</ows:MinimumValue>\n",
889 "\t\t\t\t\t\t\t<ows:MaximumValue>%s</ows:MaximumValue>\n",
918static void wps_print_mimetype_text_plain(
void)
921 fprintf(
stdout,
"\t\t\t\t\t\t\t<MimeType>text/plain</MimeType>\n");
927static void wps_print_mimetype_raster_tiff(
void)
930 fprintf(
stdout,
"\t\t\t\t\t\t\t<MimeType>image/tiff</MimeType>\n");
936static void wps_print_mimetype_raster_png(
void)
939 fprintf(
stdout,
"\t\t\t\t\t\t\t<MimeType>image/png</MimeType>\n");
949 "\t\t\t\t\t\t\t<MimeType>application/grass-raster-binary</MimeType>\n");
958 "\t\t\t\t\t\t\t<MimeType>application/grass-raster-ascii</MimeType>\n");
964static void wps_print_mimetype_vector_gml311_appl(
void)
967 fprintf(
stdout,
"\t\t\t\t\t\t\t<MimeType>application/xml</MimeType>\n");
968 fprintf(
stdout,
"\t\t\t\t\t\t\t<Encoding>UTF-8</Encoding>\n");
969 fprintf(
stdout,
"\t\t\t\t\t\t\t<Schema>http://schemas.opengis.net/gml/"
970 "3.1.1/base/gml.xsd</Schema>\n");
976static void wps_print_mimetype_vector_gml212_appl(
void)
979 fprintf(
stdout,
"\t\t\t\t\t\t\t<MimeType>application/xml</MimeType>\n");
980 fprintf(
stdout,
"\t\t\t\t\t\t\t<Encoding>UTF-8</Encoding>\n");
981 fprintf(
stdout,
"\t\t\t\t\t\t\t<Schema>http://schemas.opengis.net/gml/"
982 "2.1.2/feature.xsd</Schema>\n");
988static void wps_print_mimetype_vector_gml311(
void)
991 fprintf(
stdout,
"\t\t\t\t\t\t\t<MimeType>text/xml</MimeType>\n");
992 fprintf(
stdout,
"\t\t\t\t\t\t\t<Encoding>UTF-8</Encoding>\n");
993 fprintf(
stdout,
"\t\t\t\t\t\t\t<Schema>http://schemas.opengis.net/gml/"
994 "3.1.1/base/gml.xsd</Schema>\n");
1000static void wps_print_mimetype_vector_gml212(
void)
1003 fprintf(
stdout,
"\t\t\t\t\t\t\t<MimeType>text/xml</MimeType>\n");
1004 fprintf(
stdout,
"\t\t\t\t\t\t\t<Encoding>UTF-8</Encoding>\n");
1005 fprintf(
stdout,
"\t\t\t\t\t\t\t<Schema>http://schemas.opengis.net/gml/"
1006 "2.1.2/feature.xsd</Schema>\n");
1017 "\t\t\t\t\t\t\t<MimeType>application/grass-vector-ascii</MimeType>\n");
1027 "\t\t\t\t\t\t\t<MimeType>application/grass-vector-binary</MimeType>\n");
1034static void wps_print_mimetype_space_time_datasets(
void)
1036 wps_print_mimetype_space_time_raster_datasets();
1037 wps_print_mimetype_space_time_vector_datasets();
1043static void wps_print_mimetype_space_time_raster_datasets(
void)
1045 wps_print_mimetype_space_time_raster_datasets_tar();
1046 wps_print_mimetype_space_time_raster_datasets_tar_gz();
1047 wps_print_mimetype_space_time_raster_datasets_tar_bz2();
1050static void wps_print_mimetype_space_time_raster_datasets_tar(
void)
1055 "\t\t\t\t\t\t\t<MimeType>application/x-grass-strds-tar</MimeType>\n");
1059static void wps_print_mimetype_space_time_raster_datasets_tar_gz(
void)
1062 fprintf(
stdout,
"\t\t\t\t\t\t\t<MimeType>application/x-grass-strds-tar-gz</"
1067static void wps_print_mimetype_space_time_raster_datasets_tar_bz2(
void)
1071 "x-grass-strds-tar-bzip</MimeType>\n");
1078static void wps_print_mimetype_space_time_vector_datasets(
void)
1080 wps_print_mimetype_space_time_vector_datasets_tar();
1081 wps_print_mimetype_space_time_vector_datasets_tar_gz();
1082 wps_print_mimetype_space_time_vector_datasets_tar_bz2();
1085static void wps_print_mimetype_space_time_vector_datasets_tar(
void)
1090 "\t\t\t\t\t\t\t<MimeType>application/x-grass-stvds-tar</MimeType>\n");
1094static void wps_print_mimetype_space_time_vector_datasets_tar_gz(
void)
1097 fprintf(
stdout,
"\t\t\t\t\t\t\t<MimeType>application/x-grass-stvds-tar-gz</"
1102static void wps_print_mimetype_space_time_vector_datasets_tar_bz2(
void)
1106 "x-grass-stvds-tar-bzip</MimeType>\n");
1111static void wps_print_mimetype_raster_gif(
void)
1114 fprintf(
stdout,
"\t\t\t\t\t\t\t<MimeType>image/gif</MimeType>\n");
1119static void wps_print_mimetype_raster_jpeg(
void)
1122 fprintf(
stdout,
"\t\t\t\t\t\t\t<MimeType>image/jpeg</MimeType>\n");
1127static void wps_print_mimetype_raster_hfa(
void)
1131 "\t\t\t\t\t\t\t<MimeType>application/x-erdas-hfa</MimeType>\n");
1137static void wps_print_mimetype_raster_tiff_other(
void)
1140 fprintf(
stdout,
"\t\t\t\t\t\t\t<MimeType>image/geotiff</MimeType>\n");
1144 fprintf(
stdout,
"\t\t\t\t\t\t\t<MimeType>application/geotiff</MimeType>\n");
1149 "\t\t\t\t\t\t\t<MimeType>application/x-geotiff</MimeType>\n");
1154static void wps_print_mimetype_raster_netCDF(
void)
1157 fprintf(
stdout,
"\t\t\t\t\t\t\t<MimeType>application/netcdf</MimeType>\n");
1162static void wps_print_mimetype_raster_netCDF_other(
void)
1166 "\t\t\t\t\t\t\t<MimeType>application/x-netcdf</MimeType>\n");
1171static void wps_print_mimetype_vector_kml22(
void)
1174 fprintf(
stdout,
"\t\t\t\t\t\t\t<MimeType>text/xml</MimeType>\n");
1175 fprintf(
stdout,
"\t\t\t\t\t\t\t<Encoding>UTF-8</Encoding>\n");
1176 fprintf(
stdout,
"\t\t\t\t\t\t\t<Schema>http://schemas.opengis.net/kml/"
1177 "2.2.0/ogckml22.xsd</Schema>\n");
1182static void wps_print_mimetype_vector_dgn(
void)
1185 fprintf(
stdout,
"\t\t\t\t\t\t\t<MimeType>application/dgn</MimeType>\n");
1190static void wps_print_mimetype_vector_shape(
void)
1193 fprintf(
stdout,
"\t\t\t\t\t\t\t<MimeType>application/shp</MimeType>\n");
1198static void wps_print_mimetype_vector_zipped_shape(
void)
1202 "\t\t\t\t\t\t\t<MimeType>application/x-zipped-shp</MimeType>\n");
1209static void wps_print_bounding_box_data(
void)
1213 fprintf(
stdout,
"\t\t\t<Input minOccurs=\"0\" maxOccurs=\"1\">\n");
1214 wps_print_ident_title_abstract(
1215 "BoundingBox",
"Bounding box to process data",
1216 "The bounding box is used to create the reference coordinate system "
1217 "in grass, as well as the lower left and upper right corner of the "
1218 "processing area.");
1223 "\t\t\t\t\t\t<CRS>urn:ogc:def:crs,crs:EPSG:6.3:32760</CRS>\n");
1228 for (i = 0; i < 1; i++)
1230 "\t\t\t\t\t\t<CRS>urn:ogc:def:crs,crs:EPSG:6.3:32760</CRS>\n");
const char * G_program_name(void)
Return module name.
void G_free(void *)
Free allocated memory.
void void void void G_fatal_error(const char *,...) __attribute__((format(printf
void G_warning(const char *,...) __attribute__((format(printf
char * G_store(const char *)
Copy string to allocated memory.
void G__wps_print_process_description(void)
Print the WPS 1.0.0 process description XML document to stdout.
Structure that stores flag info.
Structure that stores option information.