ADDON Minor efforts path

From PyWPS wiki

Jump to: navigation, search
"""
Description of your process which can be seen with pydoc.
"""
# Author:	Luca Casagrande
#        	http://www.ominiverdi.org
# Lince: 
# 
# Your Process Description
# Copyright (C) 2006 Your Name
# 
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

# PREREQUISITES
# 1) PyWPS: http://pywps.wald.intevation.org
# 2) GRASS  6.2
#
# INSTALLING INTO PYWPS
# following pywps instructions to put this short program into pywps/processes/
# adding 'minorcostpath.py' into pywps/process/__init__.py
#
#
import os,time,string,sys
class Process:
 def __init__(self):
		self.Identifier = "minorcostpath"
		self.processVersion = "0.1"
		self.storeSupport = "true"
		self.Title="Shortest path"
		self.Abstract="Find the shortest path between 2 points using slope factor as cost"
		self.grassLocation="/home/geko/progetti/grass/dati/spearfish61/"
		self.Inputs = [
                    # 0
                    {
                        'Identifier': 'x1',
                        'Title': 'Start x coordinate',
                        'LiteralValue': {
                        },
                        'dataType': type(0.0),
                    },
                    # 1
                     {
                        'Identifier': 'y1',
                        'Title': 'Start y coordinate',
                        'LiteralValue': {
                            'AnyValue':None, 
                        },
                        'dataType': type(0.0),
                    },
		    # 2
                     {
                        'Identifier': 'x2',
                        'Title': 'End x coordinate',
                        'LiteralValue': {
                            'AnyValue':None, 
                        },
                        'dataType': type(0.0),
                    },
                    # 3
                     {
                        'Identifier': 'y2',
                        'Title': 'End y coordinate',
                        'LiteralValue': {
                            'AnyValue':None, 
                        },
                        'dataType': type(0.0),
                    },
                  
			]
		self.Outputs = [
			{
			'Identifier': 'output',
			'Title': 'Resulting output map',
			'ComplexValueReference': {
			'Formats':["text/xml"],
			}
			},
		]	    
	
	def execute(self):
	     os.system("g.region -d")
	     os.system("r.walk -k elevation=elevation.dem friction=slope output=output_walk coordinate=%s,%s stop_coordinate=%s,%s lambda=2.35 max_cost=0 percent_memory=100 nseg=4 walk_coeff=0.72,6.0,1.9998,-1.9998 slope_factor=-0.2125 1>&2" %\
			     (self.Inputs[0]['value'],self.Inputs[1]['value'],self.Inputs[2]['value'],self.Inputs[3]['value']))
	     os.system("r.drain input=output_walk output=pat_cost coordinate=%s,%s,%s,%s 1>&2" %\
			     (self.Inputs[0]['value'],self.Inputs[1]['value'],self.Inputs[2]['value'],self.Inputs[3]['value']))
	     os.system("r.to.vect -s input=pat_cost output=path feature=line 1>&2") 
	     os.system("v.out.ogr format=GML input=path dsn=out.xml  olayer=path.xml 1>&2")

	     if "out.xml" in os.listdir(os.curdir):
			self.Outputs[0]['value'] = "out.xml"
			return
	     else:
			return "Output file not created"

Comments

  1. We rocks!!
Personal tools