GRASSを用いた地理情報システム入門(第3回)


目    次                  

  3-2.データベースの構造
  3-3.データファイル形式
   3-3-1.ラスター型データ
   3-3-2.ベクトル型データ
   3-3-3.サイト型データ
   3-3-4.イメージ型データ
  3-4.領域とマスク
まとめ(3)


第3回目

 第3回目の講義です.今回はGRASSのデータベース構造とデータファイルの形式について説明します.

 実習ではGRASSの基本操作を引き続き説明します(チュートリアルのBを行ないます).


3-2.データベースの構造

 GRASSのデータベースは,通常Unixで利用されている階層型のディレクトリー構造をそのまま用いています.基本的なディレクトリはGISDBASE/LOCATION/MAPSETという3段階になっています.通常,利用者が操作するのはMAPSET以下のディレクトリです.

 

GISDBASE:GRASSのデータベースのトップレベル(最上位)のディレクトリーはGISDBASEと呼ばれています.利用者がGRASSに入る時は,まず,このディレクトリーを指定します.

LOCATION:GISDBASEの下のサブディレクトリーとして地域名を指定します.LOCATION(地域名)は地域ごとに独立したデータベースの名称です.すべてのデータベース検索と修正はこのLOCATION内に限定されます(同時に多数のLOCATIONをGRASSから呼び出すことはできません).

MAPSET:LOCATIONの更に下にサブディレクトリーMAPSETがあります.利用者が選んだMAPSETは現在使用しているMAPSETとして記憶され,コマンドの実行前にLOCATIONとセットで表示されます.データベースへの変更は,指定したMAPSETのみにおいて可能となります.MAPSETのデータは利用者固有のものですが,誰でも読めます.読めないようにするには,ファイルのpermissionsをUnixのコマンド等(例えば,chmodコマンド等)で指定しなければなりません(注意が必要な場合があります).なお,各LOCATIONの中には,すべての利用者が利用可能なPERMANENTとよばれる基本的なデータを含んでいる特別なMAPSETが必要です.

MAPSETの構造:MAPSETはそれぞれのデータベース要素(Elements)としてファイルやサブディレクトリーを持ちます.これらの要素は次のようなものです.

 

SEARCH_PATH:MAPSETのパス(ディレクトリー名)を指定したアスキー形式のファイルです.

WIND:現在の地域の設定情報が入ったファイルです.このファイルは,MAPSET作成時に自動的に作られ,GRASSのg.region コマンドにより修正されます.

GROUP:利用者がグループ(イメージ形式ファイル参照)として指定した画像名を記録します.これは,GRASSのイメージ機能により利用します.

Element(要素):GRASSの中で用いられる要素(実際のデータ・属性等が保存されているディレクトリー名)です.要素のリストの一部を以下に示します.

 

 各要素はMAPSETが作られた時点では必ずしも存在しません.コマンドやアプリケーションによって必要に応じて自動的に作られます(自分で作成しなければならない場合もあります).MAPSETの実際のデータはこれらのElement(要素)の下にあります.

PERMANENT:LOCATIONは必ずPERMANENTというMAPSETを持っています.PERMANENTはMAPSETの1つで,変更してはならないラスターやベクトルのファイル,例えばベースマップなどを保存しておくのに利用します.また,PERMANENTの中にMYNAMEDEFAULT_WINDという2つの特別なファイルが含まれています.その2つは,通常のGRASSのコマンドでは修正されません.MYNAMEはLOCATIONの説明等を含む1行のアスキー形式のファイルです.DEFAULT_WINDはLOCATIONの領域の標準設定値(デフォルト値)が入っています.これらのファイルは,新しくMAPSETを作ったときに自動的に作成され(内容は自分が指定したもの),WINDの初期化等に使います.また,LOCATIONの標準設定として利用者が使用することができます.

データベースの利用ルール:GRASSのデータベースへの利用者からのアクセスはMAPSETレベルごとに制御されており,次の3つの簡単な規則があります:

・利用者がMAPSETディレクトリーの所有者である場合に限り,そのMAPSETを選ぶことができる.

・GRASSが動作している現在のMAPSET中のみファイルの作成,あるいは修正が許される.

