J'ai essayé de passer par IRC pour voir si les gens peuvent m'aider, mais le médium semble un peu maladroit pour clarifier les réponses, donc je vais essayer à la place.
Je voudrais programmer une application autonome à l'aide de PyQGIS comme je peux déjà programmer des applications autonomes à l'aide d'ArcPy.
PyQGIS lui-même est simple. Je n'ai eu aucune difficulté à utiliser des scripts Python dans l'éditeur de console QGIS. Cependant, afin d'utiliser les liaisons Python dans un script autonome, je suis informé que je dois modifier les paramètres d'environnement à l'aide d'un script de commandes (j'utilise Windows Vista à la maison, nous parlons donc de scripts de commandes pour Windows). Cela a entraîné un gâchis de ma part, car je ne comprends pas vraiment les scripts par lots, et je n'aime pas l'idée que je réinitialise un environnement qui doit être d'une certaine manière pour les autres applications que j'exécute.
J'ai du mal à comprendre pourquoi les instructions pour créer ces paramètres sont si inutilement compliquées, et pourquoi elles ne se résument pas à une ligne de code disant "allez là où sont les liaisons, rendez les bibliothèques que je veux disponibles pour ce programme à utiliser Il est certain qu'ArcPy n'exige pas que les gens manipulent les paramètres environnementaux de l'ordinateur, j'ai donc du mal à comprendre pourquoi PyQGIS le fait. Il me semble que les gens abandonneront simplement plutôt que de s'enseigner eux-mêmes Windows Batch Scripting Language.
Maintenant, je remarque que lorsque j'exécute un script dans l'éditeur de console de QGIS, cela fonctionne. Certes, cela rend également le reste de QGIS inutilisable après l'exécution du script, je dois donc redémarrer QGIS après, mais le script fonctionne exactement comme je l'ai programmé pour fonctionner. Mais quand je le fais en dehors de l'application QGIS, ce n'est pas le cas. Le problème ne semble pas être que je n'ai pas réussi à importer un package Python importé automatiquement par l'application QGIS (qgis.core et qgis.utils) - J'ai ces instructions d'importation dans mon script autonome, avec tous les autres packages qui importent le le script requiert. Cela m'amène à croire que la différence est que l'application QGIS définit correctement les variables d'environnement externes, mais ces variables ne sont pas définies correctement lorsque je l'exécute en tant que script autonome.
De plus, lorsque j'exécute le script en tant que script autonome, il passe à travers tout le code sans générer d'erreur. il ne fait tout simplement pas ce que le code commande. Lorsque j'exécute le script dans l'éditeur de console, il fait tout correctement. Lorsque je l'exécute en mode autonome, il crée une fenêtre, puis la détruit immédiatement, sans lancer d'erreurs. Donc, l'interprète comprend tout ce que je demande au script de faire - il ne le fera tout simplement pas.
Voici le script:
from PyQt4 import *
from PyQt4 import *
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from qgis.core import *
from qgis.gui import *
from qgis.utils import *
import Tkinter
from Tkinter import *
import sys
import os
qgishome = "c:/OSGeo4W/apps/qgis/"
app = QgsApplication([], True)
QgsApplication.setPrefixPath(qgishome, True)
QgsApplication.initQgis()
canvas = QgsMapCanvas()
canvas.setCanvasColor(Qt.yellow)
canvas.enableAntiAliasing(True)
canvas.show()
layer = QgsVectorLayer(r"c:/GIS Data/fed308/cpc.shp", "Ridings", "ogr")
reg = QgsMapLayerRegistry.instance()
reg.addMapLayer(layer)
canvas.setExtent(layer.extent())
canvas.setLayerSet([QgsMapCanvasLayer(layer)])
QgsApplication.exitQgis()
S'il vous plaît ... est-il possible d'exécuter ce script en dehors de QGIS et de le faire fonctionner comme il le fait dans QGIS (idéalement sans arrêter les choses à la fin)?
QGIS est un merveilleux programme, et PyQGIS semble aussi intuitif qu'ArcPy et serait un réel avantage pour un logiciel open source - mais si les gens doivent passer par tous les cerceaux que j'ai déjà traversés et n'ont toujours pas d'application autonome l'accès aux bibliothèques PyQGIS comme ils ont accès à ArcPy, il me semble que PyQGIS ne sera pas d'une grande utilité pour les gens. J'espère que je me trompe et c'est plus facile qu'il ne l'a été jusqu'à présent. Quelqu'un a-t-il une solution?