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

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI02-CSML/trunk/services/3rdParty/pywps-1.0.0/pywps/processes/shortestpath.py@2194
Revision 2194, 3.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
3# Author: Stepan Kafka
4
5import os,time,string,sys
6
7
8class Process:
9    def __init__(self):
10        self.Identifier = "shortestpath"
11        self.processVersion = "0.1"
12        self.storeSupported = "true"
13        self.Title="Shortest path"
14        self.Abstract="Find the shortes path on the roads map on Czech republic road network"
15        self.grassLocation="/home/bnhelp/grassdata/mylocation/"
16        #self.grassLocation="/var/www/wps/spearfish60/"
17        self.Inputs = [
18                    # 0
19                    {
20                        'Identifier': 'x1',
21                        'Title': 'Start x coordinate',
22                        'LiteralValue': {
23                        },
24                        'dataType': type(0.0),
25                    },
26                    # 1
27                     {
28                        'Identifier': 'y1',
29                        'Title': 'Start y coordinate',
30                        'LiteralValue': {
31                            'AnyValue':None, # AllowedValues, AnyValue, ValuesReference
32                        },
33                        'dataType': type(0.0),
34                    },
35                    # 2
36                     {
37                        'Identifier': 'x2',
38                        'Title': 'End x coordinate',
39                        'LiteralValue': {
40                            'AnyValue':None, # AllowedValues, AnyValue, ValuesReference
41                        },
42                        'dataType': type(0.0),
43                    },
44                    # 3
45                     {
46                        'Identifier': 'y2',
47                        'Title': 'End y coordinate',
48                        'LiteralValue': {
49                            'AnyValue':None, # AllowedValues, AnyValue, ValuesReference
50                        },
51                        'dataType': type(0.0),
52                    },
53                    # 4
54                     {
55                        'Identifier': 'cost',
56                        'Title': 'Calculation parameter',
57                        'Abstract': 'time or length (default) ',
58                        'LiteralValue': {
59                            'AnyValue': None, #AllowedValues , #AnyValue, ValuesReference
60                        },
61                        'dataType': type(0.0),
62                    }
63                    #,
64                    # {
65                #        'Identifier': 'distance',
66            #            'Title': 'Search distance',
67        #               'Abstract': 'Distance, where roads are searched is XY is not on a rouad.',
68        #                'LiteralValue': {
69        #                    'AnyValue': None, #AllowedValues , #AnyValue, ValuesReference
70        #                },
71        #                'dataType': type(0.0),
72        #            }
73                ]
74        self.Outputs = [
75            {
76            'Identifier': 'output',
77            'Title': 'Resulting output map',
78            'ComplexValueReference': {
79                'Formats':["text/xml"],
80                }
81            },
82        ]
83       
84    def execute(self):
85        os.system("g.region -d")
86
87        if int(self.Inputs[4]['value']) == 1:
88            os.system("echo '0 %s %s %s %s ' | v.net.path in=siln out=path afcolumn=COST2 dmax=5000 abcolumn=COST2 1>&2" %\
89                            (self.Inputs[0]['value'],self.Inputs[1]['value'],self.Inputs[2]['value'],self.Inputs[3]['value']))
90        else:
91            os.system("echo '0 %s %s %s %s ' | v.net.path in=siln out=path dmax=5000 1>&2" %\
92                            (self.Inputs[0]['value'],self.Inputs[1]['value'],self.Inputs[2]['value'],self.Inputs[3]['value']))
93        os.system("v.out.ogr format=GML input=path dsn=out.xml  olayer=path.xml 1>&2")
94       
95        if "out.xml" in os.listdir(os.curdir):
96            self.Outputs[0]['value'] = "out.xml"
97            return
98        else:
99            return "Output file not created"
100
Note: See TracBrowser for help on using the repository browser.