source: TI02-CSML/trunk/services/3rdParty/pywps-1.0.0/pywps/processes/flow.py @ 2194

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI02-CSML/trunk/services/3rdParty/pywps-1.0.0/pywps/processes/flow.py@2194
Revision 2194, 4.8 KB checked in by lawrence, 13 years ago (diff)

Adding various specs and 3rd party code of interest for the CSML
services development.

  • Property svn:executable set to *
Line 
1#!/usr/bin/python
2"""
3pywps process example:
4
5flow:   analysis of flowing water
6"""
7# Author:       Stepan Kafka
8# Lince:
9#
10# Web Processing Service implementation
11# Copyright (C) 2006 Jachym Cepicky
12#
13# This program is free software; you can redistribute it and/or modify
14# it under the terms of the GNU General Public License as published by
15# the Free Software Foundation; either version 2 of the License.
16#
17# This program is distributed in the hope that it will be useful,
18# but WITHOUT ANY WARRANTY; without even the implied warranty of
19# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20# GNU General Public License for more details.
21#
22# You should have received a copy of the GNU General Public License
23# along with this program; if not, write to the Free Software
24# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
25
26import os,time,string,sys
27
28class Process:
29#####################################################################
30#
31# Configuration part of the process
32#
33#####################################################################
34    def __init__(self):
35       
36        #
37        # Mandatory parameters
38        #
39       
40        # Identifier - name of this process
41        self.Identifier = "flow"
42       
43        # processVersion - version of this process
44        self.processVersion = "0.1"
45       
46        # Title - title for this process
47        self.Title="Flow analysis"
48        self.Abstract="GRASS processed r.flow analysis."
49        self.grassLocation="/home/bnhelp/grassdata/mylocation/"
50       
51        #
52        # Inputs
53        # Inputs is an array of input structure
54        # Inputs = [ {input1},{input2},{...} ]
55        #
56        self.Inputs = [
57                # 0
58                    {
59                        'Identifier': 'x1',
60                        'Title': 'X coordinate',
61                        'LiteralValue': {
62                            'values':["*"],
63                        },
64                        'dataType': type(0.0),
65                    },
66       
67                # 1
68                    {
69                        'Identifier': 'y1',
70                        'Title': 'Y coordinate',
71                        'LiteralValue': {
72                            'values':["*"],
73                        },
74                        'dataType': type(0.0),
75                    },
76                   
77                # 2
78                    {
79                        'Identifier':'x2',
80                        'Title': 'X coordinate',
81                        'LiteralValue': {
82                            'values':["*"],
83                        },
84                        'dataType': type(0.0),
85                    },
86       
87                # 3
88                    {
89                        'Identifier':'y2',
90                        'Title': 'Y coordinate',
91                        'LiteralValue': {
92                            'values':["*"],
93                        },
94                        'dataType': type(0.0),
95                    }
96                ]
97       
98        #
99        # Output
100        # The structure is not much different from the input structure
101        #
102        self.Outputs = [
103                {
104                    'Identifier': 'output',
105                    'Title': 'Resulting output map',
106                    'ComplexValueReference': {
107                        'Formats':["image/tiff"],
108                        },
109                    },
110        ]
111       
112        #
113        # Optional attributes
114        #
115        #
116        # storeSuport = "true" or "false" - should the resulting map be stored on our disk?
117        self.storeSupported = "true"
118       
119        #
120        # statusSupported = "true" or "false" - if statusLocation is set, the server
121        # will not wait for the end of the operation and will return the
122        # ExectuceResponce XML file immediately, without the ProcessOutput section
123        # but with the statusLocation parameter
124        self.statusSupported = "true"
125        # and many others
126       
127    #####################################################################
128    #
129    # Execute part of the process
130    #
131    #####################################################################
132    def execute(self):
133        os.system("g.region -d")
134        os.system("g.region w=%s s=%s e=%s n=%s align=dem_cr" % \
135                (self.Inputs[0]['value'],
136                    self.Inputs[1]['value'],
137                    self.Inputs[2]['value'],
138                    self.Inputs[3]['value']))
139        os.system("r.flow elevin=dem_cr dsout=accum")
140        os.system("r.out.tiff -t input=accum output=output0")
141        os.system("/usr/local/bin/gdal_translate -of GTiff output0.tif output.tif >> /dev/null")
142
143        # check the resulting file or any other variable, which interrests you
144        if "output.tif" in os.listdir(os.curdir):
145            self.Outputs[0]['value'] = "output.tif"
146            return
147        else:
148            return "Output file not created"
149
Note: See TracBrowser for help on using the repository browser.