Escrevendo scripts que podem chamar o Arcpy e o PyQGIS?

11

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.
CWDWILSO
fonte

Respostas:

4

Você precisará garantir que sua variável de ambiente PATH inclua a pasta onde as dlls python estão localizadas. Geralmente, em [QGIS_install_folder] \ apps \ qgis \ bin, por exemplo

C:\Program Files (x86)\QGIS Valmiera\apps\qgis\bin

uma olhada no Configure PyScripter para usar com o QGIS (e ainda use o arcpy) no Windows. Post bastante antigo agora, mas deve lhe dar uma idéia básica do que precisa ser configurado

mapoholic
fonte
3

Estou usando o OSGeo4W com sucesso. O que você precisa fazer é definir:

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

E referência no código:

QgsApplication.setPrefixPath("C:\OSGeo4W\apps\qgis", True)
caiohamamura
fonte
Não funciona para mim.
SIslam