예제 #1
0
    def __init__(self):
        # init process
        WPSProcess.__init__(self,
                            identifier="clipc_drschecker", #the same as the file name
                            title="CLIPC DRS Checker",
                            version = "1.0",
                            storeSupported = "true",
                            statusSupported = "true",
                            abstract="Checks file for correct DRS",
                            grassLocation =False)
        
        self.resource = self.addLiteralInput(identifier="resource",
                                                title="Please select the input NetCDF file URL to check",
                                                abstract="application/netcdf",
                                                default = "select a file",
                                                minOccurs=1,
                                                maxOccurs=1,
                                                type = type("String"))   
 
        self.activity = self.addLiteralInput(identifier = 'activity',
                                               title = 'Project or activity',
                                               abstract = 'Project or activity' ,
                                               type="String",
                                               default = 'CLIPC')        
        self.tags = self.addLiteralInput(identifier = "tags",title = "Your tag for this process",type="String",default="provenance_research_knmi");

        self.activity.values = ["CLIPC","CORDEX"]
      
        self.goodorbad = self.addLiteralOutput(identifier = "goodorbad",title = "OK means good, ERROR means error",  type = type("String"));
        self.logmessages = self.addLiteralOutput(identifier = "logmessages",title = "logmessages" , type = type("String"));
        self.errors = self.addLiteralOutput(identifier = "errors",title = "errors" , type = type("String"));
        self.nroferrors = self.addLiteralOutput(identifier = "nroferrors",title = "nroferrors" , type = type("String"));
        self.DatasetDRS = self.addLiteralOutput(identifier = "DatasetDRS",title = "DatasetDRS" , type = type("String"));
        self.FilenameDRS = self.addLiteralOutput(identifier = "FilenameDRS",title = "FilenameDRS" , type = type("String"));
예제 #2
0
    def __init__(self):
        # init process
        WPSProcess.__init__(self,
                            identifier="clipc_extractnuts_execute", #the same as the file name
                            title="CLIPC Create statistics per NUTS region Execute",
                            version = "1.0",
                            storeSupported = "true",
                            statusSupported = "true",
                            abstract="The NUTS extractor calculates statistics for any NetCDF file by extracting geographical areas defined in a GeoJSON file. The statistics per geographical area include minimum, maximum, mean and standard deviation. The statistics are presented in a CSV table and a NetCDF file.",
                            grassLocation =False)
        
        self.input1 = self.addLiteralInput(identifier="input1",
                                                title="File A",
                                                abstract="application/netcdf",
                                                default = "http://opendap.knmi.nl/knmi/thredds/dodsC/CLIPC/storyline_urbanheat/geojson/NUTS_2010_L0.geojson.nc",
                                                type = type("String"))  

        self.input2 = self.addLiteralInput(identifier="input2",
                                                title="File B",
                                                abstract="application/netcdf",
                                                default = "http://opendap.knmi.nl/knmi/thredds/dodsC/IS-ENES/TESTSETS/tas_day_EC-EARTH_rcp26_r8i1p1_20060101-20251231.nc",
                                                type = type("String"))  

        self.bbox = self.addLiteralInput(identifier = "bbox",title = "Bounding box",type="String",minOccurs=4,maxOccurs=4,default="-40,20,60,85")
        self.time2 = self.addLiteralInput(identifier = "time2",title = "Time B",type="String",minOccurs=1,maxOccurs=1,default="2016-08-29T12:00:00Z")
        self.width  = self.addLiteralInput(identifier = "width"  ,title = "Width"  ,type="String",minOccurs=1,maxOccurs=1,default="1500")
        self.height = self.addLiteralInput(identifier = "height" ,title = "Height" ,type="String",minOccurs=1,maxOccurs=1,default="1500")
        self.crs  = self.addLiteralInput(identifier = "crs"  ,title = "Coordinate reference system"  ,type="String",minOccurs=1,maxOccurs=1,default="EPSG:4326")
        self.tags = self.addLiteralInput(identifier = "tags",title = "Your tag for this process",type="String",default="provenance_research_knmi");
        self.netcdfnutsstatfilename = self.addLiteralInput(identifier="netcdfnutsstatfilename",title = "NetCDF outputfile with geographical statistics",type="String",default="nutstat.nc")
        self.csvnutsstatfilename = self.addLiteralInput(identifier="csvnutsstatfilename",title = "CSV outputfile with statistics in table form",type="String",default="nutstat.csv")
        
        self.netcdfnutsstatout = self.addLiteralOutput(identifier = "netcdfnutsstatout",title = "NetCDF outputfile with geographical statistics");
        self.csvnutsstatout = self.addLiteralOutput(identifier = "csvnutsstatout",title = "CSV outputfile with statistics in table form");
        self.csvnutsstatdata = self.addLiteralOutput(identifier = "csvnutsstatdata",title = "CSV with statistics in table form");
