QGISでレイヤーを複製するにはどうすればよいですか?


9

同じベクターデータを異なるレイヤーとして異なる方法で表示したいのですが。1.8以上のレイヤースタイルをコピーして貼り付けることができると便利ですが、レイヤーを選択して右クリックして直接コピーまたは複製できると便利です。

Pythonコマンドのように、これを行う簡単な方法はありますか?


更新:@dakcartoの提案は完全に機能します。多くの複製レイヤーを追加する必要があったので、必要なだけループするようにそれを適応させました。

for n in range(1,5): 
    iface = qgis.utils.iface; vl = iface.activeLayer(); iface.addVectorLayer(vl.source(), vl.name() + "_clone" + str(n), vl.providerType())

唯一の問題は、新しいレイヤーがactiveLayerになるため、「_ clone」と番号を以前の名前に追加し、最後にexample_clone1、example_clone1_clone2、扱いにくいexample_clone1_clone2_clone3_clone4_clone5まで追加します。今、最初に選択したレイヤーから複製する方法を理解する必要があります。


これは正解ではありませんが、同じベクターレイヤーをプロジェクトに2回追加しても、QGISは気にしません。
L_Holcombe 2012年

はい、後で多くの複製を追加しましたが、「レイヤーを追加」し、毎回レイヤーを参照して選択するだけです。最小4回のクリックといくつかのスクロール。これは、レイヤーを20回複製する必要があるために面倒になります。
シンバマング

1
@Simbamanguこれにはさまざまな見方があります。GISwikiを調べました。私はあなたの意見に間違いなく感謝します。質問のタイトルは、質問の要旨についての説明文と考えています。それはすべて質問に関するものなので、「どうすればよいのか」、「なぜなのか」というイントロは、これが質問であることは明らかであるため、何も新しく追加しません。それは質問を読みやすくするかもしれませんが、とにかくあなたはそれが何であるかを見るために質問の本文を見なければなりません。「How do I ...」で始まる質問のページ全体を表示することは、少なくとも私にとって非生産的です。
TomazicM

1
そして、私があなたの古い質問のタイトルを変更した理由は?誰かのアクションのためにGISホームページにぶつかり、質問の「方法」と「理由」の部分を削除する(悪い)習慣があることを認めます。
TomazicM

1
@Simbamangu私は個人的に「How」と「Why」のない質問を好みます。これらの単語はコンテンツに何も追加しないからです。タイトルはもっと読みやすくなるかもしれませんが、タイトルが少し曖昧な場合でも問題はありません。とにかく質問の本文を読んで、すべての内容を確認する必要があるからです。そして、PolyGeoがそれを行っているのを見た後、それらの単語を削除し始め、質問を投稿/編集する際の良い習慣に関するメタ記事を読んだことを認めます。
TomazicM

回答:


10

これに関して2つの機能リクエストがあります(#5899および#1483)。これは確かに実行可能な機能であり、開発者が追加に関心がある場合は、バージョン2.0に含まれる可能性があります。または、Pythonプラグインの開発者が考慮しました。

#5899の問題には、レイヤーを複製するためのいくつかのPythonコードも含まれます(開発者Giuseppe Sucameliから提出)。

それまでの間、ベクターレイヤーを選択し、QGis pythonコンソールを開いて実行します。

iface = qgis.utils.iface; vl = iface.activeLayer(); iface.addVectorLayer(vl.source(), vl.name() + "_clone", vl.providerType())

前のコードは、同じサブレイヤーをマップに追加します。

前のように1行のpythonスクリプトを使用してそれを行うのは困難ですが、サブレイヤー名がわかっている場合は、my_sublayer_nameがサブレイヤーの名前で置き換え vl.source()vl.source().split("|")[0] + "|layername=my_sublayer_name"ください。

複製コードを実行すると表示されます。元のレイヤーのスタイルをコピーして貼り付ける必要があります。


完璧に動作します。レイヤースタイルを貼り付けるキーとして「v」を追加すると、レイヤーとスタイルの複製に数秒しかかかりません。
シンバマング

この機能は、リビジョンc11df1aa79で実装されています。hub.qgis.org/projects/quantum-gis/repository/revisions/...
ウラジミール

2
マスターブランチへのコミットのPythonバインディングは次のようiface.setActiveLayer( my_layer );iface.actionDuplicateLayer().trigger()に機能します。my_layerはQgsMapLayerで、凡例でアクティブで選択されたレイヤーに設定されます。次に、actionDuplicateLayer()がトリガーされて、凡例で選択されたレイヤー(デフォルト)を操作します。
dakcarto

1

QGISの最近のバージョンには、「レイヤーの複製」オプションがあります。複製するレイヤーを右クリックすると、すぐ下に新しいコピーが挿入されます。

補足:View --> Refresh1つのレイヤーで行われた変更を次のレイヤーに反映させるには、ヒットする必要があるようです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.