[QGIS-trac] Re: [Quantum GIS] #1462: PostGIS layer loaded via Python is not saved correct in qgs project file

Quantum GIS qgis at qgis.org
Mon Dec 15 07:58:23 EST 2008


#1462: PostGIS layer loaded via Python is not saved correct in qgs project file
--------------------------------------------------------------+-------------
        Reporter:  hdus                                       |         Owner:  jef          
            Type:  bug                                        |        Status:  new          
        Priority:  critical: causes crash or data corruption  |     Milestone:  Version 1.0.0
       Component:  Project Loading / Saving                   |       Version:  HEAD         
      Resolution:                                             |      Keywords:               
Platform_version:                                             |      Platform:  All          
        Must_fix:  No                                         |   Status_info:  0            
--------------------------------------------------------------+-------------
Comment (by hdus):

 Replying to [comment:2 hdus]:
 > Replying to [comment:1 jef]:
 > > I tried to run your code in the python console.  When try to save I
 get
 > >
 > > {{{
 > > NotImplementedError: QgsVectorLayer.writeSymbology() is abstract and
 must be overridden
 > > }}}
 > >
 > > I still need to investigate why there's python code fired at all at
 that point, but if I replace
 > >
 > > {{{
 > > vlayer = QgsVectorLayer(uri.uri(), layerName, "postgres")
 > > QgsMapLayerRegistry.instance().addMapLayer(vlayer)
 > > }}}
 > >
 > > with
 > >
 > > {{{
 > > iface.addVectorLayer(uri.uri(), layerName, "postgres")
 > > }}}
 > >
 > > everything is fine again.
 >
 > Your workaround works fine for me too. But how do I load a namedStyle to
 this layer? With my version I can prepare a vLayer object and I'm able to
 add a symbolisation with {{{vLayer.loadNamedStyle()}}} before I register
 the vLayer. I tried
 >
 > {{{
 > self.iface.addVectorLayer(uri.uri(), layerName, "postgres")
 > vLayer = self.iface.mapCanvas().currentLayer()
 > vLayer.loadNamedStyle(Path to qml-file)
 > }}}
 >
 > in this case the symbolisation in mapcanvas is updated, but the legend
 symbolisation is not changed.

 OK I got it with {{{self.iface.refreshLegend(vLayer)}}}.

-- 
Ticket URL: <https://trac.osgeo.org/qgis/ticket/1462#comment:3>
Quantum GIS <http://qgis.org>
Quantum GIS is an Open Source GIS viewer/editor supporting OGR, PostGIS, and GRASS formats


More information about the QGIS-trac mailing list