예제 #3
0
    def __init__(self):
        # init process
        WPSProcess.__init__(
            self,
            identifier="pretty-picture",  #the same as the file name
            version="1.0",
            title="Some picture",
            storeSupported="true",
            statusSupported="true",
            abstract="Some picture.",
            grassLocation=False)

        #Input (c4i fails if no inputs are present)
        self.tag = self.addLiteralInput(
            identifier="tag",
            title="Specify a custom title for this process",
            type="String",
            default="unspecified")

        self.picture = self.addComplexOutput(identifier="picture",
                                             title="Raster out",
                                             formats=[{
                                                 "mimeType": "image/png"
                                             }])

        self.picture2 = self.addComplexOutput(identifier="picture2",
                                              title="Raster out",
                                              formats=[{
                                                  "mimeType": "image/png"
                                              }])
예제 #4
0
    def __init__(self):
        WPSProcess.__init__(
            self,
            identifier="swat_join",
            title="SWAT Join",
            version="1.0",
            storeSupported="false",
            statusSupported="true",
            grassLocation=True,
            abstract="Join DBF files with SWAT sub-basins shapefile")
        #Datainputs
        #DBF file
        self.dbfFile = self.addLiteralInput(identifier="dbfFile",
                                            title="DBF File",
                                            abstract="DBF file in SWAT format",
                                            type=str)

        #SHP file
        self.shpFile = self.addLiteralInput(identifier="shpFile",
                                            title="Shape File",
                                            abstract="Subbasin shapefile",
                                            type=str)

        #Output
        self.shpOut = self.addLiteralOutput(identifier="shpOut",
                                            title="Output joined SHP file",
                                            type=str)
    def __init__(self):
        # init process
        WPSProcess.__init__(self,
                            identifier="binaryoperatorfornumbers_10sec", #the same as the file name
                            title="Perform operation on two numbers 10 seconds",
                            version = "1.0",
                            storeSupported = "true",
                            statusSupported = "true",
                          abstract="Performs operation on two numbers and returns the answer, updates every second its status for 10 seconds.",
                          grassLocation =False)
        
        self.inputa = self.addLiteralInput(identifier="inputa",
                                                title="Input 1",
                                                abstract="Input 1",
                                                default = 2.0,
                                                type = type(1.2))   
        self.inputb = self.addLiteralInput(identifier="inputb",
                                                title="Input 2",
                                                abstract="Input 2",
                                                default = 3.0,
                                                type = type(1.2))   
        self.operator = self.addLiteralInput(identifier = 'operator',
                                              title = 'operator',
                                              type=type("String"),
                                              default = 'add')        


        self.operator.values = ["add","substract","divide","multiply"]

        self.Answer=self.addLiteralOutput(identifier = "answer",
                                          title = "Binary operator result")
