-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathBEM2.py
94 lines (71 loc) · 2.98 KB
/
BEM2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#**********************************************************************
# Description:
# Run BEM (model)
#
#
# Arguments:
# 0 - BEM Model R file
# 1 - Base year (2007)
# 2 - End year (2015, 2030, 2040)
# 3 - Scenario
# 4 - Exported shared file 1 - Sectoral CO2 (BEM_CO2_SECTOR_FINAL_scenario_2007-2030)
#
# Created by: Harutyun Shahumyan
#**********************************************************************
# Standard error handling
try:
import arcpy
import time
import os
import string
import subprocess
start = time.time()
arcpy.AddMessage("")
arcpy.AddMessage("******************************************************")
arcpy.AddMessage("BEM model start time: %s" % time.strftime('%X %x %Z'))
# Get input arguments
in_Program = arcpy.GetParameterAsText(0)
in_BaseYear = arcpy.GetParameterAsText(1)
in_EndYear = arcpy.GetParameterAsText(2)
in_Scenario = arcpy.GetParameterAsText(3)
# Check that the program exist
if not arcpy.Exists(in_Program):
raise Exception, "Input program does not exist"
# Run the model / program
arcpy.AddMessage("")
arcpy.AddMessage("Running %s" % (in_Program))
arcpy.AddMessage("Base year: %s" % (in_BaseYear))
arcpy.AddMessage("End year: %s" % (in_EndYear))
arcpy.AddMessage("Scenario: %s" % (in_Scenario))
desc = arcpy.Describe(in_Program)
sourceFilePath = desc.path
pathRScript = "C:\\Program Files\\R\\R-3.0.1\\bin\\x64"
runProgram = "RScript" + " " + in_Program +" "+ in_BaseYear +" "+ in_EndYear+" "+ in_Scenario
# runProgram2 = in_Program +" "+ in_BaseYear +" "+ in_EndYear
arcpy.AddMessage("Running: %s" % (runProgram))
os.chdir(pathRScript)
# os.system("RScript.exe E:\\BEM2\\BEM2_MODEL.R 2007 2030")
os.system(runProgram)
# proc = subprocess.Popen([pathRScript,runProgram2 ], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# stdout, stderr = proc.communicate()
# Export shared file
arcpy.AddMessage("Exporting exchange data files ...")
outputFile_CO2Sectors = sourceFilePath + "\\OUTPUT\\" + "BEM_CO2_FINAL_"+ in_Scenario +"_2007-"+ in_EndYear +".csv"
arcpy.AddMessage(outputFile_CO2Sectors)
arcpy.SetParameter(4, outputFile_CO2Sectors)
elapsed = (time.time() - start)
arcpy.AddMessage("")
arcpy.AddMessage("Model end time: %s" % time.strftime('%X %x %Z'))
arcpy.AddMessage("Processing time in seconds is %s" % str(elapsed ))
arcpy.AddMessage("******************************************************")
arcpy.AddMessage("")
# Handle script errors
except Exception, errMsg:
# If we have messages of severity error (2), we assume a GP tool raised it,
# so we'll output that. Otherwise, we assume we raised the error and the
# information is in errMsg.
#
if arcpy.GetMessages(2):
arcpy.AddError(arcpy.GetMessages(2))
else:
arcpy.AddError(str(errMsg))