・MAPSET中のすべてのファイルは,UNIXのファイルpermissionsによって禁止されないかぎり,誰にでも読める.

SEARCH_PATH:通常,利用者が利用するデータファイルは現在のMAPSETにあります.しかし,ユーザーが他の既存のデータファイルを指定した時は,データベースはファイルを見つけ出すためにサーチ(検索)をしなくてはならない場合もあります.例えば,もし利用者が既存する“SOILS”というラスター地図を利用したいときは,システムは“SOILS”と名付けられたラスターファイルを探すために,種々のMAPSETデータベースを見なければなりません.利用者がMAPSETのSEARCH_PATHを設定することにより,探すMAPSETを指定することができます.SEARCH_PATHは単にMAPSETのリストです.それぞれのMAPSETが順に調べられ,そしてその中で見つかった最初の“SOILS”というラスターファイルが表示されるようになります.このように利用者がSEARCH_PATHを設定することで,他の利用者のMAPSETのデータもアクセスすることができます.このファイルはg.mapsetsコマンドによって追加・修正等をします.

Unixのファイルの利用許可(File Permissions):GRASSが作成するファイルは,一般にそのユーザーに対してはread(読む)/write(書く)が可能,ほかの人に対してはreadのみ可能です.ディレクトリーはユーザーにはread/write/search(探す)が可能で,他の人にはread/searchが可能です.つまり,先ほど説明したように,これはすべての利用者が他の誰のデータファイルでも読むことができることを意味します.MAPSET中のすべてのファイルへの許可は,GRASSのg.accessコマンドを用いてMAPSETディレクトリーの上で,readとsearchの許可を取り去る,あるいは付加することによって制御できます.もし,readとsearchの許可を取り去ったならば,他の利用者は現在の利用者のMAPSETにあるファイルを読むことができなくなります.

 

3-3.データファイル形式

 GRASSのデータファイル形式は基本的に,ラスター型データ,ベクトル型データ,サイト型データ,イメージデータグループなどに分けられます.ここでは,これらの各データ形式のデータ構造およびファイルの内容について簡単に説明します.

3-3-1.ラスター型データ

 GRASSのラスター型データは各格子セルの属性値あるいは数値を示すマトリックスとして,ラスターファイルに保存されます(整数型はディレクトリcellの下,実数型はディレクトリfcellの下).それぞれの格子セルは,長方形(一般的には正方形のほうが解析には便利)で土地をパッチ状に覆うものと考えます.属性値はカテゴリー番号と呼ばれる値が割り当てられます.

 それぞれのラスター型データに対する色々なサポートファイルがあります.サポートファイルは,すべてラスターファイル名と同じ名前がつけられており,それぞれはMAPSETの下にある別のディレクトリーに存在します.これらのディレクトリーとそれらの機能を以下に示します.

 

 GRASSのラスターデータファイルの物理的な構造はuncompressed, compressed,およびreclassedの3つのフォーマットの中の1つをとることができます.

・Uncompressed フォーマット:非圧縮型で,ラスターファイルには,実際に(行)×(桁)のマトリックスのデータが入っています.それぞれのバイト(あるいは,多バイトデータであればバイトセット)がラスター地図レイヤーの1セルを表します.物理的なファイルの大きさは,行×列×(byte/セル) バイトです.

・Compressed フォーマット:圧縮型で,非常に大きなディスク容量を使用するラスターファイルを保存するために用いられます.圧縮はラン-レングス変換(run-length encording)により行われます.ラン-レングス変換とは,同じデータ値の連続をその”値”と”連続する数”の2つで示すことによって,圧縮する方法です.

・Reclass レイヤー:Reclassレイヤーは,直接的なデータを含んでいませんが,参照する地図レイヤーのカテゴリーを再分類表に沿って再分類し,ほかの地図レイヤーとして参照できるようにします.reclassファイルはそれ自身,直接的なデータを持っていません.reclass情報は,ラスターヘッダーファイルに保存されます.

サポートファイル:ヘッダー(Header),カテゴリー(category),カラーテーブル(color table)ファイルなどから構成されます.これらのフォーマットと意味を以下に示します.

