Scrivere script che possono chiamare sia Arcpy che PyQGIS?


11

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.

Risposte:



3

Sto usando OSGeo4W con successo. Quello che devi fare è impostare:

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

E riferimento nel codice:

QgsApplication.setPrefixPath("C:\OSGeo4W\apps\qgis", True)

Per me non funziona affatto.
SIslam,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.