Bellek katmanını runalg ile girdi ve / veya çıktı olarak mı kullanıyorsunuz?


9

Bir bellek katmanı runalg ile giriş ve / veya çıkış olarak kullanılabilir mi?

Runandload ile bu işe olsun:

 processing.runandload("qgis:mergevectorlayers","memory:bufferOne", "memory:bufferTwo", r"memory:merged")
 processing.runandload("qgis:dissolve", r"memory:merged", True, '', r"D:\PythonTesting\dissolved.shp")

Parametre 2 ve 3, zaten bellekte olan giriş katmanlarıdır ve parametre 3, belleğe yazılan ve aşağıdaki araçta kullanılan çıkış katmanıdır (Çözün). Bu iyi çalışıyor, ancak runalg ile aynı mantığı kullanmaya çalıştığımda , çözülen araç asla çalışmadığı için bellekteki birleştirilmiş katmanım oluşturulmamış gibi görünüyor. Örneğin, aşağıdakiler işe yaramaz:

 processing.runalg("qgis:mergevectorlayers","memory:bufferOne", "memory:bufferTwo", r"memory:merged")
 processing.runandload("qgis:dissolve", r"memory:merged", True, '', r"D:\PythonTesting\datenschrott\dissolved.shp")

Runalg öğesinin bellekteki katmanları kabul etmediğini veya çıktı sağlayamayacağını varsayabilir miyim ?


Yanıtlar:


4

Metodunuzun neden işe yaramadığından tam olarak emin değilim, ancak başka bir yöntem kullanmakta kullanmaktır None, runalgçünkü bu da bellekte bir çıktı oluşturacaktır. Aşağıda ilk işlemi tanımladım output_0ve bunun sonucunu ikinci sürece girdi olarak adlandırdım:

output_0 = processing.runalg("qgis:mergevectorlayers",["memory:bufferOne", "memory:bufferTwo"], None)
processing.runandload("qgis:dissolve", output_0['OUTPUT'], True, '', r"D:\PythonTesting\dissolved.shp")

Sonuç:

Sonuç


V2.12.2 İşleme eklentisi ile QGIS 2.16.0-Nødebo üzerinde test edilmiştir.

Şimdi giriş katmanlarının bir listesini gerektirdiğini unutmayın qgis:mergevectorlayers .


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.