Suite

Impossible d'afficher ma carte externe QGIS sur Ubuntu trusty : QObject::connect : Impossible de se connecter (null) erreur


J'ai suivi les exemples du livre "Créer des applications de cartographie avec QGIS et pour la vie de moi, je ne peux pas comprendre pourquoi mes fichiers de formes ne se chargent pas et ne s'affichent pas dans la fenêtre de l'application sous un système Ubuntu. Le même code fonctionne bien avec ma configuration Macbook Pro.

J'utilise un fichier run.sh pour configurer l'environnement Linux :

export PYTHONPATH="/usr/share/qgis/python" export LD_LIBRARY_path="/usr/share/qgis/lib" export QGIS_PREFIX="/usr/share/qgis" python externalApp.py

J'ai testé que je peux importer tous les fichiers qgis, qgis.core, qgis.gui etc sans erreurs dans Python.

Le script Linux que j'utilise est collé ci-dessous. J'ai joué avec le nom et l'emplacement du fichier de formes.

importer sys importer os de qgis.core importer * de qgis.gui importer * de PyQt4.QtGui importer * de PyQt4.QtCore importer Qt ######################## ##################################################### ##### class MapViewer(QMainWindow): def __init__(self, shapefile): QMainWindow.__init__(self) self.setWindowTitle("Map Viewer") canvas = QgsMapCanvas() canvas.useImageToRender(False) canvas.setCanvasColor(Qt .white) canvas.show() layer = QgsVectorLayer(shapefile, "layer1", "ogr") #if not layer.isValid(): # raise IOError("Invalid shapefile") QgsMapLayerRegistry.instance().addMapLayer(layer) canvas.setExtent(layer.extent()) canvas.setLayerSet([QgsMapCanvasLayer(layer)]) layout = QVBoxLayout() layout.addWidget(canvas) contents = QWidget() contents.setLayout(layout) self.setCentralWidget(contents) # ##################################################### ########################## def main(): """ Notre programme principal. """ QgsApplication.setPrefixPath(os.environ[' QGIS_PREFIX'], Vrai) QgsApplication.initQgis() ap p = QApplication(sys.argv) viewer = MapViewer("/home/cary/workspace/temp/alaska.shp") viewer.show() app.exec_() QgsApplication.exitQgis() ######## ##################################################### ################## if __name__ == "__main__": main()

Ordinateurs utilisés : 1) Machine Windows Toshiba Satellite, reconfigurée avec Ubuntu 14.04 2) Ordinateur Macbook Pro

La machine Toshiba Satellite était une nouvelle machine et nouvellement configurée avec Ubuntu. En gros, je viens d'installer Ubuntu, puis de mettre à jour le système, puis d'installer QGIS avec ce script :

sudo sh -c 'echo "deb http://qgis.org/debian trusty main" >> /etc/apt/sources.list' sudo sh -c 'echo "deb-src http://qgis.org/debian trusty main" >> /etc/apt/sources.list' gpg --keyserver keyserver.ubuntu.com --recv 47765B75 gpg --export --armor 47765B75 | sudo apt-key add - sudo apt-get update && sudo apt-get install qgis python-qgis

Configuration pour les deux ordinateurs : les deux ordinateurs utilisent Python 2.7.6

Configurations standard pour les deux machines. Je viens d'exécuter le script ci-dessus pour la machine Linux.

Vérifié que les dossiers "/usr/share/qgis" ont été correctement configurés sous Linux Vérifié que les structures sur le Mac correspondent toutes à la description des dossiers et du contenu du livre à la page 21 pour la configuration de PYTHONPATH, QGIS_PREFIX etc…

Les structures de fichiers Linux étaient différentes : dans le livre : PYTHONPATH="/usr/share/qgis/build/output/python/" alors que j'ai remarqué sur mon système que les répertoires "/build/output/" manquaient.

Le même code a fonctionné sur la configuration Mac mais pas sur la configuration Linux. J'ai également vérifié que le chemin d'accès aux fichiers de formes était correct pour le système Linux.

Heureusement, la configuration Mac fonctionne et je peux continuer avec le reste du didacticiel sur cette boîte, mais j'aimerais savoir pourquoi la boîte Ubuntu ne fonctionne pas.


J'ai testé votre code sur mon ordinateur basé sur Ubuntu, la seule chose étrange que je vois est un préfixe QGIS qui ne fonctionne pas pour l'installation QGIS commune sur GNU/Linux.

Essayez de changer votre variable QGIS_PREFIX en"/usr". Le préfixe QGIS est l'endroit où QGIS peut commencer à rechercher des fournisseurs de données et d'autres ressources (voir Échec de la création de couches de mémoire dans l'application QGIS sous Linux pour plus de détails). En fait, en utilisant votre QGIS_PREFIX, j'obtiens également un cadre vide.