mirror of
https://github.com/qgis/QGIS.git
synced 2025-11-01 00:09:14 -04:00
Merge pull request #5436 from alexbruy/processing-gdal-memory
[processing] correctly handle layers without attributes in GDAL-based geoprocessing algorithms (fix #17287)
This commit is contained in:
commit
034baf1b53
@ -116,6 +116,11 @@ class Buffer(GdalAlgorithm):
|
||||
continue
|
||||
other_fields.append(f.name())
|
||||
|
||||
if other_fields:
|
||||
other_fields = ', {}'.format(','.join(other_fields))
|
||||
else:
|
||||
other_fields = ''
|
||||
|
||||
arguments = []
|
||||
arguments.append(output)
|
||||
arguments.append(ogrLayer)
|
||||
@ -124,9 +129,9 @@ class Buffer(GdalAlgorithm):
|
||||
arguments.append('-sql')
|
||||
|
||||
if dissolve or fieldName:
|
||||
sql = "SELECT ST_Union(ST_Buffer({}, {})) AS {}, {} FROM '{}'".format(geometry, distance, geometry, ','.join(other_fields), layerName)
|
||||
sql = "SELECT ST_Union(ST_Buffer({}, {})) AS {}{} FROM '{}'".format(geometry, distance, geometry, other_fields, layerName)
|
||||
else:
|
||||
sql = "SELECT ST_Buffer({}, {}) AS {}, {} FROM '{}'".format(geometry, distance, geometry, ','.join(other_fields), layerName)
|
||||
sql = "SELECT ST_Buffer({}, {}) AS {}{} FROM '{}'".format(geometry, distance, geometry, other_fields, layerName)
|
||||
|
||||
if fieldName:
|
||||
sql = '{} GROUP BY {}'.format(sql, fieldName)
|
||||
|
||||
@ -127,6 +127,11 @@ class Dissolve(GdalAlgorithm):
|
||||
|
||||
other_fields.append(f.name())
|
||||
|
||||
if other_fields:
|
||||
other_fields = ', {}'.format(','.join(other_fields))
|
||||
else:
|
||||
other_fields = ''
|
||||
|
||||
arguments = []
|
||||
arguments.append(output)
|
||||
arguments.append(ogrLayer)
|
||||
@ -148,12 +153,12 @@ class Dissolve(GdalAlgorithm):
|
||||
params = ','.join(tokens)
|
||||
if params:
|
||||
if self.parameterAsBool(parameters, self.KEEP_ATTRIBUTES, context):
|
||||
sql = "SELECT ST_Union({}) AS {}, {}, {} FROM {} GROUP BY {}".format(geometry, geometry, ','.join(other_fields), params, layerName, fieldName)
|
||||
sql = "SELECT ST_Union({}) AS {}{}, {} FROM {} GROUP BY {}".format(geometry, geometry, other_fields, params, layerName, fieldName)
|
||||
else:
|
||||
sql = "SELECT ST_Union({}) AS {}, {}, {} FROM {} GROUP BY {}".format(geometry, geometry, fieldName, params, layerName, fieldName)
|
||||
else:
|
||||
if self.parameterAsBool(parameters, self.KEEP_ATTRIBUTES, context):
|
||||
sql = "SELECT ST_Union({}) AS {}, {} FROM {} GROUP BY {}".format(geometry, geometry, ','.join(other_fields), layerName, fieldName)
|
||||
sql = "SELECT ST_Union({}) AS {}{} FROM {} GROUP BY {}".format(geometry, geometry, other_fields, layerName, fieldName)
|
||||
else:
|
||||
sql = "SELECT ST_Union({}) AS {}, {} FROM {} GROUP BY {}".format(geometry, geometry, fieldName, layerName, fieldName)
|
||||
|
||||
|
||||
@ -97,6 +97,11 @@ class OffsetCurve(GdalAlgorithm):
|
||||
continue
|
||||
other_fields.append(f.name())
|
||||
|
||||
if other_fields:
|
||||
other_fields = ', {}'.format(','.join(other_fields))
|
||||
else:
|
||||
other_fields = ''
|
||||
|
||||
arguments = []
|
||||
arguments.append(output)
|
||||
arguments.append(ogrLayer)
|
||||
@ -104,7 +109,7 @@ class OffsetCurve(GdalAlgorithm):
|
||||
arguments.append('sqlite')
|
||||
arguments.append('-sql')
|
||||
|
||||
sql = "SELECT ST_OffsetCurve({}, {}) AS {}, {} FROM '{}'".format(geometry, distance, geometry, ','.join(other_fields), layerName)
|
||||
sql = "SELECT ST_OffsetCurve({}, {}) AS {}{} FROM '{}'".format(geometry, distance, geometry, other_fields, layerName)
|
||||
arguments.append(sql)
|
||||
|
||||
if options:
|
||||
|
||||
@ -126,6 +126,11 @@ class OneSideBuffer(GdalAlgorithm):
|
||||
continue
|
||||
other_fields.append(f.name())
|
||||
|
||||
if other_fields:
|
||||
other_fields = ', {}'.format(','.join(other_fields))
|
||||
else:
|
||||
other_fields = ''
|
||||
|
||||
arguments = []
|
||||
arguments.append(output)
|
||||
arguments.append(ogrLayer)
|
||||
@ -134,9 +139,9 @@ class OneSideBuffer(GdalAlgorithm):
|
||||
arguments.append('-sql')
|
||||
|
||||
if dissolve or fieldName:
|
||||
sql = "SELECT ST_Union(ST_SingleSidedBuffer({}, {}, {})) AS {}, {} FROM '{}'".format(geometry, distance, side, geometry, ','.join(other_fields), layerName)
|
||||
sql = "SELECT ST_Union(ST_SingleSidedBuffer({}, {}, {})) AS {}{} FROM '{}'".format(geometry, distance, side, geometry, other_fields, layerName)
|
||||
else:
|
||||
sql = "SELECT ST_SingleSidedBuffer({}, {}, {}) AS {}, {} FROM '{}'".format(geometry, distance, side, geometry, ','.join(other_fields), layerName)
|
||||
sql = "SELECT ST_SingleSidedBuffer({}, {}, {}) AS {}{} FROM '{}'".format(geometry, distance, side, geometry, other_fields, layerName)
|
||||
|
||||
if fieldName:
|
||||
sql = '"{} GROUP BY {}"'.format(sql, fieldName)
|
||||
|
||||
@ -102,6 +102,11 @@ class PointsAlongLines(GdalAlgorithm):
|
||||
continue
|
||||
other_fields.append(f.name())
|
||||
|
||||
if other_fields:
|
||||
other_fields = ', {}'.format(','.join(other_fields))
|
||||
else:
|
||||
other_fields = ''
|
||||
|
||||
arguments = []
|
||||
arguments.append(output)
|
||||
arguments.append(ogrLayer)
|
||||
@ -109,7 +114,7 @@ class PointsAlongLines(GdalAlgorithm):
|
||||
arguments.append('sqlite')
|
||||
arguments.append('-sql')
|
||||
|
||||
sql = "SELECT ST_Line_Interpolate_Point({}, {}) AS {}, {} FROM '{}'".format(geometry, distance, geometry, ','.join(other_fields), layerName)
|
||||
sql = "SELECT ST_Line_Interpolate_Point({}, {}) AS {}{} FROM '{}'".format(geometry, distance, geometry, other_fields, layerName)
|
||||
arguments.append(sql)
|
||||
|
||||
if options:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user