J'ai passé pas mal de temps à chercher une réponse claire à ce sujet et je n'ai toujours pas pu atteindre mon objectif d'accéder à PyQGIS dans un script autonome.
Des parties des réponses ont été fournies à travers de nombreuses questions différentes telles que:
Applications autonomes utilisant QGIS et des variables d'environnement
pyQgis dans un script autonome, erreur de chargement du vecteur
Vous écrivez des scripts Python autonomes à l'aide de PyQGIS?
La réponse la plus approfondie que j'ai trouvée a été fournie par @gene ici .
Ce qui m'intéresse particulièrement, c'est de pouvoir écrire des scripts pouvant faire appel à la fois à Arcpy et à PyQGIS. J'ai défini les variables système PATH et PYTHONPATH conformément à la documentation du livre de recettes PyQGIS comme suit:
C:\OSGeo4W\apps\qgis\bin,%PATH%;C:\Python27\ArcGIS10.2\Lib\site-packages\PyQt4;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\;C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\
et
C:\OSGeo4W\apps\qgis\python; C:\OSGeo4W\apps\Python27\Lib\site-packages
Respectivement.
Je commence par ce script:
from qgis.core import *
QgsApplication.setPrefixPath("C:\OSGeo4W\bin\qgis.bat", True)
QgsApplication.initQgis()
# or your solution
# read a shapefile
layer = QgsVectorLayer('H:\DATA\Airfields_AB.shp', 'Airfields', 'ogr')
layer.isValid()
True
# loop through layer
for elem in layer.getFeatures():
geom= elem.geometry()
attr =elem.attributes()
(processing)
Je cherche à éviter les scripts batch qui définissent les paramètres appropriés, mais plutôt les appeler à partir du script Python. Le scénario optimal pour moi serait d'utiliser l'IDLE dans le dossier ArcGIS 10.2 pour exécuter le code précédent. J'utilise une machine Windows 7 avec ArcGIS 10.2 et QGIS 2.01.
Actuellement, les résultats de ce code sont:
Traceback (most recent call last):
File "F:\Users\...\PyQGIS_Test_01.py", line 1, in <module>
from qgis.core import *
ImportError: DLL load failed: The specified module could not be found.