mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-14 00:07:35 -04:00
[DBManager GPKG] Set appropriate icon for line layers
This commit is contained in:
parent
b58229009b
commit
984ec65fcd
@ -256,9 +256,9 @@ class TableItem(TreeItem):
|
||||
if geom_type is not None:
|
||||
if geom_type.find('POINT') != -1:
|
||||
return self.layerPointIcon
|
||||
elif geom_type.find('LINESTRING') != -1:
|
||||
elif geom_type.find('LINESTRING') != -1 or geom_type in ('CIRCULARSTRING', 'COMPOUNDCURVE', 'MULTICURVE'):
|
||||
return self.layerLineIcon
|
||||
elif geom_type.find('POLYGON') != -1:
|
||||
elif geom_type.find('POLYGON') != -1 or geom_type == 'MULTISURFACE':
|
||||
return self.layerPolygonIcon
|
||||
return self.layerUnknownIcon
|
||||
|
||||
|
@ -300,7 +300,31 @@ class GPKGDBConnector(DBConnector):
|
||||
geomtype_flatten = ogr.GT_Flatten(geomtype)
|
||||
else:
|
||||
geomtype_flatten = geomtype
|
||||
geomname = ogr.GeometryTypeToName(geomtype_flatten).upper()
|
||||
if geomtype_flatten == ogr.wkbPoint:
|
||||
geomname = 'POINT'
|
||||
elif geomtype_flatten == ogr.wkbLineString:
|
||||
geomname = 'LINESTRING'
|
||||
elif geomtype_flatten == ogr.wkbPolygon:
|
||||
geomname = 'POLYGON'
|
||||
elif geomtype_flatten == ogr.wkbMultiPoint:
|
||||
geomname = 'MULTIPOINT'
|
||||
elif geomtype_flatten == ogr.wkbMultiLineString:
|
||||
geomname = 'MULTILINESTRING'
|
||||
elif geomtype_flatten == ogr.wkbMultiPolygon:
|
||||
geomname = 'MULTIPOLYGON'
|
||||
elif geomtype_flatten == ogr.wkbGeometryCollection:
|
||||
geomname = 'GEOMETRYCOLLECTION'
|
||||
if self.gdal2:
|
||||
if geomtype_flatten == ogr.wkbCircularString:
|
||||
geomname = 'CIRCULARSTRING'
|
||||
elif geomtype_flatten == ogr.wkbCompoundCurve:
|
||||
geomname = 'COMPOUNDCURVE'
|
||||
elif geomtype_flatten == ogr.wkbCurvePolygon:
|
||||
geomname = 'CURVEPOLYGON'
|
||||
elif geomtype_flatten == ogr.wkbMultiCurve:
|
||||
geomname = 'MULTICURVE'
|
||||
elif geomtype_flatten == ogr.wkbMultiSurface:
|
||||
geomname = 'MULTISURFACE'
|
||||
geomdim = 'XY'
|
||||
if hasattr(ogr, 'GT_HasZ') and ogr.GT_HasZ(lyr.GetGeomType()):
|
||||
geomdim += 'Z'
|
||||
|
@ -127,7 +127,7 @@ class TestPyQgsDBManagerGpkg(unittest.TestCase):
|
||||
table = tables[0]
|
||||
self.assertEqual(table.name, 'testLayer')
|
||||
info = table.info()
|
||||
expected_html = """<div class="section"><h2>General info</h2><div><table><tr><td>Relation type: </td><td>Table </td></tr><tr><td>Rows: </td><td>1 </td></tr></table></div></div><div class="section"><h2>GeoPackage</h2><div><table><tr><td>Column: </td><td>geom </td></tr><tr><td>Geometry: </td><td>LINE STRING </td></tr><tr><td>Dimension: </td><td>XY </td></tr><tr><td>Spatial ref: </td><td>Undefined (-1) </td></tr><tr><td>Extent: </td><td>1.00000, 2.00000 - 3.00000, 4.00000 </td></tr></table><p><warning> No spatial index defined (<a href="action:spatialindex/create">create it</a>)</p></div></div><div class="section"><h2>Fields</h2><div><table class="header"><tr><th># </th><th>Name </th><th>Type </th><th>Null </th><th>Default </th></tr><tr><td>0 </td><td class="underline">fid </td><td>INTEGER </td><td>Y </td><td> </td></tr><tr><td>1 </td><td>geom </td><td>LINESTRING </td><td>Y </td><td> </td></tr><tr><td>2 </td><td>text_field </td><td>TEXT </td><td>Y </td><td> </td></tr></table></div></div>"""
|
||||
expected_html = """<div class="section"><h2>General info</h2><div><table><tr><td>Relation type: </td><td>Table </td></tr><tr><td>Rows: </td><td>1 </td></tr></table></div></div><div class="section"><h2>GeoPackage</h2><div><table><tr><td>Column: </td><td>geom </td></tr><tr><td>Geometry: </td><td>LINESTRING </td></tr><tr><td>Dimension: </td><td>XY </td></tr><tr><td>Spatial ref: </td><td>Undefined (-1) </td></tr><tr><td>Extent: </td><td>1.00000, 2.00000 - 3.00000, 4.00000 </td></tr></table><p><warning> No spatial index defined (<a href="action:spatialindex/create">create it</a>)</p></div></div><div class="section"><h2>Fields</h2><div><table class="header"><tr><th># </th><th>Name </th><th>Type </th><th>Null </th><th>Default </th></tr><tr><td>0 </td><td class="underline">fid </td><td>INTEGER </td><td>Y </td><td> </td></tr><tr><td>1 </td><td>geom </td><td>LINESTRING </td><td>Y </td><td> </td></tr><tr><td>2 </td><td>text_field </td><td>TEXT </td><td>Y </td><td> </td></tr></table></div></div>"""
|
||||
self.assertEqual(info.toHtml(), expected_html, info.toHtml())
|
||||
|
||||
connection.remove()
|
||||
@ -389,5 +389,45 @@ class TestPyQgsDBManagerGpkg(unittest.TestCase):
|
||||
|
||||
connection.remove()
|
||||
|
||||
def testAllGeometryTypes(self):
|
||||
|
||||
connection_name = 'testAllGeometryTypes'
|
||||
plugin = createDbPlugin('gpkg')
|
||||
uri = QgsDataSourceUri()
|
||||
|
||||
test_gpkg = os.path.join(self.basetestpath, 'testAllGeometryTypes.gpkg')
|
||||
ds = ogr.GetDriverByName('GPKG').CreateDataSource(test_gpkg)
|
||||
ds.CreateLayer('testPoint', geom_type=ogr.wkbPoint)
|
||||
ds.CreateLayer('testLineString', geom_type=ogr.wkbLineString)
|
||||
ds.CreateLayer('testPolygon', geom_type=ogr.wkbPolygon)
|
||||
ds.CreateLayer('testMultiPoint', geom_type=ogr.wkbMultiPoint)
|
||||
ds.CreateLayer('testMultiLineString', geom_type=ogr.wkbMultiLineString)
|
||||
ds.CreateLayer('testMultiPolygon', geom_type=ogr.wkbMultiPolygon)
|
||||
ds.CreateLayer('testGeometryCollection', geom_type=ogr.wkbGeometryCollection)
|
||||
|
||||
if int(gdal.VersionInfo('VERSION_NUM')) >= GDAL_COMPUTE_VERSION(2, 0, 0):
|
||||
ds.CreateLayer('testCircularString', geom_type=ogr.wkbCircularString)
|
||||
ds.CreateLayer('testCompoundCurve', geom_type=ogr.wkbCompoundCurve)
|
||||
ds.CreateLayer('testCurvePolygon', geom_type=ogr.wkbCurvePolygon)
|
||||
ds.CreateLayer('testMultiCurve', geom_type=ogr.wkbMultiCurve)
|
||||
ds.CreateLayer('testMultiSurface', geom_type=ogr.wkbMultiSurface)
|
||||
ds = None
|
||||
|
||||
uri.setDatabase(test_gpkg)
|
||||
self.assertTrue(plugin.addConnection(connection_name, uri))
|
||||
|
||||
connection = createDbPlugin('gpkg', connection_name)
|
||||
connection.connect()
|
||||
|
||||
db = connection.database()
|
||||
self.assertIsNotNone(db)
|
||||
|
||||
tables = db.tables()
|
||||
for i in range(len(tables)):
|
||||
table = tables[i]
|
||||
info = table.info()
|
||||
|
||||
connection.remove()
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
Loading…
x
Reference in New Issue
Block a user