[Qgis-developer] 'reload' a layer

G. Allegri giohappy at gmail.com
Thu May 17 04:03:34 PDT 2012


You're right Carson. I used it only with a WFS layer, and in fact I see
that WFS is the only providers that implements it.
There would be the setDataProvider method on the vector layer but it's
private...

You've raised an important point, that I took for granted :(
I fear that in this moment the only solution is remove it and reload it.
giovanni


2012/5/17 Carson Farmer <carson.farmer at gmail.com>

> Hi Giovanni,
>
> Thanks for the tip. To answer your question: I am trying to
> synchronise the layer with the datasource. Having said that, I don't
> seem to be able to get 'reload' to work. It looks like reload is
> reimplemented in QgsVectorLayer, which in turns calls the
> dataProvider's reloadData method, so this may vary by provider type? I
> tried it with a shapefile and a spatialite layer, and it did not seem
> to do anything: I deleted several fields from the shapefile and added
> a field to the spatialite layer in an external program, and these
> changes were not reflected when I 'reloaded' the layers. Am I missing
> something here? Perhaps there is something else needed to get the
> changes to 'show up'?
>
> Cheers,
>
> Carson
>
> On Wed, May 16, 2012 at 4:36 PM, G. Allegri <giohappy at gmail.com> wrote:
> > Do you mean refresh the rendering or synchronizing the layer with the
> data
> > source?
> > I usually use QgsMapLayer::reload() for the latter, and
> > QgsMapCanvas::refresh() for the first.
> >
> > giovanni
> >
> > 2012/5/16 Carson Farmer <carson.farmer at gmail.com>
> >>
> >> Hi list, does anyone know of a clever way to (programmatically) reload
> >> a layer without actually removing it and re-adding it to the layer
> >> list. Some context: I have a layer that sometimes gets updated by an
> >> external application, and I want to be able to 'refresh' the layer
> >> from the Python console to reflect these changes (new features,
> >> deleted features, new attributes, etc.). I *could* simply load the
> >> layer again, but I'm hoping there is a more efficient way to do this
> >> (also I want to keep the current styling, layer order, unique layer
> >> id, etc).
> >>
> >> Any thoughts/ideas? Note: assume we are working with a spatialite layer
> >> for now.
> >>
> >> Carson
> >>
> >> --
> >> Dr. Carson J. Q. Farmer
> >> Centre for GeoInformatics (CGI)
> >> School of Geography and Geosciences
> >> Irvine Building, University of St Andrews
> >> St Andrews, Fife, KY16 9AL
> >> Scotland, UK
> >> _______________________________________________
> >> Qgis-developer mailing list
> >> Qgis-developer at lists.osgeo.org
> >> http://lists.osgeo.org/mailman/listinfo/qgis-developer
> >
> >
>
>
>
> --
> Dr. Carson J. Q. Farmer
> Centre for GeoInformatics (CGI)
> School of Geography and Geosciences
> Irvine Building, University of St Andrews
> St Andrews, Fife, KY16 9AL
> Scotland, UK
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/qgis-developer/attachments/20120517/2e6183cc/attachment-0001.html


More information about the Qgis-developer mailing list