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

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

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

Line 
1#!/usr/bin/python
2
3import os,time,string,sys,shutil
4
5class Process:
6    def __init__(self):
7        self.Identifier = "searchpath"
8        self.processVersion = "0.1"
9        self.storeSupported = "true"
10        self.Title="Find the shortes path on the roads map"
11        #self.grassLocation="/var/www/wps/spearfish60/"
12        self.Inputs = [
13                    {
14                        'Identifier': 'streetmap',
15                        'Title': """Street map""",
16                        'Abstract': """Street map on which the shortest path
17                        operation should be performed""",
18                        'ComplexValue': {'Formats':["text/xml"]},
19                        'value': None
20                    },
21                    {
22                        'Identifier': 'x1',
23                        'Title': 'Start x coordinate',
24                        'LiteralData': {
25                            'values':["*"],
26                            },
27                        'dataType': type(0.0),
28                        'value': None
29                    },
30                    {
31                        'Identifier': 'y1',
32                        'Title': 'Start y coordinate',
33                        'LiteralData': {
34                            'values':["*"],
35                        },
36                        'dataType': type(0.0),
37                        'value': None
38                    },
39                    {
40                        'Identifier': 'x2',
41                        'Title': 'End x coordinate',
42                        'LiteralData': {
43                            'values':["*"],
44                        },
45                        'dataType': type(0.0),
46                        'value': None
47                    },
48                    {
49                        'Identifier': 'y2',
50                        'Title': 'End y coordinate',
51                        'LiteralData': {
52                            'values':["*"],
53                        },
54                        'dataType': type(0.0),
55                        'value': None
56                    }
57                ]
58        self.Outputs = [
59                    {
60                        'Identifier': 'outputReference',
61                        'Title': 'Resulting output map',
62                        'ComplexValueReference': {'Formats':["text/xml"]},
63                        'value': None
64                    },
65                    {
66                        'Identifier': 'outputData',
67                        'Title': 'Resulting output map',
68                        'ComplexValue': {'Formats':["text/xml"]},
69                        'value': None
70                    },
71                ]
72
73    # --------------------------------------------------------------------
74    def execute(self):
75        """
76        This function serves like simple GRASS - python script
77
78        It returns None, if process succeed or String if process failed
79        """
80        os.system("v.in.ogr dsn=%s out=roads 1>&2" %
81                (self.DataInputs['value']))
82        os.system("g.region -d")
83        # FIXME: the program does print "Building topology to STDOUT!!
84        # print  "echo '0 %s %s %s %s' | v.net.path in=roads out=path 1>&2" % \
85        #         (self.DataInputs['x1'],
86        #         self.DataInputs['y1'],
87        #         self.DataInputs['x2'],
88        #         self.DataInputs['y2'])
89
90        os.system(
91            "echo '0 %s %s %s %s' | v.net.path in=roads out=path 1>&2" % \
92            (self.Inputs['x1'],
93                self.Inputs['y1'],
94                self.Inputs['x2'],
95                self.Inputs['y2']))
96        os.system("v.out.ogr format=GML input=path dsn=out.xml olayer=path.xml 1>&2")
97
98        if "out.xml" in os.listdir(os.curdir):
99            shutil.copy("out.xml","out2.xml")
100            self.Outputs[0]['value'] = "out.xml"
101            self.Outputs[1]['value'] = "out2.xml"
102            return
103        else:
104            return "Ouput file not created!"
Note: See TracBrowser for help on using the repository browser.