Skip to content

Commit 034baf1

Browse files
authoredOct 26, 2017
Merge pull request #5436 from alexbruy/processing-gdal-memory
[processing] correctly handle layers without attributes in GDAL-based geoprocessing algorithms (fix #17287)
2 parents 8c32520 + 4a51c40 commit 034baf1

File tree

5 files changed

+33
-8
lines changed

5 files changed

+33
-8
lines changed
 

‎python/plugins/processing/algs/gdal/Buffer.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,11 @@ def getConsoleCommands(self, parameters, context, feedback):
116116
continue
117117
other_fields.append(f.name())
118118

119+
if other_fields:
120+
other_fields = ', {}'.format(','.join(other_fields))
121+
else:
122+
other_fields = ''
123+
119124
arguments = []
120125
arguments.append(output)
121126
arguments.append(ogrLayer)
@@ -124,9 +129,9 @@ def getConsoleCommands(self, parameters, context, feedback):
124129
arguments.append('-sql')
125130

126131
if dissolve or fieldName:
127-
sql = "SELECT ST_Union(ST_Buffer({}, {})) AS {}, {} FROM '{}'".format(geometry, distance, geometry, ','.join(other_fields), layerName)
132+
sql = "SELECT ST_Union(ST_Buffer({}, {})) AS {}{} FROM '{}'".format(geometry, distance, geometry, other_fields, layerName)
128133
else:
129-
sql = "SELECT ST_Buffer({}, {}) AS {}, {} FROM '{}'".format(geometry, distance, geometry, ','.join(other_fields), layerName)
134+
sql = "SELECT ST_Buffer({}, {}) AS {}{} FROM '{}'".format(geometry, distance, geometry, other_fields, layerName)
130135

131136
if fieldName:
132137
sql = '{} GROUP BY {}'.format(sql, fieldName)

‎python/plugins/processing/algs/gdal/Dissolve.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,11 @@ def getConsoleCommands(self, parameters, context, feedback):
127127

128128
other_fields.append(f.name())
129129

130+
if other_fields:
131+
other_fields = ', {}'.format(','.join(other_fields))
132+
else:
133+
other_fields = ''
134+
130135
arguments = []
131136
arguments.append(output)
132137
arguments.append(ogrLayer)
@@ -148,12 +153,12 @@ def getConsoleCommands(self, parameters, context, feedback):
148153
params = ','.join(tokens)
149154
if params:
150155
if self.parameterAsBool(parameters, self.KEEP_ATTRIBUTES, context):
151-
sql = "SELECT ST_Union({}) AS {}, {}, {} FROM {} GROUP BY {}".format(geometry, geometry, ','.join(other_fields), params, layerName, fieldName)
156+
sql = "SELECT ST_Union({}) AS {}{}, {} FROM {} GROUP BY {}".format(geometry, geometry, other_fields, params, layerName, fieldName)
152157
else:
153158
sql = "SELECT ST_Union({}) AS {}, {}, {} FROM {} GROUP BY {}".format(geometry, geometry, fieldName, params, layerName, fieldName)
154159
else:
155160
if self.parameterAsBool(parameters, self.KEEP_ATTRIBUTES, context):
156-
sql = "SELECT ST_Union({}) AS {}, {} FROM {} GROUP BY {}".format(geometry, geometry, ','.join(other_fields), layerName, fieldName)
161+
sql = "SELECT ST_Union({}) AS {}{} FROM {} GROUP BY {}".format(geometry, geometry, other_fields, layerName, fieldName)
157162
else:
158163
sql = "SELECT ST_Union({}) AS {}, {} FROM {} GROUP BY {}".format(geometry, geometry, fieldName, layerName, fieldName)
159164

‎python/plugins/processing/algs/gdal/OffsetCurve.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,14 +97,19 @@ def getConsoleCommands(self, parameters, context, feedback):
9797
continue
9898
other_fields.append(f.name())
9999

100+
if other_fields:
101+
other_fields = ', {}'.format(','.join(other_fields))
102+
else:
103+
other_fields = ''
104+
100105
arguments = []
101106
arguments.append(output)
102107
arguments.append(ogrLayer)
103108
arguments.append('-dialect')
104109
arguments.append('sqlite')
105110
arguments.append('-sql')
106111

107-
sql = "SELECT ST_OffsetCurve({}, {}) AS {}, {} FROM '{}'".format(geometry, distance, geometry, ','.join(other_fields), layerName)
112+
sql = "SELECT ST_OffsetCurve({}, {}) AS {}{} FROM '{}'".format(geometry, distance, geometry, other_fields, layerName)
108113
arguments.append(sql)
109114

110115
if options:

‎python/plugins/processing/algs/gdal/OneSideBuffer.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,11 @@ def getConsoleCommands(self, parameters, context, feedback):
126126
continue
127127
other_fields.append(f.name())
128128

129+
if other_fields:
130+
other_fields = ', {}'.format(','.join(other_fields))
131+
else:
132+
other_fields = ''
133+
129134
arguments = []
130135
arguments.append(output)
131136
arguments.append(ogrLayer)
@@ -134,9 +139,9 @@ def getConsoleCommands(self, parameters, context, feedback):
134139
arguments.append('-sql')
135140

136141
if dissolve or fieldName:
137-
sql = "SELECT ST_Union(ST_SingleSidedBuffer({}, {}, {})) AS {}, {} FROM '{}'".format(geometry, distance, side, geometry, ','.join(other_fields), layerName)
142+
sql = "SELECT ST_Union(ST_SingleSidedBuffer({}, {}, {})) AS {}{} FROM '{}'".format(geometry, distance, side, geometry, other_fields, layerName)
138143
else:
139-
sql = "SELECT ST_SingleSidedBuffer({}, {}, {}) AS {}, {} FROM '{}'".format(geometry, distance, side, geometry, ','.join(other_fields), layerName)
144+
sql = "SELECT ST_SingleSidedBuffer({}, {}, {}) AS {}{} FROM '{}'".format(geometry, distance, side, geometry, other_fields, layerName)
140145

141146
if fieldName:
142147
sql = '"{} GROUP BY {}"'.format(sql, fieldName)

‎python/plugins/processing/algs/gdal/PointsAlongLines.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,14 +102,19 @@ def getConsoleCommands(self, parameters, context, feedback):
102102
continue
103103
other_fields.append(f.name())
104104

105+
if other_fields:
106+
other_fields = ', {}'.format(','.join(other_fields))
107+
else:
108+
other_fields = ''
109+
105110
arguments = []
106111
arguments.append(output)
107112
arguments.append(ogrLayer)
108113
arguments.append('-dialect')
109114
arguments.append('sqlite')
110115
arguments.append('-sql')
111116

112-
sql = "SELECT ST_Line_Interpolate_Point({}, {}) AS {}, {} FROM '{}'".format(geometry, distance, geometry, ','.join(other_fields), layerName)
117+
sql = "SELECT ST_Line_Interpolate_Point({}, {}) AS {}{} FROM '{}'".format(geometry, distance, geometry, other_fields, layerName)
113118
arguments.append(sql)
114119

115120
if options:

0 commit comments

Comments
 (0)
Please sign in to comment.