Sfoglia il codice sorgente

Support more mime types for raster and vector inputs and outputs in WPS
process description.


git-svn-id: https://svn.osgeo.org/grass/grass/trunk@44080 15284696-431f-4ddb-bdfa-cd5b030d7da7

Soeren Gebbert 14 anni fa
parent
commit
1b906ed34c
1 ha cambiato i file con 139 aggiunte e 25 eliminazioni
  1. 139 25
      lib/gis/parser_wps.c

+ 139 - 25
lib/gis/parser_wps.c

@@ -28,6 +28,24 @@
 #define WPS_INPUT 0
 #define WPS_OUTPUT 1
 
+static void wps_print_mimetype_text_plain(void);
+static void wps_print_mimetype_raster_tiff(void);
+static void wps_print_mimetype_raster_tiff_other(void);
+static void wps_print_mimetype_raster_png(void);
+static void wps_print_mimetype_raster_gif(void);
+static void wps_print_mimetype_raster_jpeg(void);
+static void wps_print_mimetype_raster_hfa(void);
+static void wps_print_mimetype_raster_netCDF(void);
+static void wps_print_mimetype_raster_netCDF_other(void);
+static void wps_print_mimetype_raster_grass_binary(void);
+static void wps_print_mimetype_raster_grass_ascii(void);
+static void wps_print_mimetype_vector_gml212(void);
+static void wps_print_mimetype_vector_kml22(void);
+static void wps_print_mimetype_vector_dgn(void);
+static void wps_print_mimetype_vector_shape(void);
+static void wps_print_mimetype_vector_zipped_shape(void);
+static void wps_print_mimetype_vector_grass_ascii(void);
+static void wps_print_mimetype_vector_grass_binary(void);
 
 static void wps_print_process_descriptions_begin(void);
 static void wps_print_process_descriptions_end(void);
@@ -38,14 +56,6 @@ static void wps_print_data_inputs_end(void);
 static void wps_print_process_outputs_begin(void);
 static void wps_print_process_outputs_end(void);
 static void wps_print_bounding_box_data(void);
-static void wps_print_mimetype_text_plain(void);
-static void wps_print_mimetype_raster_tiff(void);
-static void wps_print_mimetype_raster_png(void);
-static void wps_print_mimetype_raster_grass_binary(void);
-static void wps_print_mimetype_raster_grass_ascii(void);
-static void wps_print_mimetype_vector_gml310(void);
-static void wps_print_mimetype_vector_grass_ascii(void);
-static void wps_print_mimetype_vector_grass_binary(void);
 static void wps_print_ident_title_abstract(const char *, const char *, const char *);
 static void wps_print_complex_input(int , int , const char *, const char *, const char *, int , int );
 static void wps_print_complex_output(const char *, const char *, const char *, int );
@@ -87,7 +97,7 @@ static void print_escaped_for_xml(FILE * fp, const char *str)
  * values and value options (range is missing)
  * Flags are supported as boolean values.
  *
- * The mime types for vector maps are GML 3.1 and grass ascii and binary vectors.
+ * The mime types for vector maps are GML 2.1.2 and grass ascii and binary vectors.
  * mime type: application/grass-vector-ascii  -> a text file generated with v.out.asci
  * Example.: urn:file:///path/name
  * mime type: application/grass-vector-binary -> the binary vectors must be addressed with a non standard urn:
