From d8a768f0a0b1926ead3b42c0fa9e12d35f8905f0 Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Mon, 22 Feb 2016 23:12:52 +0100 Subject: [PATCH] Make geometry typmod available for topology face layer queries Greatly improves performances on topology loading. See http://hub.qgis.org/issues/14356 --- .../postgis/plugins/qgis_topoview/__init__.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/python/plugins/db_manager/db_plugins/postgis/plugins/qgis_topoview/__init__.py b/python/plugins/db_manager/db_plugins/postgis/plugins/qgis_topoview/__init__.py index 17fb0008869..7777394bbe4 100644 --- a/python/plugins/db_manager/db_plugins/postgis/plugins/qgis_topoview/__init__.py +++ b/python/plugins/db_manager/db_plugins/postgis/plugins/qgis_topoview/__init__.py @@ -122,8 +122,10 @@ def run(item, action, mainwindow): face_extent = layer.extent() # face geometry - sql = u'SELECT face_id, topology.ST_GetFaceGeometry(%s, face_id) as geom ' \ - 'FROM %s.face WHERE face_id > 0' % (quoteStr(toponame), quoteId(toponame)) + sql = u'SELECT face_id, topology.ST_GetFaceGeometry(%s,' \ + 'face_id)::geometry(polygon, %s) as geom ' \ + 'FROM %s.face WHERE face_id > 0' % \ + (quoteStr(toponame), quoteId(toponame), toposrid) uri.setDataSource('', u'(%s\n)' % sql, 'geom', '', 'face_id') uri.setSrid(toposrid) uri.setWkbType(QGis.WKBPolygon) @@ -136,8 +138,11 @@ def run(item, action, mainwindow): legend.setLayerExpanded(layer, False) # face_seed - sql = 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)) + sql = u'SELECT face_id, ST_PointOnSurface(' \ + 'topology.ST_GetFaceGeometry(%s,' \ + 'face_id))::geometry(point, %s) as geom ' \ + 'FROM %s.face WHERE face_id > 0' % \ + (quoteStr(toponame), quoteId(toponame), toposrid) uri.setDataSource('', u'(%s)' % sql, 'geom', '', 'face_id') uri.setSrid(toposrid) uri.setWkbType(QGis.WKBPoint)