GRASSツールを追加

QGISはGRASSのシェルから起動された場合やGRASSマップセットは、QGISから開かれた場合GRASSモジュールは、QGISの GRASSツール から実行できます。モジュールは、GRASSデータのみで動作します。

メニューとモジュールは両方ともXML設定ファイルで定義されているので、メニューを変更して新しいモジュールを追加するのは簡単です。以下では、新しいモジュールを作成し、メニューツリーを変更する方法を説明しています。

モジュール構成

バックグラウンド

モジュールの _*オプション_* タブに示された各モジュールのオプションは、QGM(QGIS GRASSモジュール)GRASSモジュールまたはGRASSスクリプト--- GMO(GRASSモジュールオプション)内のファイルやオプション定義で定義の組み合わせに応じて作成されます。QGMの各オプションが1つ(またはそれ以上)のGMOにリンクされているため、GMOを確認することは必要ではないにしてもしばしば便利です。GMOは _*--interface-description_* オプションで実行されている場合、GRASSモジュールによって出力され、出力はXML形式であります、例えば:

r.to.vect --interface-description

いくつかのGRASSモジュールには、初心者が戸惑うほど多すぎるオプションがあります。QGMではそれらのうち一部だけを定義したり、おそらくいくつかのデフォルト値を設定したり、かつ/または、特定の値を持ついくつかのオプションを非表示にすることも可能です。すなわち、より多くのQGIS-GRASSモジュールを各GRASSモジュールのために定義できます。例えば、モジュールr.to.vectは、予め定義された「機能」オプションを持つ3つのQGIS-GRASSモジュールに分割されました。QGM定義は、各QGIS-GRASSモジュールに1つの、拡張子.qgmのXML形式のファイルに書き込まれます。設定ファイルは _*qgis/src/plugins/grass/modules*_ ディレクトリに格納され、 _*share/qgis/grass/modules*_ ディレクトリにインストールされています。ファイルの名前は、GRASSモジュール名+特定のタスクを記述する単語で始まる必要があります。例えば、ラスターからベクターラインを抽出するモジュールは r.to.vect.line.qgm という名前です。

これは、設定ファイルの例です。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE qgisgrassmodule SYSTEM "http://mrcc.com/qgisgrassmodule.dtd">
<qgisgrassmodule label="Generate aspect map from DEM" module="r.slope.aspect">
       <option key="elevation" />
       <option key="aspect" />
</qgisgrassmodule>

qgisgrassmoduleタグの属性

  • label ---メニューツリーで使用される説明

  • module --- GRASSモジュールの実行可能ファイルまたはスクリプトの名前。

オプションタグ

各qgisgrassmoduleタグには、1つ以上のオプションタグを含めることができます。

  • option ---たとえば、GMOパラメータタグに対応しています。

<option key="elevation" />
  • flag ---例えば、GMOフラグタグに対応します。

<flag key="o" answer="on" hidden="yes" />
  • field ---ベクターレイヤーのためのオプションが利用可能なフィールドとコンボボックスとして作成され、属性フィールドを定義します。例えば(v.to.db.qgm):

<field key="column" layer="map" type="integer,double" label="Attribute field" />
  • selection ---これは非常に興味深いオプションの有用なタイプです。これは、QGISインタフェースを使用してGRASSベクターカテゴリのリストを定義できます。地物(およびそのカテゴリ、GRASSの地物IDに相当)は、「地物の選択」ツールまたは属性テーブル内のいずれかで選択できます。カテゴリのリストが動的に更新されます。例(v.extract.list.qgm):

<selection key="list" layerid="input" label="Cats" />

共通オプション/フラグタグの属性

  • key --- GMOのモジュールオプションの名前。

  • answer ---デフォルト値(GMOのデフォルト値を上書きします)。値「オン」がフラグをオンに切り替えます。

  • hidden ---オプションがダイアログボックスに表示されませんが、モジュールは(「はい」=非表示)このオプションを指定して実行されます。

  • label ---オプションのラベル

  • advanced --- 「はい」または「いいえ」、デフォルトは「いいえ」です。「はい」に設定すると、そのオプション/フラグは初期的には表示されない高度なオプションのパネルに追加され、「高度なオプションを表示>>」ボタンが単純な(基本、標準)オプションの下に表示されます

  • version_min --- このオプション/フラグが有効である最小のGRASSバージョン

  • version_max ---このオプション/フラグが有効である最大GRASSバージョン

オプションタグ固有の属性

  • typeoption ---このオプションは、モジュールが実行されると、選択されたベクターレイヤーの種類は、そのオプションに使用される、ベクター入力タイプオプションの名前を定義するためにベクターレイヤーと共に使用できます。例えば(v.overlay.or.qgm):

    <option key="ainput" typeoption="atype" layeroption="alayer" typemask="area,line" />
    

    レイヤーがこのオプションのコンボボックスから選択された場合 _*atype*_ オプションが自動的にレイヤーのタイプに設定されているので、 _*atype*_ を追加する必要がまったくないことになります。

  • layeroption ---レイヤーに対するtypeoptionと同等のもの。

  • typmask ---は、ベクター入力オプションの許可されたタイプを定義します。定義されたタイプの一つのレイヤーのみが入力に表示されています。例は v.overlay.or.qgm を参照してください。

フィールドタグ固有の属性

  • layer ---このフィールドが依存すべきベクターを定義するオプションのキー属性

  • type ---例えば、フィールドコンボボックスに追加されるべき属性フィールドのタイプを定義

    <field key="column" layer="map" type="integer,double" label="Attribute field" />
    

    これは、整数と倍精度での型の属性フィールドだけがコンボボックスに表示されることを意味します。例は v.what.vect を参照(2つの異なるベクター)。

