É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.