Schreiben von Skripten, die sowohl Arcpy als auch PyQGIS aufrufen können?

11

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

Antworten:

4

Sie müssen sicherstellen, dass Ihre Umgebungsvariable PATH den Ordner enthält, in dem sich die Python-DLLs befinden. Normalerweise unter [QGIS_install_folder] \ apps \ qgis \ bin, z

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

Schauen Sie sich auch Configure PyScripter für die Verwendung mit QGIS (und verwenden Sie weiterhin arcpy) unter Windows an. Ein ziemlich alter Beitrag, der Ihnen jedoch eine grundlegende Vorstellung davon geben sollte, was eingerichtet werden muss

mapoholic
quelle
3

Ich benutze OSGeo4W erfolgreich. Was Sie tun müssen, ist eingestellt:

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

Und Referenz im Code:

QgsApplication.setPrefixPath("C:\OSGeo4W\apps\qgis", True)
Caiohamamura
quelle
Bei mir funktioniert das überhaupt nicht.
Islam