Skip to content

Commit cac3b2d

Browse files
committedSep 14, 2016
[processing] refactor offset curve GDAL algorithm (fix #15478)
1 parent 89774ab commit cac3b2d

File tree

1 file changed

+28
-48
lines changed

1 file changed

+28
-48
lines changed
 

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

Lines changed: 28 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -84,69 +84,49 @@ def defineCharacteristics(self):
8484

8585
def getConsoleCommands(self):
8686
inLayer = self.getParameterValue(self.INPUT_LAYER)
87-
ogrLayer = ogrConnectionString(inLayer)[1:-1]
88-
layername = "'" + ogrLayerName(inLayer) + "'"
8987
operation = self.getParameterValue(self.OPERATION)
90-
geometry = unicode(self.getParameterValue(self.GEOMETRY))
91-
distance = unicode(self.getParameterValue(self.RADIUS))
92-
leftright = self.LEFTRIGHTLIST[self.getParameterValue(self.LEFTRIGHT)]
88+
geometry = self.getParameterValue(self.GEOMETRY)
89+
distance = self.getParameterValue(self.RADIUS)
90+
leftright = self.getParameterValue(self.LEFTRIGHT)
9391
dissolveall = self.getParameterValue(self.DISSOLVEALL)
94-
field = unicode(self.getParameterValue(self.FIELD))
92+
field = self.getParameterValue(self.FIELD)
9593
multi = self.getParameterValue(self.MULTI)
94+
options = self.getParameterValue(self.OPTIONS)
95+
96+
ogrLayer = ogrConnectionString(inLayer)[1:-1]
97+
layername = "'" + ogrLayerName(inLayer) + "'"
9698

9799
output = self.getOutputFromName(self.OUTPUT_LAYER)
98100
outFile = output.value
99-
100101
output = ogrConnectionString(outFile)
101-
options = unicode(self.getParameterValue(self.OPTIONS))
102+
103+
layername = ogrLayerName(inLayer)
102104

103105
arguments = []
104106
arguments.append(output)
105107
arguments.append(ogrLayer)
106-
arguments.append(ogrLayerName(inLayer))
107-
if dissolveall or field != 'None':
108+
arguments.append(layername)
109+
arguments.append('-dialect')
110+
arguments.append('sqlite')
111+
arguments.append('-sql')
112+
113+
if dissolveall or field is not None:
108114
if operation == 0:
109-
arguments.append('-dialect sqlite -sql "SELECT ST_Union(ST_SingleSidedBuffer(')
115+
sql = "SELECT ST_Union(ST_SingleSidedBuffer({}, {}, {})), * FROM '{}'".format(geometry, distance, leftright, layername)
110116
else:
111-
arguments.append('-dialect sqlite -sql "SELECT ST_Union(ST_OffsetCurve(')
117+
sql = "SELECT ST_Union(ST_OffsetCurve({}, {}, {})) * FROM '{}'".format(geometry, distance, leftright, layername)
112118
else:
113119
if operation == 0:
114-
arguments.append('-dialect sqlite -sql "SELECT ST_SingleSidedBuffer(')
115-
else:
116-
arguments.append('-dialect sqlite -sql "SELECT ST_OffsetCurve(')
117-
arguments.append(geometry)
118-
arguments.append(',')
119-
arguments.append(distance)
120-
if dissolveall or field != 'None':
121-
if leftright == 'Left':
122-
if operation == 0:
123-
arguments.append(',0)),*')
124-
else:
125-
arguments.append(')),*')
126-
else:
127-
if operation == 0:
128-
arguments.append(',1)),*')
129-
else:
130-
arguments.append(')),*')
131-
else:
132-
if leftright == 'Left':
133-
if operation == 0:
134-
arguments.append(',0),*')
135-
else:
136-
arguments.append('),*')
120+
sql = "SELECT ST_SingleSidedBuffer({},{},{}), * FROM '{}'".format(geometry, distance, leftright, layername)
137121
else:
138-
if operation == 0:
139-
arguments.append(',1),*')
140-
else:
141-
arguments.append('),*')
142-
arguments.append('FROM')
143-
arguments.append(layername)
144-
if field != 'None':
145-
arguments.append('GROUP')
146-
arguments.append('BY')
147-
arguments.append(field)
148-
arguments.append('"')
149-
if field != 'None' and multi:
122+
sql = "SELECT ST_OffsetCurve({}, {}, {}), * FROM '{}'".format(geometry, distance, leftright, layername)
123+
124+
if field is not None:
125+
sql = '"{} GROUP BY {}"'.format(sql, field)
126+
127+
arguments.append(sql)
128+
129+
if field is not None and multi:
150130
arguments.append('-explodecollections')
151131

152132
if len(options) > 0:
@@ -162,4 +142,4 @@ def getConsoleCommands(self):
162142
return commands
163143

164144
def commandName(self):
165-
return "ogr2ogr"
145+
return 'ogr2ogr'

0 commit comments

Comments
 (0)
Please sign in to comment.