¿Escribir guiones que puedan llamar tanto a Arcpy como a PyQGIS?

11

He pasado bastante tiempo buscando una respuesta clara a este tema y aún no he podido lograr mi objetivo de acceder a PyQGIS en un script independiente.

Se han proporcionado partes de respuestas en muchas preguntas diferentes, tales como:

Aplicaciones independientes que usan QGIS y variables de entorno

pyQgis en secuencia de comandos independiente, error de carga del vector

¿Escribir scripts de Python independientes usando PyQGIS?

La respuesta más exhaustiva que he encontrado fue proporcionada por @gene aquí .

Lo que me interesa particularmente es poder escribir scripts que puedan llamar tanto a Arcpy como a PyQGIS. He establecido las variables del sistema PATH y PYTHONPATH de acuerdo con la documentación del libro de cocina 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\

y

C:\OSGeo4W\apps\qgis\python; C:\OSGeo4W\apps\Python27\Lib\site-packages

Respectivamente.

Estoy empezando con 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)

Estoy buscando evitar los scripts por lotes que establecen la configuración adecuada, sino que los llamo desde dentro del script de Python. El escenario óptimo para mí sería usar IDLE en la carpeta ArcGIS 10.2 para ejecutar el código anterior. Estoy usando una máquina con Windows 7 con ArcGIS 10.2 y QGIS 2.01.

Actualmente los resultados de este código son:

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
fuente

Respuestas:

4

Deberá asegurarse de que la variable de entorno PATH incluya la carpeta donde se encuentran los dlls de python. Generalmente bajo [QGIS_install_folder] \ apps \ qgis \ bin eg

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

También eche un vistazo a Configurar PyScripter para usar con QGIS (y aún usar arcpy) en Windows Publicación bastante antigua ahora, pero debería darle la idea básica de lo que necesita ser configurado

mapoholic
fuente
3

Estoy usando OSGeo4W con éxito. Lo que tienes que hacer es configurar:

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

Y referencia en código:

QgsApplication.setPrefixPath("C:\OSGeo4W\apps\qgis", True)
caiohamamura
fuente
No me funciona en absoluto.
SIslam