@@ -82,7 +82,7 @@ def run(item, action, mainwindow):
8282 QMessageBox .critical (mainwindow , "Invalid topology" , u'Schema "%s" is not registered in topology.topology.' % item .schema ().name )
8383 return False
8484
85- toposrid = res [0 ]
85+ toposrid = str ( res [0 ])
8686
8787 # load layers into the current project
8888 toponame = item .schema ().name
@@ -106,20 +106,40 @@ def run(item, action, mainwindow):
106106 # should not be needed: http://hub.qgis.org/issues/6938
107107 legend .setGroupVisible (group , False )
108108
109- # face
110- layer = db .toSqlLayer (u'SELECT face_id, topology.ST_GetFaceGeometry(%s, face_id) as geom ' \
111- 'FROM %s.face WHERE face_id > 0' % (quoteStr (toponame ), quoteId (toponame )),
112- 'geom' , 'face_id' , u'%s.face' % toponame , None , False , str (toposrid ), QGis .WKBPolygon )
109+ # face mbr
110+ uri .setDataSource (toponame , 'face' , 'mbr' , '' , 'face_id' )
111+ uri .setSrid ( toposrid )
112+ uri .setWkbType ( QGis .WKBPolygon )
113+ layer = QgsVectorLayer (uri .uri (), u'%s.face_mbr' % toponame , provider )
114+ layer .loadNamedStyle (os .path .join (template_dir , 'face_mbr.qml' ))
115+ registry .addMapLayers ([layer ])
116+ legend .setLayerVisible (layer , False )
117+ legend .setLayerExpanded (layer , False )
118+ legend .moveLayer (layer , group )
119+ face_extent = layer .extent ()
120+
121+ # face geometry
122+ sql = u'SELECT face_id, topology.ST_GetFaceGeometry(%s, face_id) as geom ' \
123+ 'FROM %s.face WHERE face_id > 0' % (quoteStr (toponame ), quoteId (toponame ))
124+ uri .setDataSource ('' , u'(%s\n )' % sql , 'geom' , '' , 'face_id' )
125+ uri .setSrid ( toposrid )
126+ uri .setWkbType ( QGis .WKBPolygon )
127+ layer = QgsVectorLayer (uri .uri (), u'%s.face' % toponame , provider )
128+ layer .setExtent (face_extent )
113129 layer .loadNamedStyle (os .path .join (template_dir , 'face.qml' ))
114130 registry .addMapLayers ([layer ])
115131 legend .setLayerVisible (layer , False )
116132 legend .setLayerExpanded (layer , False )
117133 legend .moveLayer (layer , group )
118134
119135 # face_seed
120- layer = db .toSqlLayer (u'SELECT face_id, ST_PointOnSurface(topology.ST_GetFaceGeometry(%s, face_id)) as geom ' \
121- 'FROM %s.face WHERE face_id > 0' % (quoteStr (toponame ), quoteId (toponame )),
122- 'geom' , 'face_id' , u'%s.face_seed' % toponame , None , False , str (toposrid ), QGis .WKBPoint )
136+ sql = u'SELECT face_id, ST_PointOnSurface(topology.ST_GetFaceGeometry(%s, face_id)) as geom ' \
137+ 'FROM %s.face WHERE face_id > 0' % (quoteStr (toponame ), quoteId (toponame ))
138+ uri .setDataSource ('' , u'(%s)' % sql , 'geom' , '' , 'face_id' )
139+ uri .setSrid ( toposrid )
140+ uri .setWkbType ( QGis .WKBPolygon )
141+ layer = QgsVectorLayer (uri .uri (), u'%s.face_seed' % toponame , provider )
142+ layer .setExtent (face_extent )
123143 layer .loadNamedStyle (os .path .join (template_dir , 'face_seed.qml' ))
124144 registry .addMapLayers ([layer ])
125145 legend .setLayerVisible (layer , False )
@@ -136,16 +156,22 @@ def run(item, action, mainwindow):
136156
137157 # node
138158 uri .setDataSource (toponame , 'node' , 'geom' , '' , 'node_id' )
159+ uri .setSrid ( toposrid )
160+ uri .setWkbType ( QGis .WKBPoint )
139161 layer = QgsVectorLayer (uri .uri (), u'%s.node' % toponame , provider )
140162 layer .loadNamedStyle (os .path .join (template_dir , 'node.qml' ))
141163 registry .addMapLayers ([layer ])
142164 legend .setLayerVisible (layer , False )
143165 legend .setLayerExpanded (layer , False )
144166 legend .moveLayer (layer , group )
167+ node_extent = layer .extent ()
145168
146169 # node labels
147170 uri .setDataSource (toponame , 'node' , 'geom' , '' , 'node_id' )
171+ uri .setSrid ( toposrid )
172+ uri .setWkbType ( QGis .WKBPoint )
148173 layer = QgsVectorLayer (uri .uri (), u'%s.node_id' % toponame , provider )
174+ layer .setExtent (node_extent )
149175 layer .loadNamedStyle (os .path .join (template_dir , 'node_label.qml' ))
150176 registry .addMapLayers ([layer ])
151177 legend .setLayerVisible (layer , False )
@@ -159,15 +185,21 @@ def run(item, action, mainwindow):
159185
160186 # edge
161187 uri .setDataSource (toponame , 'edge_data' , 'geom' , '' , 'edge_id' )
188+ uri .setSrid ( toposrid )
189+ uri .setWkbType ( QGis .WKBLineString )
162190 layer = QgsVectorLayer (uri .uri (), u'%s.edge' % toponame , provider )
163191 registry .addMapLayers ([layer ])
164192 legend .setLayerVisible (layer , False )
165193 legend .setLayerExpanded (layer , False )
166194 legend .moveLayer (layer , group )
195+ edge_extent = layer .extent ()
167196
168197 # directed edge
169198 uri .setDataSource (toponame , 'edge_data' , 'geom' , '' , 'edge_id' )
199+ uri .setSrid ( toposrid )
200+ uri .setWkbType ( QGis .WKBLineString )
170201 layer = QgsVectorLayer (uri .uri (), u'%s.directed_edge' % toponame , provider )
202+ layer .setExtent (edge_extent )
171203 layer .loadNamedStyle (os .path .join (template_dir , 'edge.qml' ))
172204 registry .addMapLayers ([layer ])
173205 legend .setLayerVisible (layer , False )
@@ -177,7 +209,10 @@ def run(item, action, mainwindow):
177209
178210 # edge labels
179211 uri .setDataSource (toponame , 'edge_data' , 'geom' , '' , 'edge_id' )
212+ uri .setSrid ( toposrid )
213+ uri .setWkbType ( QGis .WKBLineString )
180214 layer = QgsVectorLayer (uri .uri (), u'%s.edge_id' % toponame , provider )
215+ layer .setExtent (edge_extent )
181216 layer .loadNamedStyle (os .path .join (template_dir , 'edge_label.qml' ))
182217 registry .addMapLayers ([layer ])
183218 legend .setLayerVisible (layer , False )
@@ -186,7 +221,10 @@ def run(item, action, mainwindow):
186221
187222 # face_left
188223 uri .setDataSource (toponame , 'edge_data' , 'geom' , '' , 'edge_id' )
224+ uri .setSrid ( toposrid )
225+ uri .setWkbType ( QGis .WKBLineString )
189226 layer = QgsVectorLayer (uri .uri (), u'%s.face_left' % toponame , provider )
227+ layer .setExtent (edge_extent )
190228 layer .loadNamedStyle (os .path .join (template_dir , 'face_left.qml' ))
191229 registry .addMapLayers ([layer ])
192230 legend .setLayerVisible (layer , False )
@@ -195,7 +233,10 @@ def run(item, action, mainwindow):
195233
196234 # face_right
197235 uri .setDataSource (toponame , 'edge_data' , 'geom' , '' , 'edge_id' )
236+ uri .setSrid ( toposrid )
237+ uri .setWkbType ( QGis .WKBLineString )
198238 layer = QgsVectorLayer (uri .uri (), u'%s.face_right' % toponame , provider )
239+ layer .setExtent (edge_extent )
199240 layer .loadNamedStyle (os .path .join (template_dir , 'face_right.qml' ))
200241 registry .addMapLayers ([layer ])
201242 legend .setLayerVisible (layer , False )
@@ -204,7 +245,10 @@ def run(item, action, mainwindow):
204245
205246 # next_left
206247 uri .setDataSource (toponame , 'edge_data' , 'geom' , '' , 'edge_id' )
248+ uri .setSrid ( toposrid )
249+ uri .setWkbType ( QGis .WKBLineString )
207250 layer = QgsVectorLayer (uri .uri (), u'%s.next_left' % toponame , provider )
251+ layer .setExtent (edge_extent )
208252 layer .loadNamedStyle (os .path .join (template_dir , 'next_left.qml' ))
209253 registry .addMapLayers ([layer ])
210254 legend .setLayerVisible (layer , False )
@@ -213,7 +257,10 @@ def run(item, action, mainwindow):
213257
214258 # next_right
215259 uri .setDataSource (toponame , 'edge_data' , 'geom' , '' , 'edge_id' )
260+ uri .setSrid ( toposrid )
261+ uri .setWkbType ( QGis .WKBLineString )
216262 layer = QgsVectorLayer (uri .uri (), u'%s.next_right' % toponame , provider )
263+ layer .setExtent (edge_extent )
217264 layer .loadNamedStyle (os .path .join (template_dir , 'next_right.qml' ))
218265 registry .addMapLayers ([layer ])
219266 legend .setLayerVisible (layer , False )
0 commit comments