mirror of
https://github.com/qgis/QGIS.git
synced 2025-12-07 00:03:52 -05:00
refresh the canvas at the end of the process,
handle unicode strings, escape sql ids and strings, fix minor errors
This commit is contained in:
parent
0796871efc
commit
e9907cdf25
@ -61,10 +61,18 @@ def run(item, action, mainwindow):
|
|||||||
conninfo = uri.connectionInfo()
|
conninfo = uri.connectionInfo()
|
||||||
iface = mainwindow.iface
|
iface = mainwindow.iface
|
||||||
|
|
||||||
|
quoteId = db.connector.quoteId
|
||||||
|
quoteStr = db.connector.quoteString
|
||||||
|
|
||||||
# check if the selected item is a topology schema
|
# check if the selected item is a topology schema
|
||||||
isTopoSchema = False
|
isTopoSchema = False
|
||||||
if hasattr(item, 'schema') and item.schema() != None:
|
|
||||||
sql = u"SELECT count(*) FROM topology.topology WHERE name = '%s'" % item.schema().name
|
if not hasattr(item, 'schema'):
|
||||||
|
QMessageBox.critical(mainwindow, "Invalid topology", u'Select a topology schema to continue.')
|
||||||
|
return False
|
||||||
|
|
||||||
|
if item.schema() != None:
|
||||||
|
sql = u"SELECT count(*) FROM topology.topology WHERE name = %s" % quoteStr(item.schema().name)
|
||||||
c = db.connector._get_cursor()
|
c = db.connector._get_cursor()
|
||||||
db.connector._execute( c, sql )
|
db.connector._execute( c, sql )
|
||||||
res = db.connector._fetchone( c )
|
res = db.connector._fetchone( c )
|
||||||
@ -80,48 +88,60 @@ def run(item, action, mainwindow):
|
|||||||
registry = QgsMapLayerRegistry.instance()
|
registry = QgsMapLayerRegistry.instance()
|
||||||
legend = iface.legendInterface()
|
legend = iface.legendInterface()
|
||||||
|
|
||||||
group = legend.addGroup(toponame + ' topology')
|
# do not refresh the canvas until all the layers are added
|
||||||
|
prevRenderFlagState = iface.mapCanvas().renderFlag()
|
||||||
|
iface.mapCanvas().setRenderFlag( False )
|
||||||
|
try:
|
||||||
|
group = legend.addGroup(u'%s topology' % toponame)
|
||||||
|
|
||||||
# node
|
# node
|
||||||
layer = db.toSqlLayer('SELECT * FROM "' + toponame + '".node', 'geom', 'node_id', toponame + '.nodes')
|
layer = db.toSqlLayer(u'SELECT * FROM %s.node' % quoteId(toponame),
|
||||||
|
'geom', 'node_id', u'%s.nodes' % toponame)
|
||||||
layer.loadNamedStyle(os.path.join(template_dir, 'node.qml'))
|
layer.loadNamedStyle(os.path.join(template_dir, 'node.qml'))
|
||||||
registry.addMapLayer(layer)
|
registry.addMapLayer(layer)
|
||||||
legend.moveLayer(layer, group)
|
legend.moveLayer(layer, group)
|
||||||
|
|
||||||
# edge
|
# edge
|
||||||
layer = db.toSqlLayer('SELECT * FROM "' + toponame + '".edge_data', 'geom', 'edge_id', toponame + '.edges')
|
layer = db.toSqlLayer(u'SELECT * FROM %s.edge_data' % quoteId(toponame),
|
||||||
|
'geom', 'edge_id', u'%s.edges' % toponame)
|
||||||
layer.loadNamedStyle(os.path.join(template_dir, 'edge_style.qml'))
|
layer.loadNamedStyle(os.path.join(template_dir, 'edge_style.qml'))
|
||||||
registry.addMapLayer(layer)
|
registry.addMapLayer(layer)
|
||||||
legend.moveLayer(layer, group)
|
legend.moveLayer(layer, group)
|
||||||
|
|
||||||
# face_left
|
# face_left
|
||||||
layer = db.toSqlLayer('SELECT * FROM "' + toponame + '".edge_data', 'geom', 'edge_id', toponame + '.face_left')
|
layer = db.toSqlLayer(u'SELECT * FROM %s.edge_data' % quoteId(toponame),
|
||||||
|
'geom', 'edge_id', u'%s.face_left' % toponame)
|
||||||
layer.loadNamedStyle(os.path.join(template_dir, 'face_left.qml'))
|
layer.loadNamedStyle(os.path.join(template_dir, 'face_left.qml'))
|
||||||
registry.addMapLayer(layer)
|
registry.addMapLayer(layer)
|
||||||
legend.moveLayer(layer, group)
|
legend.moveLayer(layer, group)
|
||||||
|
|
||||||
# face_right
|
# face_right
|
||||||
layer = db.toSqlLayer('SELECT * FROM "' + toponame + '".edge_data', 'geom', 'edge_id', toponame + '.face_right')
|
layer = db.toSqlLayer(u'SELECT * FROM %s.edge_data' % quoteId(toponame),
|
||||||
|
'geom', 'edge_id', u'%s.face_right' % toponame)
|
||||||
layer.loadNamedStyle(os.path.join(template_dir, 'face_right.qml'))
|
layer.loadNamedStyle(os.path.join(template_dir, 'face_right.qml'))
|
||||||
registry.addMapLayer(layer)
|
registry.addMapLayer(layer)
|
||||||
legend.moveLayer(layer, group)
|
legend.moveLayer(layer, group)
|
||||||
|
|
||||||
# next_left
|
# next_left
|
||||||
layer = db.toSqlLayer('SELECT * FROM "' + toponame + '".edge_data', 'geom', 'edge_id', toponame + '.next_left')
|
layer = db.toSqlLayer(u'SELECT * FROM %s.edge_data' % quoteId(toponame),
|
||||||
|
'geom', 'edge_id', u'%s.next_left' % toponame)
|
||||||
layer.loadNamedStyle(os.path.join(template_dir, 'next_left.qml'))
|
layer.loadNamedStyle(os.path.join(template_dir, 'next_left.qml'))
|
||||||
registry.addMapLayer(layer)
|
registry.addMapLayer(layer)
|
||||||
legend.setLayerVisible(layer, False)
|
legend.setLayerVisible(layer, False)
|
||||||
legend.moveLayer(layer, group)
|
legend.moveLayer(layer, group)
|
||||||
|
|
||||||
# next_right
|
# next_right
|
||||||
layer = db.toSqlLayer('SELECT * FROM "' + toponame + '".edge_data', 'geom', 'edge_id', toponame + '.next_right')
|
layer = db.toSqlLayer(u'SELECT * FROM %s.edge_data' % toponame,
|
||||||
|
'geom', 'edge_id', u'%s.next_right' % toponame)
|
||||||
layer.loadNamedStyle(os.path.join(template_dir, 'next_right.qml'))
|
layer.loadNamedStyle(os.path.join(template_dir, 'next_right.qml'))
|
||||||
registry.addMapLayer(layer)
|
registry.addMapLayer(layer)
|
||||||
legend.setLayerVisible(layer, False)
|
legend.setLayerVisible(layer, False)
|
||||||
legend.moveLayer(layer, group)
|
legend.moveLayer(layer, group)
|
||||||
|
|
||||||
# face_seed
|
# face_seed
|
||||||
layer = db.toSqlLayer('SELECT face_id, ST_PointOnSurface(topology.ST_GetFaceGeometry(\'' + toponame + '\', face_id)) as geom FROM "' + toponame + '".face WHERE face_id > 0', 'geom', 'face_id', toponame + '.face_seed')
|
layer = db.toSqlLayer(u'SELECT face_id, ST_PointOnSurface(topology.ST_GetFaceGeometry(%s, face_id)) as geom ' \
|
||||||
|
'FROM %s.face WHERE face_id > 0' % (quoteStr(toponame), quoteId(toponame)),
|
||||||
|
'geom', 'face_id', u'%s.face_seed' % toponame)
|
||||||
layer.loadNamedStyle(os.path.join(template_dir, 'face_seed.qml'))
|
layer.loadNamedStyle(os.path.join(template_dir, 'face_seed.qml'))
|
||||||
registry.addMapLayer(layer)
|
registry.addMapLayer(layer)
|
||||||
legend.setLayerVisible(layer, False)
|
legend.setLayerVisible(layer, False)
|
||||||
@ -129,7 +149,10 @@ def run(item, action, mainwindow):
|
|||||||
|
|
||||||
# TODO: add full faces ?
|
# TODO: add full faces ?
|
||||||
# TODO: add polygon0, polygon1 and polygon2 ?
|
# TODO: add polygon0, polygon1 and polygon2 ?
|
||||||
# TODO: disable signals while adding all layers, then send a single one
|
|
||||||
|
finally:
|
||||||
|
# restore canvas render flag
|
||||||
|
iface.mapCanvas().setRenderFlag( prevRenderFlagState )
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user