多くの処理アルゴリズムには、出力をメモリとして保存するオプションがあります。ツールボックスから実行した場合、[アルゴリズム実行後に出力ファイルを開く]チェックボックスをオンにできるため、これは正常に機能します。
QGISのソースコードを見ると、メモリレイヤーをロードするためのコードが関数で定義されているよう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")
しかし、結果の出力を取得する方法が見つかりません。