Skip to content

Commit 285d4e0

Browse files
committed
Remove NAME parameter, use OUTPUT_FILE instead
For output to directory, OUTPUT_DIRECTORY destination parameter is used. For output to MBTiles file, OUTPUT_FILE destimation parameter is used.
1 parent ee63cff commit 285d4e0

File tree

1 file changed

+23
-15
lines changed

1 file changed

+23
-15
lines changed

python/plugins/processing/algs/qgis/TilesXYZ.py

+23-15
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ def writeTile(self, tile, image):
133133
return path
134134

135135
def close(self):
136-
return self.folder
136+
pass
137137

138138

139139
class MBTilesWriter:
@@ -212,18 +212,17 @@ def close(self):
212212
bounds = ','.join(map(str, self.extent))
213213
ds.ExecuteSQL("UPDATE metadata SET value='{}' WHERE name='bounds'".format(bounds))
214214
ds = None
215-
return self.filename
216215

217216

218217
class TilesXYZ(QgisAlgorithm):
219-
NAME = 'NAME'
220218
EXTENT = 'EXTENT'
221219
ZOOM_MIN = 'ZOOM_MIN'
222220
ZOOM_MAX = 'ZOOM_MAX'
223221
TILE_FORMAT = 'TILE_FORMAT'
224222
DPI = 'DPI'
225223
OUTPUT_FORMAT = 'OUTPUT_FORMAT'
226224
OUTPUT_DIRECTORY = 'OUTPUT_DIRECTORY'
225+
OUTPUT_FILE = 'OUTPUT_FILE'
227226

228227
def group(self):
229228
return self.tr('Raster tools')
@@ -232,9 +231,6 @@ def groupId(self):
232231
return 'rastertools'
233232

234233
def initAlgorithm(self, config=None):
235-
self.addParameter(QgsProcessingParameterString(self.NAME,
236-
self.tr('Name'),
237-
defaultValue='Tiles'))
238234
self.addParameter(QgsProcessingParameterExtent(self.EXTENT, self.tr('Extent')))
239235
self.addParameter(QgsProcessingParameterNumber(self.ZOOM_MIN,
240236
self.tr('Minimum zoom'),
@@ -262,7 +258,12 @@ def initAlgorithm(self, config=None):
262258
self.outputs,
263259
defaultValue=0))
264260
self.addParameter(QgsProcessingParameterFolderDestination(self.OUTPUT_DIRECTORY,
265-
self.tr('Output directory')))
261+
self.tr('Output directory'),
262+
optional=True))
263+
self.addParameter(QgsProcessingParameterFileDestination(self.OUTPUT_FILE,
264+
self.tr('Output file (for MBTiles)'),
265+
self.tr('MBTiles files (*.mbtiles)'),
266+
optional=True))
266267

267268
def name(self):
268269
return 'tilesxyz'
@@ -279,14 +280,16 @@ def prepareAlgorithm(self, parameters, context, feedback):
279280
def processAlgorithm(self, parameters, context, feedback):
280281
feedback.setProgress(1)
281282

282-
name = self.parameterAsString(parameters, self.NAME, context)
283-
output_dir = self.parameterAsString(parameters, self.OUTPUT_DIRECTORY, context)
284283
extent = self.parameterAsExtent(parameters, self.EXTENT, context)
285284
min_zoom = self.parameterAsInt(parameters, self.ZOOM_MIN, context)
286285
max_zoom = self.parameterAsInt(parameters, self.ZOOM_MAX, context)
287286
dpi = self.parameterAsInt(parameters, self.DPI, context)
288287
tile_format = self.formats[self.parameterAsEnum(parameters, self.TILE_FORMAT, context)]
289288
output_format = self.outputs[self.parameterAsEnum(parameters, self.OUTPUT_FORMAT, context)]
289+
if output_format == 'Directory':
290+
output_dir = self.parameterAsString(parameters, self.OUTPUT_DIRECTORY, context)
291+
else: # MBTiles
292+
output_file = self.parameterAsString(parameters, self.OUTPUT_FILE, context)
290293
tile_width = 256
291294
tile_height = 256
292295

@@ -323,10 +326,9 @@ def processAlgorithm(self, parameters, context, feedback):
323326
'height': tile_height
324327
}
325328
if output_format == 'Directory':
326-
writer = DirectoryWriter(os.path.join(output_dir, name), tile_params)
329+
writer = DirectoryWriter(output_dir, tile_params)
327330
else:
328-
filename = os.path.join(output_dir, '%s.mbtiles' % name)
329-
writer = MBTilesWriter(filename, tile_params, wgs_extent, min_zoom, max_zoom)
331+
writer = MBTilesWriter(output_file, tile_params, wgs_extent, min_zoom, max_zoom)
330332

331333
for zoom in range(min_zoom, max_zoom + 1):
332334
feedback.pushConsoleInfo('Generating tiles for zoom level: %s' % zoom)
@@ -358,7 +360,7 @@ def processAlgorithm(self, parameters, context, feedback):
358360
painter.end()
359361

360362
# For analysing metatiles (labels, etc.)
361-
# metatile_dir = os.path.join(output_dir, name, str(zoom))
363+
# metatile_dir = os.path.join(output_dir, str(zoom))
362364
# os.makedirs(metatile_dir, exist_ok=True)
363365
# image.save(os.path.join(metatile_dir, 'metatile_%s.png' % i))
364366

@@ -369,8 +371,14 @@ def processAlgorithm(self, parameters, context, feedback):
369371
progress += 1
370372
feedback.setProgress(100 * (progress / metatiles_count))
371373

372-
output = writer.close()
373-
return {'OUTPUT': output}
374+
writer.close()
375+
376+
results = {}
377+
if output_format == 'Directory':
378+
results['OUTPUT_DIRECTORY'] = output_dir
379+
else: # MBTiles
380+
results['OUTPUT_FILE'] = output_file
381+
return results
374382

375383
def checkParameterValues(self, parameters, context):
376384
min_zoom = self.parameterAsInt(parameters, self.ZOOM_MIN, context)

0 commit comments

Comments
 (0)