Skip to content

Commit a1bff29

Browse files
committedOct 25, 2016
[DBManager] Remove geopackage support from spatialite plugin
1 parent e08f981 commit a1bff29

File tree

3 files changed

+9
-94
lines changed

3 files changed

+9
-94
lines changed
 

‎python/plugins/db_manager/db_plugins/spatialite/connector.py

Lines changed: 2 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ def __init__(self, uri):
5050

5151
self._checkSpatial()
5252
self._checkRaster()
53-
self._checkGeopackage()
5453

5554
def _connectionInfo(self):
5655
return unicode(self.dbname)
@@ -87,11 +86,6 @@ def _checkRaster(self):
8786
self.has_raster = self._checkRasterTables()
8887
return self.has_raster
8988

90-
def _checkGeopackage(self):
91-
""" check if it's a geopackage db """
92-
self.is_gpkg = self._checkGeopackageTables()
93-
return self.is_gpkg
94-
9589
def _checkGeometryColumnsTable(self):
9690
try:
9791
c = self._get_cursor()
@@ -113,36 +107,6 @@ def _checkRasterTables(self):
113107
ret = c.fetchone()
114108
return ret and ret[0]
115109

116-
def _checkGeopackageTables(self):
117-
try:
118-
sql = u"SELECT HasGeoPackage()"
119-
result = self._execute(None, sql).fetchone()[0] == 1
120-
except ConnectionError:
121-
result = False
122-
except Exception:
123-
# SpatiaLite < 4.2 does not have HasGeoPackage() function
124-
result = False
125-
126-
if result:
127-
try:
128-
sql = u"SELECT CheckGeoPackageMetaData()"
129-
result = self._execute(None, sql).fetchone()[0] == 1
130-
except ConnectionError:
131-
result = False
132-
else:
133-
# Spatialite < 4.2 has no GeoPackage support, check for filename and GPKG layout
134-
ver = map(int, self.getInfo()[0].split('.')[0:2])
135-
if ver[0] < 4 or (ver[0] == 4 and ver[1] < 2):
136-
hasGpkgFileExt = self.dbname[-5:] == ".gpkg" or self.dbname[-11:] == ".geopackage"
137-
138-
sql = u"SELECT count(*) = 3 FROM sqlite_master WHERE name IN ('gpkg_geometry_columns', 'gpkg_spatial_ref_sys', 'gpkg_contents')"
139-
ret = self._execute(None, sql).fetchone()
140-
hasGpkgLayout = ret and ret[0]
141-
142-
result = hasGpkgFileExt and hasGpkgLayout
143-
144-
return result
145-
146110
def getInfo(self):
147111
c = self._get_cursor()
148112
self._execute(c, u"SELECT sqlite_version()")
@@ -154,7 +118,7 @@ def getSpatialInfo(self):
154118
- geos version
155119
- proj version
156120
"""
157-
if not self.has_spatial and not self.is_gpkg:
121+
if not self.has_spatial:
158122
return
159123

160124
c = self._get_cursor()
@@ -182,9 +146,6 @@ def hasTableColumnEditingSupport(self):
182146
def hasCreateSpatialViewSupport(self):
183147
return True
184148

185-
def isGpkg(self):
186-
return self.is_gpkg
187-
188149
def fieldTypes(self):
189150
return [
190151
"integer", "bigint", "smallint", # integers
@@ -302,14 +263,6 @@ def getVectorTables(self, schema=None):
302263
WHERE m.type in ('table', 'view')
303264
ORDER BY m.name, g.f_geometry_column""" % cols
304265

305-
elif self.is_gpkg:
306-
# get info from gpkg_geometry_columns table
307-
dim = " 'XY' || CASE z WHEN 1 THEN 'Z' END || CASE m WHEN 1 THEN 'M' END AS coord_dimension "
308-
sql = u"""SELECT m.name, m.type = 'view', g.table_name, g.column_name, g.geometry_type_name AS gtype, %s, g.srs_id
309-
FROM sqlite_master AS m JOIN gpkg_geometry_columns AS g ON upper(m.name) = upper(g.table_name)
310-
WHERE m.type in ('table', 'view')
311-
ORDER BY m.name, g.column_name""" % dim
312-
313266
else:
314267
return []
315268

