Passei bastante tempo procurando uma resposta clara para este tópico e ainda não consegui realmente realizar meu objetivo de acessar o PyQGIS em um script independente.
Partes das respostas foram fornecidas em várias perguntas diferentes, como:
Aplicativos independentes usando QGIS e variáveis de ambiente
pyQgis em script autônomo, erro de carregamento de vetor
Escrevendo scripts Python autônomos usando PyQGIS?
A resposta mais completa que encontrei foi fornecida por @gene aqui .
O que particularmente me interessa é poder escrever scripts que possam chamar o Arcpy e o PyQGIS. Eu configurei as variáveis de sistema PATH e PYTHONPATH de acordo com a documentação do livro de receitas PyQGIS como:
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
Respectivamente.
Estou começando com este 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)
Eu estou procurando evitar scripts em lote que definam as configurações apropriadas, mas chamá-los de dentro do script Python. O cenário ideal para mim seria usar o IDLE na pasta ArcGIS 10.2 para executar o código anterior. Estou usando uma máquina Windows 7 com ArcGIS 10.2 e QGIS 2.01.
Atualmente, os resultados desse código são:
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.
fonte