예제 #6
0
    def __init__(self):
        # init process
        WPSProcess.__init__(self,
                            identifier="clipc_combine_execute", #the same as the file name
                            title="CLIPC Combine Execute",
                            version = "1.0",
                            storeSupported = "true",
                            statusSupported = "true",
                          abstract="Performs operation on two nc files and returns the answer as nc file",
                          grassLocation =False)
        
        self.input1 = self.addLiteralInput(identifier="input1",
                                                title="File A",
                                                abstract="application/netcdf",
                                                default = "http://opendap.knmi.nl/knmi/thredds/dodsC/CLIPC/cerfacs/vDTR/MPI-M-MPI-ESM-LR_rcp85_r1i1p1_SMHI-RCA4_v1/vDTR_MON_MPI-M-MPI-ESM-LR_rcp85_r1i1p1_SMHI-RCA4_v1_EUR-11_2006-2100.nc",
                                                type = type("String"))  

        self.input2 = self.addLiteralInput(identifier="input2",
                                                title="File B",
                                                abstract="application/netcdf",
                                                default = "http://opendap.knmi.nl/knmi/thredds/dodsC/CLIPC/cerfacs/vDTR/MPI-M-MPI-ESM-LR_rcp85_r1i1p1_SMHI-RCA4_v1/vDTR_MON_MPI-M-MPI-ESM-LR_rcp85_r1i1p1_SMHI-RCA4_v1_EUR-11_2006-2100.nc",
                                                type = type("String"))  

        self.operator = self.addLiteralInput(identifier = 'operator',
                                              title = 'Combine operation',
                                              abstract = 'Choose operator for array artithmetic.',
                                              type=type("String"),
                                              default = 'multiply')  

        self.norm1 = self.addLiteralInput(identifier = 'norm1',
                                              title = 'Normalisation operator input A',
                                              abstract = 'Choose normalisation method for dataset A.',
                                              type=type("String"),
                                              default = 'normnone')

        self.norm2 = self.addLiteralInput(identifier = 'norm2',
                                              title = 'Normalisation operator input B',
                                              abstract = 'Choose normalisation method for dataset B.',
                                              type=type("String"),
                                              default = 'normnone')


        self.bbox = self.addLiteralInput(identifier = "bbox",title = "Bounding box",type="String",minOccurs=4,maxOccurs=4,default="-40,20,60,85")
        
        self.time1 = self.addLiteralInput(identifier = "time1",title = "Time A",type="String",minOccurs=1,maxOccurs=1,default="2100-09-16T00:00:00Z")
        self.time2 = self.addLiteralInput(identifier = "time2",title = "Time B",type="String",minOccurs=1,maxOccurs=1,default="2100-09-16T00:00:00Z")
        
        self.operator.values = ["add","subtract","divide","multiply"] 
        self.norm1.values = ["normnone" , "normzero", "normminmax", "normstndrd"]
        self.norm2.values = ["normnone" , "normzero", "normminmax", "normstndrd"]

        self.width  = self.addLiteralInput(identifier = "width"  ,title = "Width"  ,type="String",minOccurs=1,maxOccurs=1,default="400")
        self.height = self.addLiteralInput(identifier = "height" ,title = "Height" ,type="String",minOccurs=1,maxOccurs=1,default="300")

        self.outputfilename = self.addLiteralInput(identifier="outputfilename",title = "Output file name",type="String",default="combine.nc")
        
        self.result = self.addLiteralOutput(identifier = "result",title = "result as OpenDAP URL");
예제 #7
0
 def __init__(self):
     # init process
     WPSProcess.__init__(self,
                         identifier="ultimatequestionprocess", #the same as the file name
                         version = "2.0",
                         title="Answer to Life, the Universe and Everything",
                         storeSupported = "false",
                         statusSupported = "false",
                        abstract="Numerical solution that is the answer to Life, Universe and Everything. The process is an improvement to Deep Tought computer (therefore version 2.0) since it no longer takes 7.5 milion years, but only a few seconds to give a response, with an update of status every 10 seconds.",
                        grassLocation =False)
        #No need for inputs since Execute will start the process
     self.Answer=self.addLiteralOutput(identifier = "answer",
                                        title = "The numerical answer to Life, Universe and Everything")
예제 #8
0
 def __init__(self):
     # init process
     WPSProcess.__init__(self,
                         identifier="clipc_extractnuts_identify", #the same as the file name
                         title="CLIPC  Create statistics per NUTS region Identify",
                         version = "1.0",
                         storeSupported = "true",
                         statusSupported = "true",
                         abstract="Identify process for statistics per NUTS region calculations",
                         grassLocation =False)
  
     self.result = self.addLiteralOutput(identifier = "result",title = "answer");
     self.inputorder = self.addLiteralOutput(identifier = "inputorder",title = "inputorder");
예제 #9
0
        def __init__(self):
                WPSProcess.__init__(self,
                        identifier = "swat_outputsub_processor",
                        title = "SWAT outputsub processor",
                        version = "1.0",
                        storeSupported = "false",
                        statusSupported = "true",
                        grassLocation = True,
                        abstract = "Process SWAT output.sub file and creates a dbf file for each variable")
		#Datainputs		
		#output.sub file path		
		self.outputSub = self.addLiteralInput(identifier="outputSub", title="Output.sub file", abstract="Path to the output.sub file", type=str)  
		
		#output.sub file path		
		self.legendCsv = self.addLiteralInput(identifier="legendCsv", title="Legend.csv file", abstract="Path to the legend.csv file", type=str)
