Mehr

Zugriff auf "Verarbeitung" mit Python?

Zugriff auf


Ich möchte auf die Explosionslinien-Funktion in Python außerhalb von QGIS von einem eigenständigen Skript aus zugreifen.

Welches Modul muss ich laden, um es nutzen zu können?

Wie kann ich zugreifenwird bearbeitet?

from qgis.core import * layerInput = QgsVectorLayer('test.shp', 'test', 'ogr') processing.runalg('qgis:explodelines', layerInput, 'temp.shp')

AKTUALISIERUNG 24.04.2018: Sehen Sie hier, wie Sie dies in QGIS v3.x tun.


Für QGIS v2.x

Endlich den richtigen Weg gefunden, Verarbeitungsalgorithmen über eigenständige PyQGIS-Skripte auszuführen.

Mit Processing Plugin Version 2.2.0-2 können Sie das folgende Skript ausprobieren:

# Vorbereiten der Umgebung import sys from qgis.core import * from PyQt4.QtGui import * app = QApplication([]) QgsApplication.setPrefixPath("/usr", True) QgsApplication.initQgis() # Vorbereiten des Verarbeitungsframeworks sys.path.append ('/home/user/.qgis2/python/plugins') # Ordner, in dem sich Processing befindet von processing.core.Processing import Processing Processing.initialize() von processing.tools import * # Algorithmus ausführen layerInput = QgsVectorLayer('test .shp', 'test', 'ogr') general.runalg('qgis:explodelines', layerInput, 'temp.shp') # Anwendungen beenden QgsApplication.exitQgis() QApplication.exit()

Neuere Verarbeitungsversionen könnten unter gefunden werden/usr/share/qgis/python/plugins, also müssen Sie möglicherweise verwendensys.path.append('/usr/share/qgis/python/plugins')entsprechend.

Ich habe das funktionierende Beispiel in Error: Algorithm not found gefunden, das wiederum auf einer Qgis-dev-Mailinglistendiskussion basiert.


Bis ich mit der generischen Vorgehensweise arbeite, werde ich Ihnen eine Problemumgehung nennen.

Ich verwende das Processing Plugin Version 2.2.0-2 (ich empfehle Ihnen diese Version zu verwenden), die in installiert ist/home/germap/.qgis2/python/plugins/auf meinem Computer. Sie müssen diesen Ordnerstandort kennen, da Sie das Verarbeitungsmodul von dort importieren.

Da Sie den Anbieter kennen (qgis) und der Algorithmus (Explosionslinien), kannst du dir anschauen/home/germap/.qgis2/python/plugins/processing/algs/qgis/um den Skriptnamen der Explosionslinien zu nehmen:Explode.pyMit diesen Informationen können Sie den Algorithmus direkt in Ihr eigenständiges Python-Skript importieren.

Öffnen Sie also eine Python-Konsole und kopieren Sie das folgende Skript (ich verwende GNU/Linux, daher sind die Umgebungsvariablen standardmäßig festgelegt, sodass ich im Handumdrehen qgis- und PyQt4-Bibliotheken importieren kann):

# Bereiten Sie die Umgebung vor import sys from PyQt4.QtGui import * from qgis.core import * app = QApplication([]) QgsApplication.setPrefixPath("/usr", True) QgsApplication.initQgis() # Sagen Sie Python, woher Sie die Verarbeitung erhalten sys.path.append('/home/germap/.qgis2/python/plugins') # Referenzieren Sie den Algorithmus, den Sie ausführen möchten, von processing.algs.qgis.Explode import * alg = Explode() # Setze Eingabe und Ausgabe inLayer = QgsVectorLayer('/home/user/data/in.shp', 'input', 'ogr') outLayer = '/home/user/data/out.shp' alg.setParameterValue('INPUT', inLayer) alg.setOutputValue ('OUTPUT', outLayer) # Ausführen des Algorithmus von processing.core.SilentProgress import SilentProgress progress = SilentProgress() alg.processAlgorithm(progress)

Wenn Sie keine Fehlermeldungen erhalten, war es das. Die Ausgabeebene wurde in dem von Ihnen angegebenen Ausgabepfad gespeichert (/home/user/data/out.shp)

Hinweis: In Bezug auf einen generischen Weg (d. h. das Aufrufen von Algorithmen mit Namen) habe ich einige Probleme gefunden, die ich lösen muss, bevor ich sie poste. Sobald es funktioniert, poste ich es.


Schau das Video: Termux: Linux ve vašem Androidu Petr Krčmář