ヘッダーファイル(cellhd):下に示したような,ラスターファイルの領域・分解能・データのサイズ等を記述しています.

 

カテゴリーファイル(cats):ラスターファイルの名前,カテゴリ値(番号)とカテゴリーの名前の対応を記述しています.

 

カラーテーブルファイル(colr):ラスターファイルのカテゴリーとそれを表示するための色の対応を記述しています.

 

なお,実数型は整数型に加えて多くのサポートファイルが必要ですので注意してください.GRASSのバージョンの上位に向っては互換性がありますが,下位に向っては互換性がありません.なお,GRASS4.Xで作成したファイルは(GRASS5.0でも,そのままでも使える場合がありますが),r.supportコマンドにより,GRASS5.0の形式に更新して下さい.

実数型に必要なサポートファイル:実数型には上記のサポートファイル以外に,フォーマット(f_format),レンジ(範囲;f_range),変換ルール(f_quant),ヌル(null)などのファイルがあります.これらは,cell_miscディレクトリーの下のラスターファイル名のディレクトリーの下に,それぞれ保存されています.

 

これらの意味を以下に簡単に示します.

・f_format(フォーマット):実数型データのフォーマットを定義しています.

・f_range(レンジ;範囲):実数型データの最大値と最小値を記述しています.

・f_quant(変換ルール):実数型データを整数型に変換する際の方法を記述しています.

・null(ヌル):ヌル値のフラグを記述しています.

 

3-3-2.ベクトル型データ

 GRASSのベクトル型データは,arcs(アーク;弧)と呼ばれる非交差曲線からなるarc-node表現法で保存されています.arcはxy座標のペアの連続として保存され,1つのarcの2つの終端点は,node(ノード;節)と呼ばれています.2つの連続したxyのペアがarcの各セグメントを示します.

 arcは,1つ,または結合した他との組み合わせで,より高度な地図要素であるline(ライン;線(例えば,道路あるいは河川)),あるいはarea(エリア;領域(例えば農地))を形成します.線的な形(linear feature)を形成するarcは,line(線)と呼ばれ,そして,area(領域)の輪郭となるarcはarea edge(領域境界線),あるいはarea line(領域線)と呼ばれています.

 それぞれの線や領域には,カテゴリー番号と呼ぶ整数の属性値が割り当てられます.ベクトル型データの情報は多くのデータファイルに分けられて保存されます.1つのベクトル地図レイヤーを構成するファイルはすべて同じ名前を持ち,それぞれはMAPSETの下の異なったディレクトリー(要素element)に保存されます.これらのディレクトリー(要素)とその機能(function)を以下に示します.

 

実際に使われるarcの情報は,digディレクトリにバイナリー形式のファイルとして保存されます.ASCIIフォーマットで表現したものはdig_asciiディレクトリに保存されます.データはヘッダー部分とデータ部分の2つから構成されます.ヘッダー部分にはベクトルデータの諸情報(作成者・作成日時・スケール・領域等)を示しています.このヘッダー部分のフォーマットを次に示します:

 

 arcの情報は,このヘッダーに続いています.それぞれのarcは形の記載とそれに続く一連のxy座標のペアより表現されます.形の記載部分は

  arcのタイプ(A:領域境界,あるいは,L:線)+点の数

の2つで示します(例えば,3点からなる線はL 3,5点から構成される領域は,A 5など).そして,実際のxy座標点が次に続きます(以下は,UTM座標系の例です).

 

ベクトルカテゴリー属性ファイル(dig_att):ベクトル地図レイヤーにおけるそれぞれの線や領域に,それぞれカテゴリー番号を割り当てます.dig_attはASCII形式のファイルで,各線や領域に関してそれぞれ,座標マーカーとカテゴリー番号を指定したつぎのようなものです.

 

 座標マーカーとはdigファイルにおける線や領域を特定するために用いられます.そのためには,線や領域をユニークに識別できるような位置を示していなければなりません.特に,領域(A)の座標マーカーは領域の内部になければなりません.また,線(L)の座標マーカーは,線を確実に示す座標でなければならず(他の線との交点ではだめ),かつ,node(節;端点)を指定してはいけません.

 このdig_attファイルに記載されていない線や領域は,unlabeled(ラベルなし)として取り扱われます.注意しなければならないのは,ベクトル→ラスター変換などを行う際に,ラベルなしの領域はカテゴリーゼロとして変換され,また,ラベルなしの線は無視されます.

