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.

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


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)

Bei mir funktioniert das überhaupt nicht.
Islam
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.