@@ -335,8 +288,6 @@ def getRasterTables(self, schema=None):
335288
srid
336289
"""
337290

338-
if self.is_gpkg:
339-
return [] # Not implemented
340291
if not self.has_geometry_columns:
341292
return []
342293
if not self.has_raster:
@@ -442,10 +393,7 @@ def getViewDefinition(self, view):
442393
return ret[0] if ret is not None else None
443394

444395
def getSpatialRefInfo(self, srid):
445-
if self.is_gpkg:
446-
sql = u"SELECT srs_name FROM gpkg_spatial_ref_sys WHERE srs_id = %s" % self.quoteString(srid)
447-
else:
448-
sql = u"SELECT ref_sys_name FROM spatial_ref_sys WHERE srid = %s" % self.quoteString(srid)
396+
sql = u"SELECT ref_sys_name FROM spatial_ref_sys WHERE srid = %s" % self.quoteString(srid)
449397
c = self._execute(None, sql)
450398
ret = c.fetchone()
451399
return ret[0] if ret is not None else None
@@ -498,8 +446,6 @@ def deleteTable(self, table):
498446
""" delete table from the database """
499447
if self.isRasterTable(table):
500448
return False
501-
if self.is_gpkg:
502-
return False # Not implemented
503449

504450
c = self._get_cursor()
505451
sql = u"DROP TABLE %s" % self.quoteId(table)
@@ -513,8 +459,6 @@ def emptyTable(self, table):
513459
""" delete all rows from table """
514460
if self.isRasterTable(table):
515461
return False
516-
if self.is_gpkg:
517-
return False # Not implemented
518462

519463
sql = u"DELETE FROM %s" % self.quoteId(table)
520464
self._execute_and_commit(sql)
@@ -527,8 +471,6 @@ def renameTable(self, table, new_table):
527471

528472
if self.isRasterTable(table):
529473
return False
530-
if self.is_gpkg:
531-
return False # Not implemented
532474

533475
c = self._get_cursor()
534476

@@ -568,8 +510,6 @@ def renameView(self, view, new_name):
568510
return self.renameTable(view, new_name)
569511

570512
def createSpatialView(self, view, query):
571-
if self.is_gpkg:
572-
return False # Not implemented
573513

574514
self.createView(view, query)
575515
# get type info about the view
@@ -649,8 +589,6 @@ def setColumnNull(self, table, column, is_null):
649589
return False # column editing not supported
650590

651591
def isGeometryColumn(self, table, column):
652-
if self.is_gpkg:
653-
return False # Not implemented
654592

655593
c = self._get_cursor()
656594
schema, tablename = self.getSchemaTableName(table)
@@ -660,8 +598,6 @@ def isGeometryColumn(self, table, column):
660598
return c.fetchone()[0] == 't'
661599

662600
def addGeometryColumn(self, table, geom_column='geometry', geom_type='POINT', srid=-1, dim=2):
663-
if self.is_gpkg:
664-
return False # Not implemented
665601

666602
schema, tablename = self.getSchemaTableName(table)
667603
sql = u"SELECT AddGeometryColumn(%s, %s, %d, %s, %s)" % (
@@ -699,8 +635,6 @@ def deleteTableIndex(self, table, name):
699635
def createSpatialIndex(self, table, geom_column='geometry'):
700636
if self.isRasterTable(table):
701637
return False
702-
if self.is_gpkg:
703-
return False # Not implemented
704638

705639
schema, tablename = self.getSchemaTableName(table)
706640
sql = u"SELECT CreateSpatialIndex(%s, %s)" % (self.quoteString(tablename), self.quoteString(geom_column))
@@ -709,8 +643,6 @@ def createSpatialIndex(self, table, geom_column='geometry'):
709643
def deleteSpatialIndex(self, table, geom_column='geometry'):
710644
if self.isRasterTable(table):
711645
return False
712-
if self.is_gpkg:
713-
return False # Not implemented
714646

715647
schema, tablename = self.getSchemaTableName(table)
716648
try:
@@ -724,8 +656,6 @@ def deleteSpatialIndex(self, table, geom_column='geometry'):
724656
self.deleteTable(idx_table_name)
725657

726658
def hasSpatialIndex(self, table, geom_column='geometry'):
727-
if self.is_gpkg:
728-
return False # Not implemented
729659
if not self.has_geometry_columns or self.isRasterTable(table):
730660
return False
731661
c = self._get_cursor()

‎python/plugins/db_manager/db_plugins/spatialite/info_model.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,7 @@ def spatialInfo(self):
5858
]
5959
ret.append(HtmlTable(tbl))
6060

61-
if self.db.connector.is_gpkg:
62-
pass
63-
64-
elif not self.db.connector.has_geometry_columns:
61+
if not self.db.connector.has_geometry_columns:
6562
ret.append(HtmlParagraph(
6663
QApplication.translate("DBManagerPlugin", "<warning> geometry_columns table doesn't exist!\n"
6764
"This table is essential for many GIS applications for enumeration of tables.")))

‎python/plugins/db_manager/db_plugins/spatialite/plugin.py

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def typeName(self):
5151

5252
@classmethod
5353
def typeNameString(self):
54-
return 'SpatiaLite/Geopackage'
54+
return 'SpatiaLite'
5555

5656
@classmethod
5757
def providerName(self):
@@ -89,7 +89,7 @@ def addConnection(self, conn_name, uri):
8989
def addConnectionActionSlot(self, item, action, parent, index):
9090
QApplication.restoreOverrideCursor()
9191
try:
92-
filename = QFileDialog.getOpenFileName(parent, "Choose Sqlite/Spatialite/Geopackage file")
92+
filename = QFileDialog.getOpenFileName(parent, "Choose Sqlite/Spatialite file")
9393
if not filename:
9494
return
9595
finally:
@@ -183,21 +183,13 @@ def ogrUri(self):
183183
return ogrUri
184184

185185
def mimeUri(self):
186-
if self.database().connector.isGpkg():
187-
# QGIS has no provider to load Geopackage vectors, let's use OGR
188-
return u"vector:ogr:%s:%s" % (self.name, self.ogrUri())
189186
return Table.mimeUri(self)
190187

191188
def toMapLayer(self):
192189
from qgis.core import QgsVectorLayer
193190

194-
if self.database().connector.isGpkg():
195-
# QGIS has no provider to load Geopackage vectors, let's use OGR
196-
provider = "ogr"
197-
uri = self.ogrUri()
198-
else:
199-
provider = self.database().dbplugin().providerName()
200-
uri = self.uri().uri()
191+
provider = self.database().dbplugin().providerName()
192+
uri = self.uri().uri()
201193

202194
return QgsVectorLayer(uri, self.name, provider)
203195

@@ -282,12 +274,8 @@ def mimeUri(self):
282274
def toMapLayer(self):
283275
from qgis.core import QgsRasterLayer, QgsContrastEnhancement
284276

285-
if self.database().connector.isGpkg():
286-
# QGIS has no provider to load Geopackage rasters, let's use GDAL
287-
uri = self.ogrUri()
288-
else:
289-
# QGIS has no provider to load Rasterlite rasters, let's use GDAL
290-
uri = self.rasterliteGdalUri()
277+
# QGIS has no provider to load Rasterlite rasters, let's use GDAL
278+
uri = self.rasterliteGdalUri()
291279

292280
rl = QgsRasterLayer(uri, self.name)
293281
if rl.isValid():

0 commit comments

Comments
 (0)
Please sign in to comment.