QGISで異なるスタイルのマップ画像を自動生成しますか?[閉まっている]


9

QGISで、10以上のフィーチャで構成される1つのレイヤーのみを含むシンプルなマップを取得しました。次に、同じ領域の約200の異なるJPEGマップイメージを(プログラムで)生成する必要があります。各マップには、非常に同じマップ範囲とすべてのフィーチャが表示されている必要があります。ただし、生成された各マップでは、フィーチャの色のセットが異なる必要があります。詳細には、次のような、各機能の分類された色(各画像に1行、1列に1色、機能ごとに色)を含むCSVファイルがあります。

"A","B","C","D","E","F" (header line, 6 columns in this file)
"#000000","#FF0000","#00FF00","#0000FF","#0000FF","#808080"
"#000000","#FF0000","#FF0000","#00FF00","#00FF00","#808080"
"#FF0000","#FF0000","#000000","#800080","#FFFFFF","#FFFF00"
...

私の現在の計画は、Perlまたは同様のものを使用して、このCSVファイルに基づいて200の異なるQMLファイルを作成することです。次に、Pythonスクリプトを記述して

  1. QMLファイルをループする
  2. 各QMLファイルを1つずつ開き、そこからレイヤースタイルを適用します
  3. Map Composerを開き、ラスターイメージファイルを保存します
  4. Map Composerを閉じて、次のQMLファイルにジャンプします

私は今、次のことに関する任意の入力を求めています:

  • これはQGIS + Python内で実行できますか?
  • 私の目標を達成するためのより良い方法はありますか?
  • これを達成するための既存のソースコードまたはプラグインのヒント?

回答:


21

これはPythonプログラミングなしでQGISで可能ですが、2.4のリリース後に追加された機能に依存しているため、QGIS 2.6の現在の開発スナップショットが必要です。必要な手順は次のとおりです。

  • 必要に応じてマップレイヤーを設定します(動的な塗りつぶしを持つフィーチャのカラーリングは無視します)。

  • 新しいPrint Composerを作成します。マップアイテムをコンポジションに追加し、必要に応じてその範囲を設定します。

  • 目的のマップ出力フィーチャの色を含むCSVファイルをインポートします

  • Print Composerで、インポートしたCSVレイヤーを「アトラスカバレッジレイヤー」として設定します(「アトラス生成」タブを探します)。(アトラスを今エクスポートした場合、完全に同じマップの200コピーを取得するはずです...)

ここに画像の説明を入力してください

  • 次に、CSVファイルにリストされている色でスタイルが設定されるように機能を設定する必要があります。これは、レイヤーのスタイルタブの下部にある[データ定義のプロパティ]ボタンを使用して行います。

ここに画像の説明を入力してください

  • 「Color」プロパティにチェックを入れ、「E」ボタンをクリックして式エディターを開く必要があります。

  • 式は次のようになります。

    attribute(  $atlasfeature , 'A' )
    

ここに画像の説明を入力してください

  • 基本的に、この式は「A」列に保存されている値を現在のアトラスフィーチャーから取得します。あなたの場合、この値は色(たとえば#FF0000)になるため、フィーチャはこの色を使用してスタイル設定されます。(この式は、QGIS> 2.4に依存する部分です。「属性」関数は2.4のリリース後に追加されました)。

  • 同様の方法で他のフィーチャのスタイルを設定しますが、必要に応じて「B」、「C」、「D」などの列を使用します

  • Print Composerに戻って、アトラスプレビュー(アトラスメニュー->プレビューアトラス)を有効にし、ツールバーの矢印を使用してCSVファイルの行をステップ実行できます。すべてが正しいようであれば、アトラスメニューのオプションを使用してアトラスをエクスポートします。これで完了です!プログラミングは必要ありません!

出力の例:

ここに画像の説明を入力してください ここに画像の説明を入力してください

などなど

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