[processing] refactor ogr buffer algorithm

This commit is contained in:
Alexander Bruy 2016-09-16 12:02:56 +03:00
parent 448961b35d
commit 8bf95fea5e
2 changed files with 22 additions and 25 deletions

View File

@ -75,43 +75,40 @@ class Ogr2OgrBuffer(GdalAlgorithm):
def getConsoleCommands(self): def getConsoleCommands(self):
inLayer = self.getParameterValue(self.INPUT_LAYER) inLayer = self.getParameterValue(self.INPUT_LAYER)
ogrLayer = ogrConnectionString(inLayer)[1:-1] geometry = self.getParameterValue(self.GEOMETRY)
layername = "'" + ogrLayerName(inLayer) + "'" distance = self.getParameterValue(self.DISTANCE)
geometry = unicode(self.getParameterValue(self.GEOMETRY))
distance = unicode(self.getParameterValue(self.DISTANCE))
dissolveall = self.getParameterValue(self.DISSOLVEALL) dissolveall = self.getParameterValue(self.DISSOLVEALL)
field = unicode(self.getParameterValue(self.FIELD)) field = self.getParameterValue(self.FIELD)
multi = self.getParameterValue(self.MULTI) multi = self.getParameterValue(self.MULTI)
options = self.getParameterValue(self.OPTIONS)
ogrLayer = ogrConnectionString(inLayer)[1:-1]
layername = ogrLayerName(inLayer)
output = self.getOutputFromName(self.OUTPUT_LAYER) output = self.getOutputFromName(self.OUTPUT_LAYER)
outFile = output.value outFile = output.value
output = ogrConnectionString(outFile) output = ogrConnectionString(outFile)
options = unicode(self.getParameterValue(self.OPTIONS))
arguments = [] arguments = []
arguments.append(output) arguments.append(output)
arguments.append(ogrLayer) arguments.append(ogrLayer)
arguments.append(ogrLayerName(inLayer)) arguments.append(ogrLayerName(inLayer))
if dissolveall or field != 'None': arguments.append('-dialect')
arguments.append('-dialect sqlite -sql "SELECT ST_Union(ST_Buffer(') 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: else:
arguments.append('-dialect sqlite -sql "SELECT ST_Buffer(') sql = "SELECT ST_Buffer({}, {}), * FROM '{}'".format(geometry, distance, layername)
arguments.append(geometry)
arguments.append(',') if field is not None:
arguments.append(distance) sql = '{} GROUP BY {}'.format(sql, field)
if dissolveall or field != 'None':
arguments.append(')),*') arguments.append(sql)
else:
arguments.append('),*') if field is not None and multi:
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:
arguments.append('-explodecollections') arguments.append('-explodecollections')
if len(options) > 0: if len(options) > 0:

View File

@ -89,7 +89,7 @@ class OneSideBuffer(GdalAlgorithm):
options = self.getParameterValue(self.OPTIONS) options = self.getParameterValue(self.OPTIONS)
ogrLayer = ogrConnectionString(inLayer)[1:-1] ogrLayer = ogrConnectionString(inLayer)[1:-1]
layername = "'" + ogrLayerName(inLayer) + "'" layername = ogrLayerName(inLayer)
output = self.getOutputFromName(self.OUTPUT_LAYER) output = self.getOutputFromName(self.OUTPUT_LAYER)
outFile = output.value outFile = output.value