[Qgis-developer] Apply QgsMapSettings then render via Python?

Martin Dobias wonder.sk at gmail.com
Mon Mar 17 05:22:51 PDT 2014

Hi Larry

(sorry for coming back to you so late, I have been offline / busy last week)

On Wed, Mar 5, 2014 at 4:39 AM, Larry Shaffer <larrys at dakotacarto.com> wrote:
> Hi Martin, et al.,
> Maybe I'm missing something elemental here, but I can't seem to find a
> simple way to apply my built-up QgsMapSettings to QgsMapCanvas or
> QgsMapRenderer, initiate a render from Python, then save into image on disk.
> This is what I would like to do (for simple screen-res renders):
> cnv = iface.mapCanvas()
> ms = cnv.mapSettings()  <-- or create fresh: ms = QgsMapSettings()
> (manipulate map settings)
> cnv.applyMapSettings(ms)  <-- shouldn't this be possible?
> cnv.refresh()  <-- since cnv.map().render() is stubbed now
> cnv.saveAsImage(my_imgpath)

the QgsMapSettings object inside QgsMapCanvas is meant to be read-only
(it is a const reference in c++, however there is no such thing in
Python). The configuration of the map in canvas should be set by
calling the setter methods directly on QgsMapCanvas instance, which
will make sure that appropriate signals are emitted (so that other
components can react to it). Some of the QgsMapSettings properties are
meant to be automatically handled by QgsMapCanvas (e.g. output image
size or DPI), but it makes sense to have a method like
"applyMapSettings(ms)" that would apply all the allowed settings from
an external QgsMapSettings.


More information about the Qgis-developer mailing list