예제 #10
0
    def __init__(self):
        WPSProcess.__init__(self,
                            identifier="swat_publisher",
                            title="SWAT Publisher",
                            version="1.0",
                            storeSupported="false",
                            statusSupported="true",
                            grassLocation=True,
                            abstract="Publish SWAT outputs maps in GeoServer")
        #Datainputs

        #Output
        self.shpOut = self.addLiteralOutput(identifier="shpOut",
                                            title="Output joined SHP file",
                                            type=str)
예제 #11
0
 def __init__(self):
     # init process
     WPSProcess.__init__(
         self,
         identifier="ultimatequestionprocess",  #the same as the file name
         version="2.0",
         title="Answer to Life, the Universe and Everything",
         storeSupported="false",
         statusSupported="false",
         abstract=
         "Numerical solution that is the answer to Life, Universe and Everything. The process is an improvement to Deep Tought computer (therefore version 2.0) since it no longer takes 7.5 milion years, but only a few seconds to give a response, with an update of status every 10 seconds.",
         grassLocation=False)
     #No need for inputs since Execute will start the process
     self.Answer = self.addLiteralOutput(
         identifier="answer",
         title="The numerical answer to Life, Universe and Everything")
예제 #12
0
    def __init__(self):
        WPSProcess.__init__(self,
                            identifier="ushahidi2shp",
                            title="Ushahidi converter",
                            version="1.0",
                            storeSupported="false",
                            statusSupported="true",
                            grassLocation=True,
                            abstract="Convert Ushahidi data to shapefile")
        #Datainputs
        #Ushahidi KML URL
        self.ushahidiKmlUrl = self.addLiteralInput(
            identifier="ushahidiKmlUrl",
            title="Ushahidi KML interface URL",
            abstract=
            "URL to the KML service of Ushahidi (install related plugin if needed)",
            type=str)

        #Output
        self.shpOut = self.addLiteralOutput(identifier="shpOut",
                                            title="Output SHP file",
                                            type=str)
    def __init__(self):
        
        # initialisation process
        WPSProcess.__init__(self,
                            identifier="SIGnature_target_WPS",      
                            title="Detection de la Jussie aquatique sur le BV de La Vilaine",
                            version = "1.0", 
                            storeSupported = True,
                            statusSupported = True,
                            abstract="""Ce WPS permet de detecter la Jussie aquatique dans un bassain 
                            versant a partir des images stellites Spot5 et de ROI Jussie. 
                            le resultat sera l'envoi d'un e-mail contenant l'adresse du context
                            de la carte (Atlas) ainsi que le lien de téléchargement de la couche vecteur jussie.""")
                                          
        # Inputs
                                          
        # Complexe inputs                                
        # ROI en format GML (Optionel)                                        
        self.my_roi = self.addComplexInput(identifier = "ROI_Jussie",
                                            title = "Polygones de verite terrain Jussie",
                                            formats = [{'mimeType': 'text/xml'}],
                                            minOccurs = 0 )

#        self.zone_clip = self.addComplexInput(identifier = "Zone de clip",
#                                            title = "Couche vecteur due la zone a traiter",
#                                            formats = [{'mimeType': 'text/xml'}] )                                                 

        # WCS (si il y a une couche male publié sur l'adresse URL du geoserver le get_wcs ne marchra pas)

        self.url_wcs = self.addLiteralInput(identifier = "url_wcs",
                                            title = "L'adresse URL du serveur WCS",
                                            type = type(""),
                                            default="")
                                            
        self.namespace_wcs = self.addLiteralInput(identifier = "namespace_wcs",
                                            title = "Nom de l'image satellite sur le Geoserver",
                                            type = type(""),
                                            default="")

        # Literal Inputs
        self.url_wfs_RH = self.addLiteralInput(identifier = "url_wfs_RH",
                                            title = "L'adresse URL du serveur WFS",
                                            type = type(""),
                                            default="http://geoxxx.agrocampus-ouest.fr/geoserverwps/geouest")
                                            
        # Nome de la couche Reseau hydrographique sur le geoserver
        self.namespace_wfs_RH = self.addLiteralInput(identifier = "namespace_wfs_RH",
                                            title = "Nom de la couche vecteur Reseau hydrographique sur le Geoserver",
                                            type = type(""),
                                            default="geouest:RH_surfacique_BV_Vilaine")

                                            
        # L'angle spectral en degrés                            
        self.spectral_angle = self.addLiteralInput(identifier = "Angle spectral",
                                            title = "L' angle spectrale en degres pour la classification SAM",
                                            type = type(1.0),
                                            default=1.0)
                                  
        self.n_classes = self.addLiteralInput(identifier = "Nombre de classes",
                                            title = "Nombre de classes de la classification Cluster Analyses",
                                            type = type(2),
                                            allowedValues=[3,2],
                                            default=3)
                                            
        # Literal inputs (pour la publication de la couche résultat sur Geoserver)                                
        self.email = self.addLiteralInput(identifier = "E-Mail",
                                            title = "Entrer votre adresse email pour recevoir le resultat du traitement",
                                            type = type(""),
								    minOccurs = 0,
                                            default = "" )
                                            
        # Output

        self.text_out = self.addLiteralOutput(identifier="text_out",
                                         type = type(""),
                                         title = "A literal response output")

        self.url = self.addLiteralOutput(identifier="url",
                                         type = type(""),
                                         title = "URL de la couche en sortie")

        self.layer = self.addLiteralOutput(identifier="layer",
                                         type = type(""),
                                         title = "Nom de la couche en sortie")                                        
