Ich habe viel Zeit damit verbracht, nach einer klaren Antwort auf dieses Thema zu suchen, und konnte mein Ziel, auf PyQGIS in einem eigenständigen Skript zuzugreifen, immer noch nicht wirklich erreichen.
Teile der Antworten wurden für viele verschiedene Fragen bereitgestellt, wie zum Beispiel:
Standalone-Anwendungen mit QGIS und Umgebungsvariablen
pyQgis im eigenständigen Skript, Fehler beim Laden des Vektors
Eigenständige Python-Skripte mit PyQGIS schreiben?
Die gründlichste Antwort, die ich gefunden habe, wurde von @gene hier bereitgestellt .
Was mich besonders interessiert, ist die Möglichkeit, Skripte zu schreiben, die sowohl Arcpy als auch PyQGIS aufrufen können. Ich habe sowohl PATH- als auch PYTHONPATH-Systemvariablen gemäß der PyQGIS-Kochbuchdokumentation wie folgt festgelegt:
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\
und
C:\OSGeo4W\apps\qgis\python; C:\OSGeo4W\apps\Python27\Lib\site-packages
Beziehungsweise.
Ich beginne mit diesem Skript:
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)
Ich möchte Batch-Skripte vermeiden, die die entsprechenden Einstellungen festlegen, sondern sie aus dem Python-Skript heraus aufrufen. Das für mich optimale Szenario wäre, den IDLE im ArcGIS 10.2-Ordner zu verwenden, um den vorhergehenden Code auszuführen. Ich verwende einen Windows 7-Computer mit ArcGIS 10.2 und QGIS 2.01.
Derzeit sind die Ergebnisse dieses Codes:
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.