56
56
57
57
class GrassAlgorithm (GeoAlgorithm ):
58
58
59
-
60
-
59
+ GRASS_MIN_AREA_PARAMETER = "GRASS_MIN_AREA_PARAMETER"
60
+ GRASS_SNAP_TOLERANCE_PARAMETER = "GRASS_SNAP_TOLERANCE_PARAMETER"
61
61
GRASS_REGION_EXTENT_PARAMETER = "GRASS_REGION_PARAMETER"
62
62
GRASS_REGION_CELLSIZE_PARAMETER = "GRASS_REGION_CELLSIZE_PARAMETER"
63
63
@@ -123,7 +123,12 @@ def defineCharacteristicsFromFile(self):
123
123
try :
124
124
line = line .strip ("\n " ).strip ()
125
125
if line .startswith ("Parameter" ):
126
- self .addParameter (ParameterFactory .getFromString (line ))
126
+ parameter = ParameterFactory .getFromString (line );
127
+ self .addParameter (parameter )
128
+ if isinstance (parameter , ParameterVector ):
129
+ hasVectorOutput = True
130
+ if isinstance (parameter , ParameterMultipleInput ) and parameter .datatype < 3 :
131
+ hasVectorOutput = True
127
132
elif line .startswith ("*Parameter" ):
128
133
param = ParameterFactory .getFromString (line [1 :])
129
134
param .isAdvanced = True
@@ -142,7 +147,13 @@ def defineCharacteristicsFromFile(self):
142
147
self .addParameter (ParameterExtent (self .GRASS_REGION_EXTENT_PARAMETER , "GRASS region extent" ))
143
148
if hasRasterOutput :
144
149
self .addParameter (ParameterNumber (self .GRASS_REGION_CELLSIZE_PARAMETER , "GRASS region cellsize (leave 0 for default)" , 0 , None , 0.0 ))
145
-
150
+ if hasVectorOutput :
151
+ param = ParameterNumber (self .GRASS_SNAP_TOLERANCE_PARAMETER , "v.in.ogr snap tolerance (-1 = no snap)" , - 1 , None , - 1.0 )
152
+ param .isAdvanced = True
153
+ self .addParameter (param )
154
+ ParameterNumber (self .GRASS_MIN_AREA_PARAMETER , "v.in.ogr min area" , 0 , None , 0.0001 )
155
+ param .isAdvanced = True
156
+ self .addParameter (param )
146
157
147
158
def getDefaultCellsize (self ):
148
159
cellsize = 0
@@ -252,7 +263,8 @@ def processAlgorithm(self, progress):
252
263
for param in self .parameters :
253
264
if param .value == None or param .value == "" :
254
265
continue
255
- if param .name == self .GRASS_REGION_CELLSIZE_PARAMETER or param .name == self .GRASS_REGION_EXTENT_PARAMETER :
266
+ if (param .name == self .GRASS_REGION_CELLSIZE_PARAMETER or param .name == self .GRASS_REGION_EXTENT_PARAMETER
267
+ or param .name == self .GRASS_MIN_AREA_PARAMETER or param .name == self .GRASS_SNAP_TOLERANCE_PARAMETER ):
256
268
continue
257
269
if isinstance (param , (ParameterRaster , ParameterVector )):
258
270
value = param .value
@@ -364,11 +376,14 @@ def exportVectorLayer(self, orgFilename):
364
376
destFilename = self .getTempFilename ()
365
377
self .exportedLayers [orgFilename ]= destFilename
366
378
command = "v.in.ogr"
367
- command += " min_area=-1"
368
- command += " dsn=\" " + os .path .dirname (filename ) + "\" "
369
- command += " layer=" + os .path .basename (filename )[:- 4 ]
370
- command += " output=" + destFilename ;
371
- command += " --overwrite -o"
379
+ min_area = self .getParameterValue (self .GRASS_MIN_AREA_PARAMETER );
380
+ command += " min_area=" + str (min_area )
381
+ snap = self .getParameterValue (self .GRASS_SNAP_TOLERANCE_PARAMETER );
382
+ command += " snap=" + str (snap )
383
+ command += " dsn=\" " + os .path .dirname (filename ) + "\" "
384
+ command += " layer=" + os .path .basename (filename )[:- 4 ]
385
+ command += " output=" + destFilename ;
386
+ command += " --overwrite -o"
372
387
return command
373
388
374
389
def setSessionProjectionFromProject (self , commands ):
0 commit comments