[Qgis-developer] add rasterlayer to qgsmapcanvas
Felix Schmidt
felix.schmidt at uni-weimar.de
Tue Jun 10 13:00:49 PDT 2014
I found the problem. In the hibo.py:
self.gui = Ui_hibo ()
self.gui.setupUi()
Without the second line everything works fine. I had called two times,
first in the hibo.py and also in the init-function of Ui_hibo.py .
Thanks for your help =)
Felix
Am 10.06.2014 08:10, schrieb Denis Rouzaud:
> From a quick look, maybe the destination CRS of the map canvas is missing.
>
> In a code, I used:
> mMapCanvas->setCrsTransformEnabled( true );
> mMapCanvas->setDestinationCrs( xxx );
> mMapCanvas->refresh();
>
> http://qgis.org/api/classQgsMapCanvas.html#ab7cb4f74b2c21b77783bd1f49f5878d8
>
> Cheers,
>
> Denis
>
>
>
>
> On 08.06.2014 12:49, Felix Schmidt wrote:
>> Hello everyone, did anybody assorted my code and had an idea, where
>> the problem can be located. I am so confused about the behavior of
>> this plugin. The code you can also find on Github
>> (https://github.com/MenschMarcus/HiBo-plugin)
>>
>> hibo.py:
>>
>> # Import the PyQt and QGIS libraries
>> from PyQt4 import QtCore, QtGui
>> from PyQt4.QtCore import *
>> from PyQt4.QtGui import *
>> from qgis.core import *
>> # Initialize Qt resources from file resources.py
>> import resources
>> import sys
>> import os
>> # Import the code for the dialog
>> from Ui_hibo import Ui_hibo
>>
>> class hibo:
>>
>> def __init__(self, iface):
>> # Save reference to the QGIS interface
>> self.iface = iface
>> self.gui = Ui_hibo ()
>> self.gui.setupUi()
>>
>> def connects(self):
>> #self.dlg.ui.load_button.clicked.connect(self.loadImage)
>> pass
>>
>> def initGui(self):
>> # Create action that will start plugin configuration
>> self.action = QAction(QIcon("icon.png"), "HiBo",
>> self.iface.mainWindow())
>> # connect the action to the run method
>> QObject.connect(self.action, SIGNAL("activated()"), self.run)
>>
>> # Add toolbar button and menu item
>> self.iface.addToolBarIcon(self.action)
>> self.iface.addPluginToMenu("&HiBo", self.action)
>>
>> def unload(self):
>> # Remove the plugin menu item and icon
>> self.iface.removePluginMenu("&HiBo",self.action)
>> self.iface.removeToolBarIcon(self.action)
>>
>> # run method that performs all the real work
>> def run(self):
>> # show the dialog
>> self.gui.show()
>> #print os.getcwd()
>> result = self.gui.exec_()
>> # See if OK was pressed
>> if result == 1:
>> print "test1"
>>
>> ui_hibo.py:
>>
>> #!/usr/bin/python
>> # -*- coding: utf-8 -*-
>>
>> import sys
>> import os
>>
>> from PyQt4 import QtCore, QtGui
>> from PyQt4.QtCore import *
>> from PyQt4.QtGui import *
>> from qgis.core import *
>> from qgis.gui import *
>>
>>
>> try:
>> _fromUtf8 = QtCore.QString.fromUtf8
>> except AttributeError:
>> def _fromUtf8(s):
>> return s
>>
>> try:
>> _encoding = QtGui.QApplication.UnicodeUTF8
>> def _translate(context, text, disambig):
>> return QtGui.QApplication.translate(context, text, disambig,
>> _encoding)
>> except AttributeError:
>> def _translate(context, text, disambig):
>> return QtGui.QApplication.translate(context, text, disambig)
>>
>> class Ui_hibo(QtGui.QDialog):
>>
>> def __init__(self):
>> QtGui.QDialog.__init__(self)
>> self.setupUi()
>>
>> #self.connect(self.loadRaster, QtCore.SIGNAL('triggered()'),
>> self.loadRasterImage)
>> self.connect(self.canvasRaster,
>> QtCore.SIGNAL('renderStarting()'), self.startRendering)
>>
>> self.setWindowTitle(self.tr("HiBo"))
>>
>> def setupUi(self):
>> """setup for toolbar"""
>> self.toolbarVector = QtGui.QToolBar('vector', self)
>> self.toolbarRaster = QtGui.QToolBar('raster', self)
>>
>> self.zoominVector = QtGui.QAction(QtGui.QIcon("zoomin.png"),
>> 'zoominVector', self)
>> self.zoomoutVector =
>> QtGui.QAction(QtGui.QIcon("zoomout.png"), 'zoomoutVector', self)
>> self.moveVector = QtGui.QAction(QtGui.QIcon("move.png"),
>> 'moveVector', self)
>> self.loadVector = QtGui.QAction(QtGui.QIcon("load.png"),
>> 'loadVector', self)
>> self.zoominRaster = QtGui.QAction(QtGui.QIcon("zoomin.png"),
>> 'zoominRaster', self)
>> self.zoomoutRaster =
>> QtGui.QAction(QtGui.QIcon("zoomout.png"), 'zoomoutRaster', self)
>> self.moveRaster = QtGui.QAction(QtGui.QIcon("move.png"),
>> 'moveRaster', self)
>> self.loadRaster = QtGui.QAction(QtGui.QIcon("load.png"),
>> 'loadRaster', self)
>> self.selectRaster = QtGui.QAction(QtGui.QIcon("select.png"),
>> 'selectRaster', self)
>>
>> self.toolbarVector.addAction(self.loadVector)
>> self.toolbarVector.addAction(self.zoominVector)
>> self.toolbarVector.addAction(self.zoomoutVector)
>> self.toolbarVector.addAction(self.moveVector)
>>
>> self.toolbarRaster.addAction(self.loadRaster)
>> self.toolbarRaster.addAction(self.zoominRaster)
>> self.toolbarRaster.addAction(self.zoomoutRaster)
>> self.toolbarRaster.addAction(self.moveRaster)
>> self.toolbarRaster.addAction(self.selectRaster)
>>
>> """setup for canvas"""
>> self.canvasVector = QgsMapCanvas()
>> self.canvasVector.setCanvasColor(QtGui.QColor(255,255,255,255))
>> self.canvasVector.enableAntiAliasing(True)
>> self.canvasRaster = QgsMapCanvas()
>> self.canvasRaster.setCanvasColor(QtGui.QColor(255,255,255,255))
>> self.canvasRaster.enableAntiAliasing(True)
>>
>> #fileName = QFileDialog.getOpenFileName(None, "historical map",
>> ".", "Image Files (*.png *.jpg *.bmp *.tiff)")
>> fileName = "/home/felix/programming/HiBo-plugin/hibo/map.tif"
>> fileInfo = QFileInfo(fileName)
>> baseName = fileInfo.baseName()
>> rlayer = QgsRasterLayer(fileName, baseName)
>> if not rlayer.isValid():
>> print "Layer failed to load!"
>> QgsMapLayerRegistry.instance().addMapLayer(rlayer)
>> self.canvasRaster.setExtent(rlayer.extent())
>> self.canvasRaster.setLayerSet( [ QgsMapCanvasLayer(rlayer) ] )
>>
>> """layout"""
>> vectorarea = QtGui.QWidget()
>> rasterarea = QtGui.QWidget()
>>
>> layoutVector = QtGui.QVBoxLayout()
>> layoutRaster = QtGui.QVBoxLayout()
>>
>> vectorarea.setLayout(layoutVector)
>> rasterarea.setLayout(layoutRaster)
>>
>> layoutVector.addWidget(self.toolbarVector)
>> layoutVector.addWidget(self.canvasVector)
>> layoutRaster.addWidget(self.toolbarRaster)
>> layoutRaster.addWidget(self.canvasRaster)
>>
>> layoutCentral = QtGui.QHBoxLayout(self)
>> layoutCentral.addWidget(vectorarea)
>> layoutCentral.addWidget(rasterarea)
>>
>> def retranslateUi(self):
>> self.setWindowTitle(_translate("hibo", "hibo", None))
>>
>> #here it loads only in the legend of qgis main window
>> """@QtCore.pyqtSlot()
>> def loadRasterImage(self):
>> #fileName = QFileDialog.getOpenFileName(None, "historical
>> map", ".", "Image Files (*.png *.jpg *.bmp *.tiff)")
>> fileName = "/home/felix/programming/HiBo-plugin/hibo/map.tif"
>> fileInfo = QFileInfo(fileName)
>> baseName = fileInfo.baseName()
>> rlayer = QgsRasterLayer(fileName, baseName)
>> if not rlayer.isValid():
>> print "Layer failed to load!"
>> QgsMapLayerRegistry.instance().addMapLayer(rlayer)
>> self.canvasRaster.setExtent(rlayer.extent())
>> self.canvasRaster.setLayerSet( [ QgsMapCanvasLayer(rlayer) ] )
>> #self.canvasRaster.refresh()"""
>>
>> @QtCore.pyqtSlot()
>> def startRendering(self):
>> print "start rendering"
>>
>>
>>
>> Am 06.06.2014 07:40, schrieb Denis Rouzaud:
>>> can you maybe show us the whole code?
>>>
>>> Cheers,
>>>
>>> Denis
>>>
>>> On 05.06.2014 20:55, Felix Schmidt wrote:
>>>> The layer is loading in the legend and shown in the main window.
>>>> What do you mean, with the symbology. In front of the layer, in the
>>>> legend, is a raster icon, if you mean this.
>>>>
>>>> I copied the code from the slot to the building of the ui. so the
>>>> layer is loading in the canvas by building the gui and not by
>>>> clicking in the toolbar.
>>>>
>>>> If I start qgis with this state of code, its starts and load load
>>>> the layer, when I start the plugin the canvas is still white and
>>>> when I clicked on the starting picture of qgis which is still
>>>> there, the layer is shown in the canvas of the plugin.
>>>>
>>>> It's confusing me.
>>>>
>>>> Felix
>>>>
>>>> Am 05.06.2014 20:20, schrieb Tim Sutton:
>>>>> Hi
>>>>>
>>>>>
>>>>>
>>>>> On Fri, Jun 6, 2014 at 12:15 AM, Felix Schmidt
>>>>> <felix.schmidt at uni-weimar.de <mailto:felix.schmidt at uni-weimar.de>>
>>>>> wrote:
>>>>>
>>>>> Same mistake with refresh() at the end.
>>>>>
>>>>> Am 05.06.2014 19:11, schrieb Rouzaud Denis:
>>>>>
>>>>> self.canvasRaster.refresh() at the end ?
>>>>>
>>>>> On 05 Jun 2014, at 18:27, Felix Schmidt
>>>>> <felix.schmidt at uni-weimar.de
>>>>> <mailto:felix.schmidt at uni-weimar.de>> wrote:
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Hello everyone,
>>>>> I try to load on signal, a rasterlayer to
>>>>> qgsmapcanvas. I try it like in
>>>>> the pycookbook:
>>>>>
>>>>> @QtCore.pyqtSlot()
>>>>> def loadRasterImage(self):
>>>>> print "slot works"
>>>>> fileName = QFileDialog.getOpenFileName(None,
>>>>> "historical map",
>>>>> ".", "Image Files (*.png *.jpg *.bmp *.tiff)")
>>>>> fileInfo = QFileInfo(fileName)
>>>>> baseName = fileInfo.baseName()
>>>>> rlayer = QgsRasterLayer(fileName, baseName)
>>>>> if not rlayer.isValid():
>>>>> print "Layer failed to load!"
>>>>> QgsMapLayerRegistry.instance().addMapLayer(rlayer)
>>>>> print rlayer.extent().yMinimum()
>>>>> self.canvasRaster.setExtent(rlayer.extent())
>>>>> self.canvasRaster.setLayerSet( [
>>>>> QgsMapCanvasLayer(rlayer) ] )
>>>>>
>>>>> self.canvasRaster is defined in the gui . I search for
>>>>> 8h but I dont
>>>>> find a solutionen, because there are no errors.
>>>>>
>>>>> It load the rasterlayer to the main program of qgis,
>>>>> but not in my
>>>>> qgsmapcanvas. it is still white.
>>>>>
>>>>>
>>>>> Is the layer loaded, showing in the legend but just not visible?
>>>>> Check the symbology for the layer is defined properly if this is
>>>>> the case.
>>>>>
>>>>> Regards
>>>>>
>>>>> Tim
>>>>>
>>>>> please help me.
>>>>>
>>>>> Felix
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Qgis-developer mailing list
>>>>> Qgis-developer at lists.osgeo.org
>>>>> <mailto:Qgis-developer at lists.osgeo.org>
>>>>> http://lists.osgeo.org/mailman/listinfo/qgis-developer
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Qgis-developer mailing list
>>>>> Qgis-developer at lists.osgeo.org
>>>>> <mailto:Qgis-developer at lists.osgeo.org>
>>>>> http://lists.osgeo.org/mailman/listinfo/qgis-developer
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Tim Sutton - QGIS Project Steering Committee Member
>>>>> ==============================================
>>>>> Please do not email me off-list with technical
>>>>> support questions. Using the lists will gain
>>>>> more exposure for your issues and the knowledge
>>>>> surrounding your issue will be shared with all.
>>>>>
>>>>> Irc: timlinux on #qgis at freenode.net <http://freenode.net>
>>>>> ==============================================
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20140610/31bec035/attachment-0001.html>
More information about the Qgis-developer
mailing list