예제 #14
0
    def __init__(self):
        WPSProcess.__init__(
            self,
            identifier="swat_extractor",
            title="SWAT extractor",
            version="1.0",
            storeSupported="false",
            statusSupported="true",
            grassLocation=True,
            abstract=
            "Download module to setup a SWAT model (Rivers, DEM, Soils, Land Use, Temperatures, Precipitations). Data will be in WGS84"
        )
        #Datainputs
        #Bounding Box
        self.northBound = self.addLiteralInput(
            identifier="northBound",
            title="North",
            abstract="North bounding [decimal degrees]",
            type=str)
        self.southBound = self.addLiteralInput(
            identifier="southBound",
            title="South",
            abstract="South bounding [decimal degrees]",
            type=str)
        self.eastBound = self.addLiteralInput(
            identifier="eastBound",
            title="East",
            abstract="East bounding [decimal degrees]",
            type=str)
        self.westBound = self.addLiteralInput(
            identifier="westBound",
            title="West",
            abstract="West bounding [decimal degrees]",
            type=str)

        #Rivers
        self.riversInUrl = self.addLiteralInput(
            identifier="riversInUrl",
            title="Rivers WFS endpoint",
            abstract="WFS URL giving access to river data set",
            type=str)
        self.riversInLayerName = self.addLiteralInput(
            identifier="riversInLayerName",
            title="Rivers layername",
            abstract="Name of the river WFS layer",
            type=str)

        #DEM
        self.demInUrl = self.addLiteralInput(
            identifier="demInUrl",
            title="DEM WCS endpoint",
            abstract="WCS URL giving access to DEM data set",
            type=str)
        self.demInLayerName = self.addLiteralInput(
            identifier="demInLayerName",
            title="DEM layername",
            abstract="Name of the DEM WCS layer",
            type=str)

        #Soils
        self.soilsInUrl = self.addLiteralInput(
            identifier="soilsInUrl",
            title="Soils WCS endpoint",
            abstract="WCS URL giving access to soils data set",
            type=str)
        self.soilsInLayerName = self.addLiteralInput(
            identifier="soilsInLayerName",
            title="Soils layername",
            abstract="Name of the soils WCS layer",
            type=str)

        #Land Use
        self.landuseInUrl = self.addLiteralInput(
            identifier="landuseInUrl",
            title="Land Use WCS endpoint",
            abstract="WCS URL giving access to land use data set",
            type=str)
        self.landuseInLayerName = self.addLiteralInput(
            identifier="landuseInLayerName",
            title="LandUse layername",
            abstract="Name of the land use WCS layer",
            type=str)

        #Temperatures
        self.tempInUrl = self.addLiteralInput(
            identifier="tempInUrl",
            title="Temperatures WFS endpoint",
            abstract="WFS URL giving access to temperatures data set",
            type=str)
        self.tempInLayerName = self.addLiteralInput(
            identifier="tempInLayerName",
            title="Temperatures layername",
            abstract="Name of the temperatures WFS layer",
            type=str)

        #Precipitations
        self.precipInUrl = self.addLiteralInput(
            identifier="precipInUrl",
            title="Precipitations WFS endpoint",
            abstract="WFS URL giving access to precipitations data set",
            type=str)
        self.precipInLayerName = self.addLiteralInput(
            identifier="precipInLayerName",
            title="Precipitations layername",
            abstract="Name of the precipitations WFS layer",
            type=str)

        #Output
        self.swatOut = self.addLiteralOutput(identifier="swatOut",
                                             title="Output zip file",
                                             type=str)
