অনেকগুলি প্রসেসিং অ্যালগরিদমের কাছে মেমরি হিসাবে আউটপুট সংরক্ষণের বিকল্প রয়েছে। যদি টুলবক্স থেকে চালানো হয় তবে এটি সূক্ষ্মভাবে কাজ করে, কারণ আপনি "অ্যালগরিদম চালানোর পরে আউটপুট ফাইলটি খুলুন" বাক্সটিতে টিক দিতে পারেন।
কিউজিআইএসের উত্স কোডটি দেখে, মেমরি স্তরটি লোড করার কোডটি ফাংশনে সংজ্ঞায়িত বলে মনে হচ্ছে Postprocessing.handleAlgorithmResults
। ফাংশনটি একটি alg.outputs
তালিকার অ্যাক্সেস ব্যবহার করে এবং নিম্নলিখিতগুলি করে:
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:
# ...
আপনি যখন কনসোল থেকে প্রক্রিয়াকরণ অ্যালগরিদমগুলি চালনা করেন, তখন এই বস্তুটি অ্যাক্সেস না করে স্তরটি লোড করার কোনও উপায় আছে কি? আমি রান করতে পারি
processing.runalg("qgis:intersection", layer1, layer2, "memory:")
অথবা এমনকি
processing.runalg("qgis:intersection", layer1, layer2, "memory:myLayerName")
আমি তবে ফলাফল আউটপুট দখল করার উপায় খুঁজে পাচ্ছি না।