mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-28 00:17:30 -05:00
[processing] fix #21958 used sqlite3 module instead of GDAL/ORG's SQLite driver
This commit is contained in:
parent
346cb388cf
commit
b1106b9f1e
@ -29,8 +29,8 @@ import os
|
||||
import math
|
||||
from uuid import uuid4
|
||||
|
||||
import ogr
|
||||
import gdal
|
||||
import sqlite3
|
||||
from qgis.PyQt.QtCore import QSize, Qt, QByteArray, QBuffer
|
||||
from qgis.PyQt.QtGui import QColor, QImage, QPainter
|
||||
from qgis.core import (QgsProcessingException,
|
||||
@ -153,15 +153,22 @@ class MBTilesWriter:
|
||||
driver = gdal.GetDriverByName('MBTiles')
|
||||
ds = driver.Create(filename, 1, 1, 1, options=['TILE_FORMAT=%s' % tile_format] + options)
|
||||
ds = None
|
||||
sqlite_driver = ogr.GetDriverByName('SQLite')
|
||||
ds = sqlite_driver.Open(filename, 1)
|
||||
ds.ExecuteSQL("INSERT INTO metadata(name, value) VALUES ('{}', '{}');".format('minzoom', min_zoom))
|
||||
ds.ExecuteSQL("INSERT INTO metadata(name, value) VALUES ('{}', '{}');".format('maxzoom', max_zoom))
|
||||
# will be set properly after writing all tiles
|
||||
ds.ExecuteSQL("INSERT INTO metadata(name, value) VALUES ('{}', '');".format('bounds'))
|
||||
ds = None
|
||||
|
||||
self._execute_sqlite(
|
||||
"INSERT INTO metadata(name, value) VALUES ('{}', '{}');".format('minzoom', min_zoom),
|
||||
"INSERT INTO metadata(name, value) VALUES ('{}', '{}');".format('maxzoom', max_zoom),
|
||||
# will be set properly after writing all tiles
|
||||
"INSERT INTO metadata(name, value) VALUES ('{}', '');".format('bounds')
|
||||
)
|
||||
self._zoom = None
|
||||
|
||||
def _execute_sqlite(self, *commands):
|
||||
conn = sqlite3.connect(self.filename)
|
||||
for cmd in commands:
|
||||
conn.execute(cmd)
|
||||
conn.commit()
|
||||
conn.close()
|
||||
|
||||
def _initZoomLayer(self, zoom):
|
||||
west_edge, south_edge, east_edge, north_edge = self.extent
|
||||
first_tile = Tile(*deg2num(north_edge, west_edge, zoom), zoom)
|
||||
@ -176,11 +183,8 @@ class MBTilesWriter:
|
||||
first_tile_extent[3]
|
||||
]
|
||||
|
||||
sqlite_driver = ogr.GetDriverByName('SQLite')
|
||||
ds = sqlite_driver.Open(self.filename, 1)
|
||||
bounds = ','.join(map(str, zoom_extent))
|
||||
ds.ExecuteSQL("UPDATE metadata SET value='{}' WHERE name='bounds'".format(bounds))
|
||||
ds = None
|
||||
self._execute_sqlite("UPDATE metadata SET value='{}' WHERE name='bounds'".format(bounds))
|
||||
|
||||
self._zoomDs = gdal.OpenEx(self.filename, 1, open_options=['ZOOM_LEVEL=%s' % first_tile.z])
|
||||
self._first_tile = first_tile
|
||||
@ -207,11 +211,8 @@ class MBTilesWriter:
|
||||
|
||||
def close(self):
|
||||
self._zoomDs = None
|
||||
sqlite_driver = ogr.GetDriverByName('SQLite')
|
||||
ds = sqlite_driver.Open(self.filename, 1)
|
||||
bounds = ','.join(map(str, self.extent))
|
||||
ds.ExecuteSQL("UPDATE metadata SET value='{}' WHERE name='bounds'".format(bounds))
|
||||
ds = None
|
||||
self._execute_sqlite("UPDATE metadata SET value='{}' WHERE name='bounds'".format(bounds))
|
||||
|
||||
|
||||
class TilesXYZ(QgisAlgorithm):
|
||||
@ -309,6 +310,8 @@ class TilesXYZ(QgisAlgorithm):
|
||||
settings.setDestinationCrs(dest_crs)
|
||||
settings.setLayers(self.layers)
|
||||
settings.setOutputDpi(dpi)
|
||||
if tile_format == 'PNG':
|
||||
settings.setBackgroundColor(QColor(Qt.transparent))
|
||||
|
||||
wgs_extent = src_to_wgs.transformBoundingBox(extent)
|
||||
wgs_extent = [wgs_extent.xMinimum(), wgs_extent.yMinimum(), wgs_extent.xMaximum(), wgs_extent.yMaximum()]
|
||||
|
Loading…
x
Reference in New Issue
Block a user