Suite

La couche raster superposée masque mes couches vectorielles dans PyQGIS

La couche raster superposée masque mes couches vectorielles dans PyQGIS


J'ai chargé des couches vectorielles et les ai rendues sans problème, mais lorsque j'ai essayé d'ajouter une couche raster également, la carte n'affiche soudainement que l'image raster et mes couches vectorielles sont manquantes.

Tout ce que je peux essayer de diagnostiquer le problème ici. Je suivais les étapes de routine du livre de recettes PyQGIS 2.0.

import sys de PyQt4.QtCore import * de PyQt4.QtGui import * de qgis.core import * de qgis.gui import * import sys import os de mapui import Ui_MainWindow os.environ['QGISHOME'] = 'C:Program Files QGIS Brightonappsqgis' class ShapeViewer(QMainWindow, Ui_MainWindow): def __init__(self): QMainWindow.__init__(self) #Requis par Qt4 pour initialiser l'interface utilisateur self.setupUi(self) #définir le titre pour l'application self.setWindowTitle("Map Viewer") #créer le canevas de la carte self.canvas = QgsMapCanvas() self.canvas.setCanvasColor(Qt.white) self.canvas.enableAntiAliasing(True) #self.canvas.useImageToRender(False) self.canvas.show() self.clickTool = QgsMapToolEmitPoint(self.canvas) self.layout = QVBoxLayout(self.QgsMapCanvas) self.layout.addWidget(self.canvas) couches = [] uri = QgsDataSourceURI() #carte sous-jacente raster_layer = QgsRasterLayer("d:workinghyp_lrhyp_lrhyp_lr.tif", 'geography layer') sinon raster_layer.isValid(): print "raster layer is invalid!" return QgsMapLayerRegistry.instance().addMapLayer(raster_layer) self.canvas.setExtent(raster_layer.extent()) cl_raster = QgsMapCanvasLayer(raster_layer) couches.append(cl_raster) uri = QgsDataSourceURI() uri.setConnection_box("","my_linux) ","mydb","me","mypwd") uri.setDataSource('public','some_table','geom',") vector_layer = QgsVectorLayer(uri.uri(), 'Certaines données', "postgres" ) sinon vector_layer.isValid() : print "La couche vectorielle n'est pas valide !" return QgsMapLayerRegistry.instance().addMapLayer(vector_layer) self.canvas.setExtent(vector_layer.extent()) vector_canvas_layer = QgsMapCanvasLayer(vector_layer) couches.append( vector_canvas_layer) #### self.canvas.setLayerSet(layers) self.canvas.show() def main(argv): #create Qt application app = QApplication(argv) #init qgis libs qgis_prefix = 'C:OSGEO4~ 1appsqgis' QgsApplication.setPrefixPath(qgis_prefix, True) QgsApplication.initQgis() #créer la fenêtre principale wnd = ShapeViewer() #Déplacer la fenêtre de l'application en haut à gauche wnd.move(100, 100) wnd.show ( ) #Cours! retval = app.exec_() #exit QgsApplication.exitQgis() sys.exit(retval) if __name__=='__main__': main(sys.argv)

Lorsque vous ajoutez la couche vectorielle à la carte, vous devez la placer au-dessus de la couche raster.

Donc, au lieu de :

couches.append(vector_canvas_layer)

qui met le vecteur en bas, écrivez ceci :

couches.insert(0, vector_canvas_layer)

qui insère le calque vectoriel à la position 0 (en haut) de votre pile de calques.

Vous devriez maintenant être en mesure de visualiser à la fois vos données vectorielles et raster.