PythonコンソールからpyQGISでクリップ関数を呼び出す?


10

PythonコンソールからQQGISのクリップ関数を呼び出す方法はありますか?ベクターメニューのジオプロセシングツールの下にあります。


まず、マルチパートからシングルパートへの関数を使用して修正しました。その後、動作します。
土気

回答:


10

もちろん、処理ツールボックスから関数を取得できます。使用方法は次のとおりです:http : //docs.qgis.org/2.8/en/docs/user_manual/processing/console.html

コンソールから、次のように入力して、「clip」という単語を含む使用可能なすべてのアルゴリズムのリストを取得できます。

import processing
processing.alglist("clip")

次に、最も適切な関数がどのように表示されるかを以下で使用する方法を見つけることができます。

processing.alghelp("qgis:clip")

次に、次のようにスクリプトでアルゴリズムを使用します。

processing.runalg("qgis:clip",inputlayer,overlaylayer,"output_file.shp")

注:このアルゴリズムは、選択されたフィーチャーでのみ機能します。

上記のコードは、実行できるalglistの例の3.0以降では無効です。

print([a.id() for a in gsApplication.processingRegistry().algorithms() if "clip" in a.id()])

あなたができるalghelpの例では:

processing.algorithmHelp("qgis:clip")

QGIS3については、次の質問を参照してください。

QGIS 3.0処理の新しいalglistとalghelpとは何ですか?


このトピックを復活させて申し訳ありませんが、この作業を行ったことはありませんでした。pyhtonコンソールで、私はことにより、2つのレイヤーを取得Layer = qgis.utils.iface.activeLayer()してInputLayer = qgis.utils.iface.activeLayer()。次に、使用するprocessing.runandload("qgis:clip",InputLayer,Layer,"output_file.shp")と、新しいレイヤーが[ クリップ ]という名前で[レイヤー]メニューに追加されます。しかし、レイヤーは空です。Qgis内のクリップ機能でこれらの2つのレイヤーを使用すると、出力レイヤーにクリッピングからのラインが含まれます。何がいけないのか?エラーは出ません。
2014

2つのポリゴンを使用しても機能しますが、レイヤーの1つはラインであり、ポリゴンではありません。これには複数の行が含まれており、Qgisで行う場合、このレイヤーをクリッピングに使用できます。
2014

2
クリップする機能を選択しておく必要があります。これを反映するように答えを編集しました。
パープル氏2014

実際にシェープファイルを作成せずにこれを行うにはどうすればよいですか?何百ものディスク形状のポリゴンを含むレイヤーがあり、これを繰り返し処理して、それぞれをポイントデータの単一レイヤーのオーバーレイとして使用します。代わりにQgsFeatureオブジェクトのリストを取得できますか?
J.テイラー

別の質問として質問してください
Mr Purple

5

「overlay」というレイヤーと「layer_to_clip」というレイヤーがロードされていると仮定します。

# get the overlay layer in the console
overlay_layer = [x for x in iface.legendInterface().layers() if x.name() == 'overlay'][0]

# get the layer to clip in the console
layer_to_clip = [x for x in iface.legendInterface().layers() if x.name() == 'layer_to_clip'][0]

# run the algorithm and output the results in /tmp/output.shp

processing.runalg("qgis:clip", overlay_layer, layer_to_clip, "/tmp/output.shp")
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.