@@ -85,52 +85,56 @@ def defineCharacteristics(self):
85
85
86
86
def getConsoleCommands (self ):
87
87
inLayer = self .getParameterValue (self .INPUT_LAYER )
88
- ogrLayer = ogrConnectionString (inLayer )[1 :- 1 ]
89
- layername = "'" + ogrLayerName (inLayer ) + "'"
90
- geometry = str (self .getParameterValue (self .GEOMETRY ))
91
- field = str (self .getParameterValue (self .FIELD ))
92
- statsatt = str (self .getParameterValue (self .STATSATT ))
93
- stats = self .getParameterValue (self .STATS )
94
- area = self .getParameterValue (self .AREA )
88
+ geometry = self .getParameterValue (self .GEOMETRY )
89
+ field = self .getParameterValue (self .FIELD )
95
90
multi = self .getParameterValue (self .MULTI )
96
- count = self .getParameterValue (self .COUNT )
97
91
fields = self .getParameterValue (self .FIELDS )
98
- querystart = '-dialect sqlite -sql "SELECT ST_Union(' + geometry + ')'
99
- queryend = ' FROM ' + layername + ' GROUP BY ' + field + '"'
100
- if fields :
101
- queryfields = ",*"
102
- else :
103
- queryfields = "," + field
104
- if count :
105
- querycount = ", COUNT(" + geometry + ") AS count"
106
- else :
107
- querycount = ""
108
- if stats :
109
- querystats = ", SUM(" + statsatt + ") AS sum_diss, MIN(" + statsatt + ") AS min_diss, MAX(" + statsatt + ") AS max_diss, AVG(" + statsatt + ") AS avg_diss"
110
- else :
111
- querystats = ""
112
- if area :
113
- queryarea = ", SUM(ST_area(" + geometry + ")) AS area_diss, ST_perimeter(ST_union(" + geometry + ")) AS peri_diss"
114
- else :
115
- queryarea = ""
92
+ count = self .getParameterValue (self .COUNT )
93
+ area = self .getParameterValue (self .AREA )
94
+ stats = self .getParameterValue (self .STATS )
95
+ statsatt = self .getParameterValue (self .STATSATT )
96
+ options = self .getParameterValue (self .OPTIONS )
97
+
98
+ ogrLayer = ogrConnectionString (inLayer )[1 :- 1 ]
99
+ layername = ogrLayerName (inLayer )
116
100
117
- query = querystart + queryfields + querycount + querystats + queryarea + queryend
118
101
output = self .getOutputFromName (self .OUTPUT_LAYER )
119
102
outFile = output .value
120
103
121
104
output = ogrConnectionString (outFile )
122
- options = str (self .getParameterValue (self .OPTIONS ))
123
105
124
106
arguments = []
125
107
arguments .append (output )
126
108
arguments .append (ogrLayer )
127
- arguments .append (ogrLayerName (inLayer ))
128
- arguments .append (query )
109
+ arguments .append ('-dialect' )
110
+ arguments .append ('sqlite' )
111
+ arguments .append ('-sql' )
112
+
113
+ sql = "SELECT ST_Union('{}')" .format (geometry )
114
+
115
+ sqlOpts = ''
116
+ if fields :
117
+ sqlOpts += ',*'
118
+ else :
119
+ sqlOpts += ',{}' .format (field )
120
+
121
+ if count :
122
+ sqlOpts += ", COUNT('{}') AS count" .format (geometry )
123
+
124
+ if stats :
125
+ sqlOpts += ", SUM('{0}') AS sum_diss, MIN('{0}') AS min_diss, MAX('{0}') AS max_diss, AVG('{0}') AS avg_diss" .format (statsatt )
126
+
127
+ if area :
128
+ sqlOpts += ", SUM(ST_Area('{0}')) AS area_diss, ST_Perimeter(ST_Union('{0}')) AS peri_diss" .format (geometry )
129
+
130
+ sql = '{}{} FROM {} GROUP BY {}' .format (sql , sqlOpts , layername , field )
131
+
132
+ arguments .append (sql )
129
133
130
134
if not multi :
131
135
arguments .append ('-explodecollections' )
132
136
133
- if len (options ) > 0 :
137
+ if options is not None and len (options ) > 0 :
134
138
arguments .append (options )
135
139
136
140
commands = []
@@ -143,4 +147,4 @@ def getConsoleCommands(self):
143
147
return commands
144
148
145
149
def commandName (self ):
146
- return " ogr2ogr"
150
+ return ' ogr2ogr'
0 commit comments