GRASSプラグインでは GRASS GIS [?] データベースと機能を利用できます。ここには GRASS ラスタとベクタレイヤの表示とベクタレイヤのデジタイズ、ベクタ属性の編集、新規ベクタレイヤの作成、300個以上のGRASSモジュールを使ったGRASS 2Dと3Dデータの解析を含みます。
このセクションではプラグインの機能とGRASSデータの管理と操作の例を紹介します。以下のメインの機能はGRASSプラグインを立ち上げた時にツールバーメニューで提供されています 。機能については セクション 7.1に記述されています:
QGISでGRASS の機能利用とGRASSベクタとラスタレイヤの表示を行いたい場合プラグインマネージャでGRASSプラグインを選択してロードして下さい。 そのためには プラグイン メニューの プラグインの管理 ,で GRASS ▸ を選択して OK をクリックして下さい。
これで既存のGRASS LOCATION (セクション 7.2参照)からラスタとベクタレイヤをロードできます。または新規に GRASS LOCATION を QGIS (セクション 7.3.1参照) で作成してGRASS ツールボックス (セクション 7.9参照)を使って後で解析するためにいくつかのラスタとベクタデータをインポートできます (セクション7.4参照)。
GRASSプラグインを利用するとツールバーメニューの適切なボタンを使ってベクタやラスタレイヤをロードすることができます。例としてQGIS alaska データセットを使ってみます(セクション 1.4参照)。 ここにはGRASSの小規模なサンプルがありあます。サンプルでは3個のベクタレイヤと1個のラスタ標高マップを保有する LOCATION があります。
ご覧のようにQGISでGRASSのラスタとベクタレイヤをロードする手順はとても簡単です。以下のセクションではGRASSデータの編集と新規 LOCATIONの作成について説明します。 GRASS LOCATIONs のさらに多くのサンプルはGRASS ウェッブサイト http://grass.osgeo.org/download/data.phpにあります。
GRASS データはGISDBASEとして参照されるディレクトリに格納されます。このディレクトリは grassdataと呼ばれ, QGISでGRASSプラグインを使った作業を行う前に 作成されていなければいけません。このディレクトリで GRASS GIS データはプロジェクトによってLOCATIONと呼ばれるサブディレクトリに格納されます。 それぞれのLOCATION は座標システム、地図投影、地理的な境界によって定義されます。それぞれの LOCATION は多くの MAPSETs (LOCATIONのサブディレクトリ) を持てます。MAPSETはプロジェクトを異なるトピック、領域、ワークスペースで分割し 独立したチームメンバーを作成します (Neteler & Mitasova 2008 [?]). ベクタとラスタレイヤをGRASSモジュールで解析するためには、それらをGRASS LOCATIONにインポートしなければいけません。 1
例としてGRASS LOCATION alaskaがどのように作られているか解説します。これは Albers Equal Area 投影法で投影されていて、フィートの単位で作成されているQGISのサンプルデータセットです。 このサンプルThis sample GRASS LOCATION alaska は全ての例と以下のGRASS GISに関する章における練習に利用されます。 これはあなたのコンピュータにダウンロードしてインストールすると便利なデータセットです 1.4).
ここまでの過程が煩雑だと感じる場合は、全ての作業を行う必要は無く、簡単な方法はLOCATIONを作成するだけです。
LOCATION/span>
alaska
はデータのインポートができます (セクション
7.4
参照)。またthe sample GRASS
ロケーション alaska に含まれる QGIS alaska データセットにある既存のベクタ、ラスタデータを利用できます。
1.4
とセクション
7.5
参照。
ユーザーは自分が作成したGRASS MAPSET にのみ書き込み権限を持ってアクセスできます。 このことは、他のユーザーのMAPSETを読むことはできるけれども、地図の変更や削除は自分の MAPSETに対してしか行えないことを意味します。 全ての
MAPSET には WIND ファイルがあります。そのファイルには境界の座標値と現在選択されているラスタの解像度が格納されています(Neteler & Mitasova 2008 [?], セクション7.8参照).
このセクションではQGIS alaskaデータセットで提供されている alaska GRASS LOCATION にラスタとベクタデータをどのようにインポートするかの例を解説します。
ここではQGIS alaskaデータセットのlandcoverラスタマップ landcover.img とベクタGMLファイルlakes.gml
を利用します 1.4.
デジタイジングを行う前にGRASSベクタデータモデルを理解することは重要です。 一般的にGRASSはトポロジカルベクタモデルを利用しています。 これは領域が閉じたポリゴンによってではなく1本かそれ以上の境界線によって表わされていることを意味します。
近接した領域に挟まれた境界線は1回のデジタイズで作成して両側の領域によって共有されます。境界線は必ず接続されていて隙間無しに閉じている必要があります。
領域は領域の 中心点(centroid)で識別(とラベル表示)が行われます。
境界線と中心点(centroid)の他にベクタマップではポイントとラインが利用できます。それらのすべてのジオメトリエレメントは一つのベクタに混在できますがGRASSのベクタマップ内では異なる ’レイヤ’ として表現されます。ですから
GRASS のレイヤとはベクタ またはラスタマップとは異なり、ベクタレイヤ内でのレベルのことになります。このことは重要ですので慎重に区別して下さい。
3
単一のベクタデータセットに複数の ’レイヤ’を格納することは可能です。 たとえば fields, forests と lakesは一つのベクタに格納可能です。 隣接したforest と lake は境界線を共有できます、しかしそれらは異なる属性テーブルを持ちます。属性を境界線に接続することができます。
たとえばlake とforestの間の境界線が道の場合があります、その場合それが異なる属性テーブルを持ちます。
’レイヤ’の特徴はGRASS内の ’layer’で指定します。データセットに複数のレイヤがある場合 ’Layer’は番号で定義されます 。たとえばジオメトリが forest やlakeの場合です。 現在は番号で識別されます
GRASS では将来ユーザーインターフェースでフィールドとして名前もサポートする予定です。
GRASS のLOCATION に属性を格納することが可能です。それはDBase または SQLITE3 またはたとえば PostgreSQL, MySQL, Oracle, のような外部データベーステーブルに格納できます。
Attributes in データベーステーブルに格納された属性はジオメトリエレメントに ’category’ の値を使ってリンクされます。 ’Category’ (key, ID) は整数でジオメトリ要素に関係つけられます、それはデータベーステーブルのキーカラムの一つにリンクされます。
GRASSプラグインを利用して新しいGRASSベクタレイヤを作成するためには
[新しいGRASSベクタを作成する]アイコンをクリックして下さい。テキストボックスに名前を入力した後でポイント、ライン、ポリゴンジオメトリのデジタイジングを セクション
7.7
で記述してある方法で開始できます。
GRASS では各種のジオメトリタイプ (ポイント、ライン、ポリゴン)を1個のレイヤに格納することが可能です。なぜならば GRASS はトポロジカルベクタモデル
を利用しているからです。それゆえ新しいGRASSベクタを作成する時にジオメトリタイプを選択する必要はありません。これはQGISでShapefileを作成する手順とは
異なります。なぜならばShapefileは単純な地物ベクタモデルを利用しているからです (セクション
3.5.5参照)。
GRASS ベクタレイヤのデジタイジングツールはツールバーの Edit GRASS vector layer
アイコンで利用できます。GRASSベクタがロードされていることと凡例でそのレイヤが選択されていることを編集ツールをクリックする前に確認して下さい。 図 7.4 では編集ツールをクリックすると表示されるGRASS編集ダイアログを表示しています。 このツールと設定については後のセクションで言及しています。
図7.3はGRASSプラグインが提供する GRASS デジタイジングツールバーアイコンです。表 7.1 では利用できる機能を説明しています。
Icon Tool Purpose 新規ポイント 新しいポイントをデジタイズする 新規ライン 新しいラインをデジタイズする (新しいツールを選択すると終了) 新規境界線 新しい境界線をデジタイズする (新しいツールを選択すると終了) 新規中心点 新しい中心点をデジタイズする (ラベルが存在するエリア) 頂点の移動 既存のラインまたは境界線上の1個の頂点を移動して新しい位置に置く 頂点の追加 新しい頂点を既存のラインに追加する 頂点の削除 既存のラインから頂点を削除する (別のクリックで選択頂点を確認する) エレメントの移動 選択されている境界線、ライン、ポイントまたは中心点を移動して新しい位置をクリックする ラインの切断 既存ラインを2つの部分に切断する エレメントの削除 既存の境界線、ライン、ポイントまたは中心点を削除する (別のクリックでエレメントの選択を確認する) 属性編集 選択されたエレメントの属性を編集する (注 一個のエレメントは複数の地物の場合があります、上記参照) 閉じる セッションを閉じて現在のステータスを保存します (その後トポロジーを再構築します
)
カテゴリー
タブではカテゴリー0の値を新しいジオメトリエレメントに割り当てる方法を指定できます。
設定
タブではスナッピングをスクリーンピクセル単位で設定できます。 この閾値は新しいポイントまたはラインの端点が既存のノードにスナップされる距離を示します。
これは境界線の間に隙間を作らないようにするため利用できます。 デフォルトの設定は10ピクセルです。
シンボロジー
タブでは多彩なジオメトリタイプとトポロジカルステータス(例えば 閉じてる/開いている境界線)に対してシンボロジと色の定義を見ることと設定することができます。
テーブル
タブは ’layer’のデータベーステーブル情報を提供します。ここでは既存の属性テーブルに新しいカラムを加えたり
新しいGRASSベクタレイヤのために新しいデータベーステーブルを作成することができます (セクション
7.6参照)。
GRASSにおけるregionの定義 (空間的な作業ウィンドウの設定) はラスタレイヤを使った作業で重要です。デフォルトで
ベクタ解析処理は領域指定の制限がありません。しかし新規に作成されたラスタではそのラスタ独自の空間領域と解像度に関係なくカレントで定義されているGRASS regionの空間領域と解像度が適用されます。 カレントGRASS regionは $LOCATION/$MAPSET/WIND ファイルに格納されています。 それは北、南、東、西の境界と行と列の数、水平、垂直の
解像度で定義されています。
GRASS region をQGISキャンバスに表示/非表示する切替を
[現在のGRASSリージョンを表示]アイコンで行えます。 .
[現在のGRASSリージョンを編集]アイコンを使ってダイアログを開き現在のリージョンを変更したり、QGISキャンバスに描画するGRASSリージョン四角形のシンボロジーを変更できます。新しいリージョンの境界や解像度を入力した後で [了解]ボタンをクリックして下さい。ここでは新しいリージョンの領域をQGISキャンバス上でのマウス操作でインタラクティブに指定することもできます。QGISキャンバス上で左クリックを行った後で四角形を描画します。マウス左ボタンの再クリックでそれを終了した後、[了解]ボタンをクリックして下さい。
g.region
GRASSモジュールではラスタ解析のためにregionの領域や解像度を調整するためにさらに多くのパラメータを指定できます。セクション
7.9
で記述されているようにGRASSツールボックスでは3個のパラメータが指定できます。
GRASS ツールボックスを開くと
選択されている GRASS LOCATION and MAPSETでGRASSモジュールの機能を利用できます。
the GRASS ツールボックスを利用するためには書き込み権限がある LOCATION と MAPSET (通常はあなたが作成したMAPSETには権限があります)を開いておく必要があります。 なぜならば解析処理の結果新しいラスタまたはベクタレイヤが選択されているLOCATION and MAPSETに作成されるから書き込み権限が必要になります。
GRASSツールボックスの内部にあるGRASSシェルでは殆どすべての(300以上)GRASSモジュールをコマンドラインインターフェースで利用できます。さらにユーザーフレンドリな実行環境として約200のGRASSモジュールと機能がグラフィカルダイアログで利用できます。
それらのダイアログはカテゴリに分かれていますが、簡単に検索もできます。
GRASSモジュールの完全なリストはQGISバージョン1.6.0のグラフィカルツールボックスで利用可能になり、それの解説はGRASS
wiki ( http://grass.osgeo.org/wiki/GRASS-QGIS_relevant_module_listに記述されています。
GRASS ツールボックスの内容をカスタマイズすることも可能です. この手順はセクション
7.9.4で解説されています。
As shown in 図 7.8にあるようにGRASSモジュール群をテーマ別にグループしたものを
Modules Tree
で探すことができ、さらに検索可能な
Modules List
タブがあります。
グラフィカルモジュールアイコンをクリックすると新しいタブが追加されツールボックスダイアログには3個の新しいサブタブが表示されます
Options
,
Output
と
Manual
です。 図 7.9 にあるように GRASS モジュールv.bufferを例として見て下さい。
Options
タブでは QGISキャンバスに表示するベクタ、ラスタレイヤの選択とモジュールを実行するためのパラメータの指定をするモジュールダイアログを簡素化しています。 提供されているモジュールパラメータはしばしばダイアログ上で整然としていないです。
もしさらに詳しいモジュールパラメータやフラグを利用したい場合はGRASSシェルを起動してコマンドラインからモジュールを起動して下さい。
QGIS 1.6.0 では新しい機能としてアドバンストオプションの表示
▸7.3.2 新しいMAPSETを追加する
7.4 GRASS LOCATIONへデータをインポートする
7.5 GRASS ベクタデータモデル
7.6 新しいGRASS ベクタレイヤを作成する
7.7 GRASS ベクタレイヤのデジタイジングと編集
ツールバー
カテゴリータブ
設定タブ
シンボロジータブ
テーブルタブ
7.8 GRASS region ツール
7.9 GRASS ツールボックス
7.9.1 GRASSモジュールで作業を行う
Options
Output タブではモジュールの出力状況情報を提供します。 Run ボタンをクリックするとモジュールは Output タブに切り替えられ、解析プロセスの情報を見ることができます。 すべてがうまく動作した場合、最後に Successfully finished メッセージが表示されます。
Manual タブにはGRASSモジュールのHTMLヘルプページが表示されます。これを利用してさらに詳しいモジュールのパラメータやフラグを調べモジュールの利用について深い知識を得ることができます。 それぞれのモジュールのマニュアルページはMain Help index, Thematic index と Full indexのリンクから参照できます。これらのリンクの情報は if you use the module g.manualモジュールを使って見る情報と同じです。
以下はいくつかのGRASSモジュールの力を利用した利用例です。
最初のサンプルは標高ラスタ(DEM)からベクタ等高線マップを作成する例です。Alaskaデータが設定されているとして セクション 7.4で記述されている LOCATION の設定を行います。
この領域は広いので表示が行われるまではしばらく時間がかかります。レンダリングが終了するとラインの色を変えるためのレイヤプロパティウィンドウを開くことができます。ここで3.4にあるような方法で標高ラスタに重ねて等高線をクリアに表示させることができます。
次にAlaskaの中部の小さい山の多い地帯をズームして下さい。拡大していくと等高線が鋭い角をもっていることに気づくでしょう。 GRASSでは v.generalize ツールを使って全体の形状を保ちながらベクタマップをほっそりとさせることができます。 このツールは様々な目的のために様々なアルゴリズムを利用します。 いくつかのアルゴリズムは (たとえば Douglas Peuker と Vertex reduction) ラインからいくつかの頂点を除去して簡素化します。その結果のベクタは高速にロードできます。 このプロセスは小スケールの地図に時に不必要に高密度のベクタのベクタを使わなければいけない場合に利用します。
しかしこのサンプルの目的は違います。 r.contour で作成した等高線は鋭い角をもっているのでそれをスムーズにすべきです。 v.generalize のアルゴリズムには Chaikens がそれを行えます (また Hermite splines でもできます)。 これらのアルゴリズムはベクタに頂点を 追加 できることに注意しなければいけません、それによってデータのロードがさらに遅くなります。
標高レイヤを表示して地図に3D効果を加える方法はたくさんあります。上記の等高線を表示する方法は地理的な地図を作成する場合に利用されるポピュラーな方法です。 3D効果を表示する別な方法として陰影起伏の利用があります。 陰影起伏効果はDEM(標高)ラスタで作成されます。最初にそれぞれのセルの傾斜と傾斜方位を計算します。それから空中の太陽の位置とそれぞれのセルの反射率を想定 します。 こうやって太陽に面して光が当たっている部分と太陽から隠れて(陰になって)いる部分が判明します。
この時点で陰影起伏のグレイスケールマップの 上に gtopo30 標高のカラーランプとtransparency の設定が表示されます。陰影起伏の表示効果を確かめるために gtopo30_shade 地図を非表示にした後で表示したりして下さい。
QGISのGRASSプラグインはモジュールやオプションについて詳しくないGRASSの初心者向けにデザインされています。それゆえいくつかのモジュールはツールボックスでオプションのすべてを表示していません、またいくつかのモジュールはツールボックスに表示されません。 GRASS シェル (またはコンソール) ではそれらのツールボックスツリーに表示されないGRASS モジュールやツールボックスのシンプルなデフォルトパラメータで表示されないモジュールのオプションを利用できます。ここの例では 上記の r.shaded.relief モジュールでの追加オプションを利用してみます。
モジュール r.shaded.relief ではzmult パラメータで標高の値を X-Y 座標単位に比べて増幅させて陰影起伏の効果を増大させることができます。
次の例ではGRASSモジュールでラスタデータを集計してベクタマップのポリゴンにその統計量をカラムとして追加してみます。
GRASS ツールボックスにあるその他の便利な機能はGRASS LOCATION ブラウザです。 図 7.14 にあるように作業をしている LOCATION と MAPSETsの状況を見ることができます。
ブラウザの左側のウィンドウで現在のLOCATION内のすべてのMAPSETs をブラウズできます。右側のブラウザウィンドウでは選択されたラスタまたはベクタレイヤのメタ情報、例えば解像度、境界線領域、データソース、ベクタデータに関連する属性テーブル、コマンド履歴等が表示されます。
Browser タブ内部のツールバーでは以下のツールで選択した LOCATIONで操作できます:
選択地図の名前を変える と 選択地図を削除する は選択されている MAPSETの地図に対してのみ作業できます。すべての他のツールは 他の MAPSETのラスタとベクタのレイヤに対して作業できます。
ほとんどすべてのGRASS モジュールを GRASSツールボックスに追加できます。 XML インターフェースが提供されていてツールボックスにおけるモジュールの表示とパラメータの記述はシンプルなXMLファイルで構成されています。
モジュール v.buffer (v.buffer.qgm) のために作成されたXMLファイルの例は以下の通りです:
モジュールを選択するとパーサは定義を読んでツールボックスの内部に新しいタブを作成します。新しいモジュールの追加、モジュールのグループの変更等に関するさらに詳しい情報は以下のQGIS wikiを参照して下さい
http://www.qgis.org/wiki/Adding_New_Tools_to_the_GRASS_Toolbox.