Écrire des scripts pouvant faire appel à la fois à Arcpy et à PyQGIS?


11

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.

Réponses:



3

J'utilise OSGeo4W avec succès. Ce que vous devez faire est de définir:

PATH=C:\OSGeo4W\apps\qgis\bin;%PATH%

Et référence dans le code:

QgsApplication.setPrefixPath("C:\OSGeo4W\apps\qgis", True)

Cela ne fonctionne pas du tout pour moi.
— SIslam
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.