Ich schreibe ein generisches Skript, bei dem Shapefiles in ein Verzeichnis geschrieben werden, die dann zusammengeführt werden. Nachdem ich die Dateien in den Ausgabeordner geschrieben habe, versuche ich, den Algorithmus saga: mergeshapeslayers zu erhalten, um alle Dateien im Ausgabeordner zusammenzuführen . Ich habe den Model Builder verwendet und obwohl er bis zu einem gewissen Grad hilfreich ist, stelle ich fest, dass er für bestimmte Zwecke verwendet wird, während ich versuche, ein Skript für allgemeine Zwecke zu erstellen.
Code:
##Test=name
##Select_folder=folder
##Result=output vector
import os
import glob
path_1 = Select_folder
path = path_1
os.chdir(path)
def function():
output = glob.glob(path_1 + './*.shp')
x = 0
while output[x]:
for fname in glob.glob("*.shp"):
outputs_1 = processing.runandload("qgis:fieldcalculator", output[x], 'Number', 1, 10, 0, True, 1 , "C:\Users\Me\Desktop\Output\\" + fname)
multiple_0 = glob.glob("*.shp")
x = x + 1
if x + 1 > len(output):
processing.runalg("saga:mergeshapeslayers", output[0], ";".join(multiple_0) , Result)
break
else:
continue
if path_1:
function()
else:
pass
pyqgis
qgis-processing
Joseph
quelle
quelle
Z
? Was macht derfunction(Z)
Aufschlag, wenn er nichts zurückgibt? Was ist der Unterschied zwischenglob.glob(Z + './*.shp')
undglob.glob("*.shp")
?glob.glob(path_1 + './*.shp')
definiert wird, wo sich die .shp-Dateien befinden. undglob.glob("*.shp")
ruft die Dateinamen der .shp-Dateien ab. Bitte korrigieren Sie mich, wenn ich mich irre.Antworten:
Sie können Ihr Skript ohne vereinfachen
while...
undx
,x+1
: für einfache Python - Liste, wäre es am besten zu nutzenfor
oder Comprehensions Liste :Einige Erklärungen:
oder besser mit
os.path.join
(Universal, Windows, Linux, Mac OS X):quelle
##Result=output vector
?Ich habe die Antwort dank @gene gefunden, dessen Kommentare mir geholfen haben, mich auf den richtigen Bereich zu konzentrieren. Musste einfach glob für die Saga verwenden: mergeshapeslayers Funktion, um aufzurufen:
Dies wurde dem obigen Code hinzugefügt, der nun alle Dateien im Ordner zusammenführt.
quelle