12
12
from sextante .parameters .ParameterSelection import ParameterSelection
13
13
from sextante .core .GeoAlgorithmExecutionException import GeoAlgorithmExecutionException
14
14
from sextante .core .SextanteLog import SextanteLog
15
+ #~ from sextante.core.Sextante import Sextante
15
16
from sextante .parameters .ParameterFactory import ParameterFactory
16
17
from sextante .outputs .OutputFactory import OutputFactory
17
18
from sextante .otb .OTBUtils import OTBUtils
19
+ from sextante .parameters .ParameterExtent import ParameterExtent
18
20
19
21
class OTBAlgorithm (GeoAlgorithm ):
20
22
23
+ REGION_OF_INTEREST = "ROI"
24
+
21
25
def __init__ (self , descriptionfile ):
22
26
GeoAlgorithm .__init__ (self )
27
+ self .roiFile = None
23
28
self .descriptionFile = descriptionfile
24
29
self .defineCharacteristicsFromFile ()
25
30
self .numExportedLayers = 0
@@ -60,8 +65,11 @@ def defineCharacteristicsFromFile(self):
60
65
param .default = OTBUtils .otbSRTMPath ()
61
66
if param .name == "-elev.dem.geoid" :
62
67
param .default = OTBUtils .otbGeoidPath ()
63
-
64
68
self .addParameter (param )
69
+ elif line .startswith ("Extent" ):
70
+ self .extentParamNames = line [6 :].strip ().split (" " )
71
+ self .addParameter (ParameterExtent (self .REGION_OF_INTEREST , "Region of interest" , "0,1,0,1" ))
72
+ self .roiFile = SextanteUtils .getTempFilename ()
65
73
else :
66
74
self .addOutput (OutputFactory .getFromString (line ))
67
75
line = lines .readline ().strip ("\n " ).strip ()
@@ -83,9 +91,16 @@ def processAlgorithm(self, progress):
83
91
for param in self .parameters :
84
92
if param .value == None or param .value == "" :
85
93
continue
86
- if isinstance (param , ( ParameterRaster , ParameterVector ) ):
94
+ if isinstance (param , ParameterVector ):
87
95
commands .append (param .name )
88
96
commands .append (param .value )
97
+ if isinstance (param , ParameterRaster ):
98
+ commands .append (param .name )
99
+ if self .roiFile :
100
+ commands .append (self .roiFile )
101
+ self .roiInput = param .name
102
+ else :
103
+ commands .append (param .value )
89
104
elif isinstance (param , ParameterMultipleInput ):
90
105
commands .append (param .name )
91
106
commands .append (str (param .value .replace (";" ," " )))
@@ -97,14 +112,24 @@ def processAlgorithm(self, progress):
97
112
if param .value :
98
113
commands .append (param .name )
99
114
commands .append (str (param .value ).lower ())
115
+ elif isinstance (param , ParameterExtent ):
116
+ self .roiValues = param .value .split ("," )
100
117
else :
101
118
commands .append (param .name )
102
119
commands .append (str (param .value ))
103
120
104
121
for out in self .outputs :
105
122
commands .append (out .name )
106
- commands .append (out .value );
107
-
123
+ commands .append (out .value )
124
+
125
+ if self .roiFile :
126
+ args = {"in" : self .roiInput ,
127
+ "out" : self .roiFile ,
128
+ "startx" : self .roiValues [0 ],
129
+ "starty" : self .roiValues [1 ],
130
+ "sizex" : self .roiValues [2 ],
131
+ "sizey" : self .roiValues [3 ]}
132
+ Sextante .runalg ("ExtractROI" , * args )
108
133
109
134
loglines = []
110
135
loglines .append ("OTB execution command" )
0 commit comments