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

Respuestas:



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)

No me funciona en absoluto.
SIslam
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.