カテゴリーラベルファイル(dig_cats):各カテゴリー値(番号)にカテゴリー名をラベルとして付けます.記述方法やフォーマット形式はラスターのカテゴリーファイルと同じです.

 

3-3-3.サイト型データ

 点のデータはsite list(サイト(位置)リスト),あるいはsite file(サイト(位置)ファイル)と呼ばれ,ASCII形式でファイルに保存されます.サイトファイルはデータベース要素(ディレクトリー)のsite_listsの下に保存されます.サイト型データファイルの例を示します.

 

 

3-3-4.イメージ型データ

 人工衛星などによって撮影されたデジタル画像データ(リモートセンシング画像)やイメージスキャーナによってデジタル化された航空写真などは,各セルの情報を波長帯(バンド)ごとなどに分けファイル化し,多バンド(マルチバンド)ファイルとして構成されることが一般的です.例えば,ランドサットのTMデータはバンド1からバンド7までに分けられています.この様な多バンドの画像は同じ領域で同じ分解能を持つなど,値以外は同じであることが多いために,それらをまとめて1つのグループとして取り扱うと便利です.このためのデータ形式にラスター型データをグループとして取り扱うイメージ型データ(GROUP)があります.画像は個々は通常のラスター型データですが,グループとして扱うことにより,画像データの入力,位置合わせや統計解析等を行う場合に有効です.

 

3-4.領域とマスク

 GRASSにはデータの表示や解析などを行う区域を限定するためのREGION(領域)およびMASK(マスク)という2つのメカニズムがあります.利用者はREGIONで長方形の区域を限定し,さらにオプションとしてMASKによって,その領域内でのセルレベルの取り扱い領域を制限でます.

 REGIONとMASKは利用者の現在使用しているMAPSETの下に保存されます.GRASSのプログラムは自動的にそのREGIONの中のデータだけを表示・検索・計算します.さらに,MASKが設定されていれば,MASKの範囲だけに処理は限定されます.

 REGIONはコマンドg.regionやd.zoomを用いることによって設定され,設定内容はMAPSET中のWINDファイルに記述されます.また,このファイルは,単に地理的な領域境界だけでなく,セルの解像度等も指定できます.

 MASKは,r.maskコマンドにより設定できます.MASKはラスター型データの特殊なファイルであり,他のラスターファイルを読む時に,不透明なフィルターとなります.MASKが設定されていると,図14に示したように,MASK中でNo-data(データなし,カテゴリー値0)となっているセルは,もとの実際の値にかかわらずデータなし(null;図中では0)に対応づけられます.逆に,データあり(カテゴリー値1)となっているセルは,もとの値通りに対応づけます.このことにより,様々な形で取り扱う領域を限定することが可能となります.

図14.MASKの概念図

 


まとめ(3)

GRASSのデータベース構造

 Unixの階層型ディレクトリー構造

  GISDATABASE/LOCATION/MAPSET

  実データ:MAPSETの下のElement

  PERMANETディレクトリー(特別なディレクトリー)

データフォーマット

 ラスター型 格子セルマトリックス(整数:cell,実数:fcellのディレクトリー)

  サポートファイル(名前はすべてデータ名と同じで,ディレクトリーが異なる)

   ヘッダー(cellhd),カテゴリ(cats),カラー(colr)

 ベクトル型 非交差曲線からなるarc-node表現法

  実際の座標データ:digあるいはdig_asciiディレクトリー

  サポートファイル(名前はすべてデータ名と同じ,ディレクトリーが異なる)

   属性ファイル(dig_att)・カテゴリ名(dig_cats)

 サイト型 点のデータ(site_lists)

 イメージ型 多バンドの画像などはグループ(group)

領域とマスク

 REGIONおよびMASKによる2段階の領域限定

(以上,第3回講義)


 

第3回 実習のページへ

大阪市立大学広報ホームページ