舞台裏で

QGIS-GRASSモジュールの実装のアイデアは、GMOから最大の情報を使用して、唯一のインタフェースを簡素化することです。ここではない、それらのすべてがGMOで定義されている場合はGMOからの情報を使用しているために、どのようにされているいくつかのルールを説明しています。

  • label ---ラベル属性がQGMで定義されている場合はオプションのラベルとして使用され、それが定義されていない場合はGMOオプションラベルのタグが使用され、それが定義されていない場合はGMOオプションの説明タグが使用されます

  • tooltip ---(マウスオーバー上のオプションをappeares)ラベルが定義されている(いずれかQGM又はGMOにおける)と説明をGMOに定義されている場合(従って、ラベルおよび説明が異なる)GMO記述タグはツールチップのために使用されます

  • オプションは、GMOの値タグに定義され、記述タグ(v.distanceのアップロードオプションなど)の可能な値の定義されたリストを有するタイプ複数ある場合*複数の値は、*ラベル---これは、チェックボックスのラベルとして使用され、次いで

画像

各モジュールは、モジュールの機能を象徴するピクチャ/アイコンによっても表現されなければなりません。ピクチャはまた、SVG(* .SVG)またはPNG(* .PNG)ファイルとして plugins/grass/modules にも格納されています。

現在、ピクチャのための3つのスキーマがサポートされています。

  • 1枚のピクチャ

  • 2枚のピクチャ--- QGISはアイコンが作成されます:1 - > 2

  • 3枚のピクチャ--- QGISが作成されたアイコン:1 + 2 - > 3

画像の名前は、ピクチャ番号を付されたQGIS-GRASSモジュール名で始まります、例えば:v.overlay.and.1.svg、v.overlay.and.2.svg、v.overlay.and.3.svg。SVGおよびPNG画像を組み合わせることが可能です。

SVGおよびPNG画像は 地図コンポーザ を使用してQGISから生成できます。PNG画像の大きさは、予想されるアイコンのサイズよりも大きくする必要があります。それらは後に自動生成された文書で使用されることが予想され、そこでは写真はより大きなサイズで使用されるためです。

QGIS GRASSスクリプト

新しいスクリプトが安定したGRASSのリリースに追加されるまでは長い時間がかかることがあるため、またいくつかのスクリプトはQGIS GUIインターフェイスのためにのみ役立つため、QGISに「GRASS」スクリプトを追加することが可能です。スクリプトは、GRASSスクリプトのための一般的な要件に従わなければならず、それらは qgis/src/plugins/grass/scripts に位置しています。

新しいモジュールの一般規則

GRASSツール は、初心者ではなく非常に経験豊富なユーザーのために主に意図されています。基本的なルールは以下のとおりです。

  • 各モジュールは、3つの以下のオプションを持っている必要があります。それはより多くのオプションを追加する必要があると思われる場合、それは事前に議論されるべきです

  • モジュール定義は、間違ったオプションを指定してモジュールを実行するユーザーを許可しないように、堅牢でなければなりません。オプションの特定のタイプのためのサポートがまだ存在しない場合、モジュールは、メニューに追加すべきではありません

モジュールの説明のための具体的なルール

  • 動詞の3人称を避けてください、例えば「Exports raster」ではなく「Export raster」

  • 不必要な「地図」、「レイヤー」、「ファイル」を避けてください、例えば「ラスター地図レイヤーを書き出し」ではなく「ラスターを書き出し」

  • 不必要な「GRASS」を避けてください、例えば「GRASSラスターを書き出し」ではなく「ラスターを書き出し」

  • 冠詞「a|an」は避けてください、例えば、「Exports a raster」ではなく「Export raster」

  • パディングワードを避けるため、例えば「エクスポートラスター」の代わりに「ラスターのエクスポートを可能にします」

  • 「変換」は避けてください。代わりに、「エクスポート」または「インポート」を使用します。「変換」はGRASS内部の変換に使用します(例えば、ラスタからベクタへの)

  • 頭字語は大文字でなければなりません、例えばasciiではなくASCII

  • 疑わしい場合には、一貫性を維持するために、既存の類似したプラグインを確認してください

現在使用できないオプション

技術的には、どんなオプションも使用できます。しかし、オプションのいくつかの種類はまだ十分サポートされていません、例えば他のオプションに依存するもの。まだ十分にサポートされていないために現時点では使用すべきでないオプションのリスト(おそらく不完全)は次のとおりです:

  • OGR input dsn/layer (v.in.ogr)

追加できるモジュール

ほとんどのモジュールが追加されました。追加のものが必要な場合は、QGIS開発メーリングリストに書き込み、以下に追加することが最も重要だと思うのモジュールをリストしてください。

新しいQGIS-GRASSモジュール、GRASSモジュールの名前と使用するオプションの名前を掲示する必要があります。例えば:

r.to.vect.area: r.to.vect input output feature=area

ここでの議論については GRASS-QGIS関連モジュールのリスト も参照。

廃止されるモジュール

除去されなければならないモジュールを、この提案の根拠とともに(例:投影に関連するいくつかのモジュールは理解しにくく、一般的な使用ではない)、以下にリストしてください。ご注意:いくつかのモジュールは、徹底的にテストされていません。それらをテストしてください、何か問題を見つけた場合はRedmineに報告してください(より良いのは:それをご自分で修正してパッチを送ってください)。