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定義は拡張.qgm、各QGIS-GRASSモジュールのいずれかで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 --- "はい" または "いいえ"、デフォルトは "no" です。「はい」に設定すると、オプション/フラグは最初は隠れてする高度なオプションパネルと追加され、「詳細オプションの表示]を>>」ボタンは、単純な(基本、標準)オプションの下に表示されます

  • 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" />
    

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

舞台裏で

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

v.overlay.and.1.svg、v.overlay.and.2.svg、v.overlay.and.3:画像の名前は、例えば、ピクチャ番号、添付されたQGIS、GRASSモジュール名で始まります。 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に報告してください(より良いのは:それをご自分で修正してパッチを送ってください)。