Ho trascorso un bel po 'di tempo a cercare una risposta chiara a questo argomento e non sono ancora riuscito a raggiungere il mio obiettivo di accedere a PyQGIS in uno script autonomo.
Parti di risposte sono state fornite attraverso molte domande diverse come:
Applicazioni autonome che utilizzano QGIS e variabili di ambiente
pyQgis in script autonomo, errore di caricamento vettoriale
Scrivere script Python autonomi usando PyQGIS?
La risposta più scrupolosa che ho trovato è stata fornita da @gene qui .
Ciò a cui sono particolarmente interessato è la possibilità di scrivere script in grado di richiamare sia Arcpy che PyQGIS. Ho impostato le variabili di sistema PATH e PYTHONPATH secondo la documentazione del ricettario PyQGIS come:
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\
e
C:\OSGeo4W\apps\qgis\python; C:\OSGeo4W\apps\Python27\Lib\site-packages
Rispettivamente.
Sto iniziando con questo 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)
Sto cercando di evitare gli script batch che definiscono le impostazioni appropriate, ma piuttosto chiamarli dall'interno dello script Python. Lo scenario ottimale per me sarebbe usare l'IDLE nella cartella ArcGIS 10.2 per eseguire il codice precedente. Sto usando una macchina Windows 7 con ArcGIS 10.2 e QGIS 2.01.
Attualmente i risultati di questo codice sono:
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.