From 8bf95fea5e21528cee83e55d64239cf97148f62c Mon Sep 17 00:00:00 2001 From: Alexander Bruy Date: Fri, 16 Sep 2016 12:02:56 +0300 Subject: [PATCH] [processing] refactor ogr buffer algorithm --- .../processing/algs/gdal/ogr2ogrbuffer.py | 45 +++++++++---------- .../processing/algs/gdal/onesidebuffer.py | 2 +- 2 files changed, 22 insertions(+), 25 deletions(-) diff --git a/python/plugins/processing/algs/gdal/ogr2ogrbuffer.py b/python/plugins/processing/algs/gdal/ogr2ogrbuffer.py index 0854a0a87e0..475e6c2db58 100644 --- a/python/plugins/processing/algs/gdal/ogr2ogrbuffer.py +++ b/python/plugins/processing/algs/gdal/ogr2ogrbuffer.py @@ -75,43 +75,40 @@ class Ogr2OgrBuffer(GdalAlgorithm): def getConsoleCommands(self): inLayer = self.getParameterValue(self.INPUT_LAYER) - ogrLayer = ogrConnectionString(inLayer)[1:-1] - layername = "'" + ogrLayerName(inLayer) + "'" - geometry = unicode(self.getParameterValue(self.GEOMETRY)) - distance = unicode(self.getParameterValue(self.DISTANCE)) + geometry = self.getParameterValue(self.GEOMETRY) + distance = self.getParameterValue(self.DISTANCE) dissolveall = self.getParameterValue(self.DISSOLVEALL) - field = unicode(self.getParameterValue(self.FIELD)) + field = self.getParameterValue(self.FIELD) multi = self.getParameterValue(self.MULTI) + options = self.getParameterValue(self.OPTIONS) + + ogrLayer = ogrConnectionString(inLayer)[1:-1] + layername = ogrLayerName(inLayer) output = self.getOutputFromName(self.OUTPUT_LAYER) outFile = output.value output = ogrConnectionString(outFile) - options = unicode(self.getParameterValue(self.OPTIONS)) arguments = [] arguments.append(output) arguments.append(ogrLayer) arguments.append(ogrLayerName(inLayer)) - if dissolveall or field != 'None': - arguments.append('-dialect sqlite -sql "SELECT ST_Union(ST_Buffer(') + arguments.append('-dialect') + arguments.append('sqlite') + arguments.append('-sql') + + if dissolveall or field is not None: + sql = "SELECT ST_Union(ST_Buffer({}, {})), * FROM '{}'".format(geometry, distance, layername) else: - arguments.append('-dialect sqlite -sql "SELECT ST_Buffer(') - arguments.append(geometry) - arguments.append(',') - arguments.append(distance) - if dissolveall or field != 'None': - arguments.append(')),*') - else: - arguments.append('),*') - arguments.append('FROM') - arguments.append(layername) - if field != 'None': - arguments.append('GROUP') - arguments.append('BY') - arguments.append(field) - arguments.append('"') - if field != 'None' and multi: + sql = "SELECT ST_Buffer({}, {}), * FROM '{}'".format(geometry, distance, layername) + + if field is not None: + sql = '{} GROUP BY {}'.format(sql, field) + + arguments.append(sql) + + if field is not None and multi: arguments.append('-explodecollections') if len(options) > 0: diff --git a/python/plugins/processing/algs/gdal/onesidebuffer.py b/python/plugins/processing/algs/gdal/onesidebuffer.py index 870e9396b84..65b3a870a00 100644 --- a/python/plugins/processing/algs/gdal/onesidebuffer.py +++ b/python/plugins/processing/algs/gdal/onesidebuffer.py @@ -89,7 +89,7 @@ class OneSideBuffer(GdalAlgorithm): options = self.getParameterValue(self.OPTIONS) ogrLayer = ogrConnectionString(inLayer)[1:-1] - layername = "'" + ogrLayerName(inLayer) + "'" + layername = ogrLayerName(inLayer) output = self.getOutputFromName(self.OUTPUT_LAYER) outFile = output.value