@@ -91,6 +91,8 @@ def defineCharacteristicsFromFile(self):
91
91
self .commands = []
92
92
self .showPlots = False
93
93
self .showConsoleOutput = False
94
+ self .useRasterPackage = False
95
+ self .passFileNames = False
94
96
self .verboseCommands = []
95
97
filename = os .path .basename (self .descriptionFile )
96
98
self .name = filename [:filename .rfind ("." )].replace ("_" , " " )
@@ -129,36 +131,26 @@ def processParameterLine(self,line):
129
131
self .showPlots = True
130
132
self .addOutput (OutputHTML (RAlgorithm .RPLOTS , "R Plots" ));
131
133
return
134
+ if line .lower ().strip ().startswith ("userasterpackage" ):
135
+ self .useRasterPackage = True
136
+ return
137
+ if line .lower ().strip ().startswith ("passfilenames" ):
138
+ self .passFileNames = True
139
+ return
132
140
tokens = line .split ("=" );
133
141
desc = self .createDescriptiveName (tokens [0 ])
134
142
if tokens [1 ].lower ().strip () == "group" :
135
143
self .group = tokens [0 ]
136
144
return
137
145
if tokens [1 ].lower ().strip ().startswith ("raster" ):
138
146
param = ParameterRaster (tokens [0 ], desc , False )
139
- try :
140
- lib = tokens [1 ].strip ()[len ("raster" )+ 1 :]
141
- if lib == "R.raster" :
142
- self .useRraster = True
143
- else :
144
- self .useRraster = False
145
- except :
146
- self .useRraster = False
147
147
elif tokens [1 ].lower ().strip () == "vector" :
148
148
param = ParameterVector (tokens [0 ], desc ,ParameterVector .VECTOR_TYPE_ANY )
149
149
elif tokens [1 ].lower ().strip () == "table" :
150
150
param = ParameterTable (tokens [0 ], desc , False )
151
151
elif tokens [1 ].lower ().strip ().startswith ("multiple raster" ):
152
152
param = ParameterMultipleInput (tokens [0 ], desc , ParameterMultipleInput .TYPE_RASTER )
153
153
param .optional = False
154
- try :
155
- lib = tokens [1 ].strip ()[len ("multiple raster" )+ 1 :]
156
- if lib == "R.raster" :
157
- self .useRraster = True
158
- else :
159
- self .useRraster = False
160
- except :
161
- self .useRraster = False
162
154
elif tokens [1 ].lower ().strip () == "multiple vector" :
163
155
param = ParameterMultipleInput (tokens [0 ], desc , ParameterMultipleInput .TYPE_VECTOR_ANY )
164
156
param .optional = False
@@ -279,15 +271,17 @@ def getImportCommands(self):
279
271
commands .append (
280
272
'tryCatch(find.package("rgdal"), error=function(e) install.packages("rgdal", lib="%s"))' % rLibDir )
281
273
commands .append ("library(\" rgdal\" )" );
282
- if self .useRraster :
274
+ if self .useRasterPackage :
283
275
commands .append (
284
276
'tryCatch(find.package("raster"), error=function(e) install.packages("raster", lib="%s"))' % rLibDir )
285
277
commands .append ("library(\" raster\" )" );
286
278
for param in self .parameters :
287
279
if isinstance (param , ParameterRaster ):
288
280
value = param .value
289
281
value = value .replace ("\\ " , "/" )
290
- if self .useRraster :
282
+ if self .passFileNames :
283
+ commands .append (param .name + " = " + value )
284
+ elif self .useRasterPackage :
291
285
commands .append (param .name + " = " + "brick(\" " + value + "\" )" )
292
286
else :
293
287
commands .append (param .name + " = " + "readGDAL(\" " + value + "\" )" )
@@ -297,44 +291,55 @@ def getImportCommands(self):
297
291
filename = os .path .basename (value )
298
292
filename = filename [:- 4 ]
299
293
folder = os .path .dirname (value )
300
- commands .append (param .name + " = readOGR(\" " + folder + "\" ,layer=\" " + filename + "\" )" )
294
+ if self .passFileNames :
295
+ commands .append (param .name + " = " + value )
296
+ else :
297
+ commands .append (param .name + " = readOGR(\" " + folder + "\" ,layer=\" " + filename + "\" )" )
301
298
if isinstance (param , ParameterTable ):
302
- value = param .value
299
+ value = param .value
303
300
if not value .lower ().endswith ("csv" ):
304
301
raise GeoAlgorithmExecutionException ("Unsupported input file format.\n " + value )
305
- commands .append (param .name + " <- read.csv(\" " + value + "\" , head=TRUE, sep=\" ,\" )" )
306
- if isinstance (param , (ParameterTableField , ParameterString )):
302
+ if self .passFileNames :
303
+ commands .append (param .name + " = " + value )
304
+ else :
305
+ commands .append (param .name + " <- read.csv(\" " + value + "\" , head=TRUE, sep=\" ,\" )" )
306
+ elif isinstance (param , (ParameterTableField , ParameterString , ParameterFile )):
307
307
commands .append (param .name + "=\" " + param .value + "\" " )
308
- if isinstance (param , (ParameterNumber , ParameterSelection )):
308
+ elif isinstance (param , (ParameterNumber , ParameterSelection )):
309
309
commands .append (param .name + "=" + str (param .value ))
310
- if isinstance (param , ParameterBoolean ):
310
+ elif isinstance (param , ParameterBoolean ):
311
311
if param .value :
312
312
commands .append (param .name + "=TRUE" )
313
313
else :
314
314
commands .append (param .name + "=FALSE" )
315
- if isinstance (param , ParameterMultipleInput ):
315
+ elif isinstance (param , ParameterMultipleInput ):
316
316
iLayer = 0 ;
317
317
if param .datatype == ParameterMultipleInput .TYPE_RASTER :
318
318
layers = param .value .split (";" )
319
319
for layer in layers :
320
- if not layer .lower ().endswith ("asc" ) and not layer .lower ().endswith ("tif" ):
321
- raise GeoAlgorithmExecutionException ("Unsupported input file format.\n " + layer )
320
+ # if not layer.lower().endswith("asc") and not layer.lower().endswith("tif") and not self.passFileNames :
321
+ # raise GeoAlgorithmExecutionException("Unsupported input file format.\n" + layer)
322
322
layer = layer .replace ("\\ " , "/" )
323
- if self .useRraster :
324
- commands .append ("tempvar" + str (iLayer )+ " = " + "brick(\" " + layer + "\" " )
323
+ if self .passFileNames :
324
+ commands .append ("tempvar" + str (iLayer )+ " = \" " + layer + "\" " )
325
+ elif self .useRasterPackage :
326
+ commands .append ("tempvar" + str (iLayer )+ " = " + "brick(\" " + layer + "\" )" )
325
327
else :
326
- commands .append ("tempvar" + str (iLayer )+ " = " + "readGDAL(\" " + layer + "\" " )
328
+ commands .append ("tempvar" + str (iLayer )+ " = " + "readGDAL(\" " + layer + "\" ) " )
327
329
iLayer += 1
328
330
else :
329
331
exported = param .getSafeExportedLayers ()
330
332
layers = exported .split (";" )
331
333
for layer in layers :
332
- if not layer .lower ().endswith ("shp" ):
334
+ if not layer .lower ().endswith ("shp" ) and not self . passFileNames :
333
335
raise GeoAlgorithmExecutionException ("Unsupported input file format.\n " + layer )
334
336
layer = layer .replace ("\\ " , "/" )
335
337
filename = os .path .basename (layer )
336
338
filename = filename [:- 4 ]
337
- commands .append ("tempvar" + str (iLayer ) + " = " + "readOGR(\" " + layer + "\" ,layer=\" " + filename + "\" )" )
339
+ if self .passFileNames :
340
+ commands .append ("tempvar" + str (iLayer )+ " = \" " + layer + "\" " )
341
+ else :
342
+ commands .append ("tempvar" + str (iLayer ) + " = " + "readOGR(\" " + layer + "\" ,layer=\" " + filename + "\" )" )
338
343
iLayer += 1
339
344
s = ""
340
345
s += param .name
0 commit comments