QGISのディスクに保存せずにGRASSツールによって返されるレイヤーを取得することは可能ですか?
QGISPythonコンソールでいくつかのGRASSツールを使用しています。私が使用するすべてのツールは、次のように、文字列パスを含むキーと値を持つ辞書を返します{"output": "file/path"}
。ここに答えがあります。その文字列をで使用することをお勧めしQgsVectorLayer
ます。ただし、ディスクへのファイルの書き込み/ディスクからのファイルの読み取りには時間がかかります。
私が試したprocessing.runAndLoadResults
とprocessing.run
。どちらもレイヤーを追加します。ただし、レイヤーを追加する前に、レイヤーをディスクに保存してから追加します。
processing.run("grass7:v.buffer", {..., 'output':'TEMPORARY_OUTPUT', ...})
# returns {'output': '/tmp/.../output.gpkg'} -> file path
processing.runAndLoadResults("grass7:v.buffer", , {..., 'output':'TEMPORARY_OUTPUT', ...})
# returns {'output': '/tmp/.../output.gpkg'} -> file path
ディスクに保存せずに(Pythonスクリプトの次の処理ツールで使用するために)GRASSツールによって返された/追加されたレイヤーを取得する方法はありますか?
回答
QGISでGRASSツールを使用する方法はないと思います。私が使用したGRASSツールは常にファイルパスを返すことに注意しました。保存せずにレイヤーを取得するために達成できる唯一の方法は、processing.run
メソッドを介してQGISネイティブ処理ツールを使用することでした。この答えは、その方法を説明しています。
出力レイヤーを中間レイヤーとして使用する場合は、ディスクに保存せずにインスタンスprocessing.run
を返す同等のネイティブ(QGIS)ツール(存在する場合)を使用することをお勧めしますQgsVectorLayer
。それ以外の場合は、をprocessing.run
使用QgsVectorLayer
してツールを実行してから、を使用して出力をメモリに追加することをお勧めします。