예제 #15
0
    def __init__(self):
        # init process
        WPSProcess.__init__(self,
                            identifier="is_enes_combine_execute", #the same as the file name
                            title="CLIPC Combine Execute",
                            version = "1.0",
                            storeSupported = "true",
                            statusSupported = "true",
                          abstract="Performs operation on two nc files and returns the answer as nc file. Please select the correct dates for the given files. Selected data fields will be interpolated to the same grid using nearest neighbour interpolation. After that normalisation operations and raster arithmetic will be applied, the result is written to your basket and can be used in new processes.",
                          grassLocation =False)
        
        self.input1 = self.addLiteralInput(identifier="wpsnetcdfinput_input1",
                                                title="File A",
                                                abstract="The input file for field A",
                                                default = "http://opendap.knmi.nl/knmi/thredds/dodsC/CLIPC/cerfacs/vDTR/MPI-M-MPI-ESM-LR_rcp85_r1i1p1_SMHI-RCA4_v1/vDTR_MON_MPI-M-MPI-ESM-LR_rcp85_r1i1p1_SMHI-RCA4_v1_EUR-11_2006-2100.nc",
                                                type = type("String"))  

        self.input2 = self.addLiteralInput(identifier="wpsnetcdfinput_input2",
                                                title="File B",
                                                abstract="The input file for field B",
                                                default = "http://opendap.knmi.nl/knmi/thredds/dodsC/CLIPC/cerfacs/vDTR/MPI-M-MPI-ESM-LR_rcp85_r1i1p1_SMHI-RCA4_v1/vDTR_MON_MPI-M-MPI-ESM-LR_rcp85_r1i1p1_SMHI-RCA4_v1_EUR-11_2006-2100.nc",
                                                type = type("String"))  

        self.operator = self.addLiteralInput(identifier = 'operator',
                                              title = 'Combine operation',
                                              abstract = 'Choose operator for array artithmetic.',
                                              type=type("String"),
                                              default = 'multiply')  

        self.norm1 = self.addLiteralInput(identifier = 'wpsnormalinorm1',
                                              title = 'Normalisation operator for field A',
                                              abstract = 'Choose normalisation method for field A.',
                                              type=type("String"),
                                              default = 'normnone')

        self.norm2 = self.addLiteralInput(identifier = 'norm2',
                                              title = 'Normalisation operator for field B',
                                              abstract = 'Choose normalisation method for field B.',
                                              type=type("String"),
                                              default = 'normnone')


        self.bbox = self.addLiteralInput(identifier = "bbox",title = "Bounding box",type="String",minOccurs=4,maxOccurs=4,default="-40,20,60,85", abstract="Choose the area of interest in degrees. The ordering of inputs for the bounding box window is left, bottom, right and top (degrees).")
        
        self.time1 = self.addLiteralInput(identifier = "wpstime_time1~wpsnetcdfinput_input1",title = "Time A",type="String",minOccurs=1,maxOccurs=1,default="2100-09-16T00:00:00Z",
                                          abstract ="The date for the field selected from file A.")
        self.time2 = self.addLiteralInput(identifier = "wpstime_time2~wpsnetcdfinput_input2",title = "Time B",type="String",minOccurs=1,maxOccurs=1,default="2100-09-16T00:00:00Z",
                                          abstract ="The date for the field selected from file B.")
        
        self.operator.values = ["add","subtract","divide","multiply"] 
        self.norm1.values = ["normnone" , "normzero", "normminmax", "normstndrd"]
        self.norm2.values = ["normnone" , "normzero", "normminmax", "normstndrd"]

        self.width  = self.addLiteralInput(identifier = "width"  ,title = "Width"  ,type="String",minOccurs=1,maxOccurs=1,default="1000",
                                           abstract= "The width of the field in raster cells")
        self.height = self.addLiteralInput(identifier = "height" ,title = "Height" ,type="String",minOccurs=1,maxOccurs=1,default="1000",
                                           abstract= "The height of the field in raster cells")

        self.outputfilename = self.addLiteralInput(identifier="outputfilename",title = "Output file name",type="String",default="combination-of-field-A-and-B.nc",abstract="The output filename of the result, will be written to your basket")
        
        self.result = self.addLiteralOutput(identifier = "result",title = "OpenDAP", type=type("String"));