Birçok işleme algoritmasının çıktıyı bellek olarak kaydetme seçeneği vardır. Araç kutusundan çalıştırıldıysa, bu iyi çalışır, çünkü "Algoritmayı çalıştırdıktan sonra çıktı dosyasını aç" kutusunu işaretleyebilirsiniz.
QGIS için kaynak koduna bakıldığında, bellek katmanını yükleme kodu işlevde tanımlanmış gibi görünüyor Postprocessing.handleAlgorithmResults
. İşlev bir alg.outputs
listeye erişimi kullanır ve aşağıdakileri yapar:
for out in alg.outputs:
progress.setPercentage(100 * i / float(len(alg.outputs)))
if out.hidden or not out.open:
continue
if isinstance(out, (OutputRaster, OutputVector, OutputTable)):
try:
if out.value.startswith('memory:'):
layer = out.memoryLayer # NOTE!!
QgsMapLayerRegistry.instance().addMapLayers([layer]) # NOTE!!
else:
# ...
İşlem algoritmalarını konsoldan çalıştırdığınızda, katmanı bu nesneye erişmeden yüklemenin bir yolu var mı? koşabilirim
processing.runalg("qgis:intersection", layer1, layer2, "memory:")
ya da
processing.runalg("qgis:intersection", layer1, layer2, "memory:myLayerName")
Ancak elde edilen çıktıyı yakalamanın bir yolunu bulamıyorum.