@@ -544,7 +554,7 @@ static void wps_print_comlpex_input_output(int inout_type, int min, int max, con
     }
     else if(type == TYPE_VECTOR)
     {
-            wps_print_mimetype_vector_gml310();
+            wps_print_mimetype_vector_gml212();
     }
     else if(type == TYPE_PLAIN_TEXT)
     {
@@ -554,22 +564,36 @@ static void wps_print_comlpex_input_output(int inout_type, int min, int max, con
     fprintf(stdout,"\t\t\t\t\t<Supported>\n");
     if(type == TYPE_RASTER)
     {
-            wps_print_mimetype_raster_tiff();
-            /* These mime types are currently not meaningful */
-            if(1 == 0) {
-                wps_print_mimetype_raster_png();
-                wps_print_mimetype_raster_grass_ascii();
-                wps_print_mimetype_raster_grass_binary();
-            }
+	    /*The supported types for input and output are different*/
+            if(inout_type == WPS_INPUT) {
+            	wps_print_mimetype_raster_tiff();
+            	wps_print_mimetype_raster_tiff_other();
+            	wps_print_mimetype_raster_png();
+            	wps_print_mimetype_raster_gif();
+            	wps_print_mimetype_raster_jpeg();
+            	wps_print_mimetype_raster_hfa();
+            	wps_print_mimetype_raster_netCDF();
+            	wps_print_mimetype_raster_netCDF_other();
+	    } else {
+            	wps_print_mimetype_raster_tiff();
+            	wps_print_mimetype_raster_tiff_other();
+		wps_print_mimetype_raster_hfa();
+            	wps_print_mimetype_raster_netCDF();
+            	wps_print_mimetype_raster_netCDF_other();
+	    }
     }
     else if(type == TYPE_VECTOR)
     {
-            wps_print_mimetype_vector_gml310();
-            /* These mime types are currently not meaningful */
-            if(1 == 0) {
-                wps_print_mimetype_vector_grass_ascii();
-                wps_print_mimetype_vector_grass_binary();
-            }
+            if(inout_type == WPS_INPUT) {
+            	wps_print_mimetype_vector_gml212();
+            	wps_print_mimetype_vector_kml22();
+            	wps_print_mimetype_vector_dgn();
+            	wps_print_mimetype_vector_shape();
+            	wps_print_mimetype_vector_zipped_shape();
+	    } else {
+            	wps_print_mimetype_vector_gml212();
+            	wps_print_mimetype_vector_kml22();
+	    }
     }
     else if(type == TYPE_PLAIN_TEXT)
     {
@@ -731,12 +755,12 @@ static void wps_print_mimetype_raster_grass_ascii(void)
 
 /* ************************************************************************** */
 
-static void wps_print_mimetype_vector_gml310(void)
+static void wps_print_mimetype_vector_gml212(void)
 {
     fprintf(stdout,"\t\t\t\t\t\t<Format>\n");
     fprintf(stdout,"\t\t\t\t\t\t\t<MimeType>text/xml</MimeType>\n");
     fprintf(stdout,"\t\t\t\t\t\t\t<Encoding>UTF-8</Encoding>\n");
-    fprintf(stdout,"\t\t\t\t\t\t\t<Schema>http://schemas.opengis.net/gml/3.1.0/polygon.xsd</Schema>\n");
+    fprintf(stdout,"\t\t\t\t\t\t\t<Schema>http://schemas.opengis.net/gml/2.1.2/feature.xsd</Schema>\n");
     fprintf(stdout,"\t\t\t\t\t\t</Format>\n");
 }
 
@@ -758,6 +782,96 @@ static void wps_print_mimetype_vector_grass_binary(void)
     fprintf(stdout,"\t\t\t\t\t\t</Format>\n");
 }
 
+/* ************************************************************************** */
+static void wps_print_mimetype_raster_gif(void)
+{
+    fprintf(stdout,"\t\t\t\t\t\t<Format>\n");
+    fprintf(stdout,"\t\t\t\t\t\t\t<MimeType>image/gif</MimeType>\n");
+    fprintf(stdout,"\t\t\t\t\t\t</Format>\n");
+}
+
+/* ************************************************************************** */
+static void wps_print_mimetype_raster_jpeg(void)
+{
+    fprintf(stdout,"\t\t\t\t\t\t<Format>\n");
+    fprintf(stdout,"\t\t\t\t\t\t\t<MimeType>image/jpeg</MimeType>\n");
+    fprintf(stdout,"\t\t\t\t\t\t</Format>\n");
+}
+
+/* ************************************************************************** */
+static void wps_print_mimetype_raster_hfa(void)
+{
+    fprintf(stdout,"\t\t\t\t\t\t<Format>\n");
+    fprintf(stdout,"\t\t\t\t\t\t\t<MimeType>application/x-erdas-hfa</MimeType>\n");
+    fprintf(stdout,"\t\t\t\t\t\t</Format>\n");
+}
+/* ************************************************************************** */
+
+static void wps_print_mimetype_raster_tiff_other(void)
+{
+    fprintf(stdout,"\t\t\t\t\t\t<Format>\n");
+    fprintf(stdout,"\t\t\t\t\t\t\t<MimeType>image/geotiff</MimeType>\n");
+    fprintf(stdout,"\t\t\t\t\t\t</Format>\n");
+
+    fprintf(stdout,"\t\t\t\t\t\t<Format>\n");
+    fprintf(stdout,"\t\t\t\t\t\t\t<MimeType>application/geotiff</MimeType>\n");
+    fprintf(stdout,"\t\t\t\t\t\t</Format>\n");
+
+    fprintf(stdout,"\t\t\t\t\t\t<Format>\n");
+    fprintf(stdout,"\t\t\t\t\t\t\t<MimeType>application/x-geotiff</MimeType>\n");
+    fprintf(stdout,"\t\t\t\t\t\t</Format>\n");
+}
+
+/* ************************************************************************** */
+static void wps_print_mimetype_raster_netCDF(void)
+{
+    fprintf(stdout,"\t\t\t\t\t\t<Format>\n");
+    fprintf(stdout,"\t\t\t\t\t\t\t<MimeType>application/netcdf</MimeType>\n");
+    fprintf(stdout,"\t\t\t\t\t\t</Format>\n");
+}
+
+/* ************************************************************************** */
+static void wps_print_mimetype_raster_netCDF_other(void)
+{
+    fprintf(stdout,"\t\t\t\t\t\t<Format>\n");
+    fprintf(stdout,"\t\t\t\t\t\t\t<MimeType>application/x-netcdf</MimeType>\n");
+    fprintf(stdout,"\t\t\t\t\t\t</Format>\n");
+}
+
+/* ************************************************************************** */
+static void wps_print_mimetype_vector_kml22(void)
+{
+    fprintf(stdout,"\t\t\t\t\t\t<Format>\n");
+    fprintf(stdout,"\t\t\t\t\t\t\t<MimeType>text/xml</MimeType>\n");
+    fprintf(stdout,"\t\t\t\t\t\t\t<Encoding>UTF-8</Encoding>\n");
+    fprintf(stdout,"\t\t\t\t\t\t\t<Schema>http://schemas.opengis.net/kml/2.2.0/ogckml22.xsd</Schema>\n");
+    fprintf(stdout,"\t\t\t\t\t\t</Format>\n");
+}
+
+/* ************************************************************************** */
+static void wps_print_mimetype_vector_dgn(void)
+{
+    fprintf(stdout,"\t\t\t\t\t\t<Format>\n");
+    fprintf(stdout,"\t\t\t\t\t\t\t<MimeType>application/dgn</MimeType>\n");
+    fprintf(stdout,"\t\t\t\t\t\t</Format>\n");
+}
+
+/* ************************************************************************** */
+static void wps_print_mimetype_vector_shape(void)
+{
+    fprintf(stdout,"\t\t\t\t\t\t<Format>\n");
+    fprintf(stdout,"\t\t\t\t\t\t\t<MimeType>application/shp</MimeType>\n");
+    fprintf(stdout,"\t\t\t\t\t\t</Format>\n");
+}
+
+/* ************************************************************************** */
+static void wps_print_mimetype_vector_zipped_shape(void)
+{
+    fprintf(stdout,"\t\t\t\t\t\t<Format>\n");
+    fprintf(stdout,"\t\t\t\t\t\t\t<MimeType>application/x-zipped-shp</MimeType>\n");
+    fprintf(stdout,"\t\t\t\t\t\t</Format>\n");
+}
+
 /* Bounding box data input. Do not use! Under construction. A list of coordinate reference systems must be created.*/
 
 static void wps_print_bounding_box_data(void)