![]() |
|
情報地質 第 7 巻 第 3 号 175 - 197 頁 1996 年
Geoinfomatics, vol. 7, no. 3, pp. 175 - 197, 1996
システム・ソフトウェア開発
地図画像とは地図データがプロットされた画像のことである. 地図データとして様々な形式のものが考えられるが, 画像そのものが与えられた場合には,それに対する処理や 表示の手法は通常の画像に対するもの(たとえば,中野,1995a) とほとんど同じである. 地図画像に固有な処理として画像の変形(座標変換もしくは 地図投影)がやや特殊であると言えるが,実際にはそれは 時間を要するだけでさほど複雑な処理内容ではない. 地図画像の取り扱いがやや複雑な理由は,それを画像以外の 様々な形式の地図データから作成する処理が必要なことであろう.
ここでは,地図データとしてグリッド(格子)データと ベクトルデータの2種類のものを考える. グリッドデータは,たとえば数値地形モデル(Digital Elevation Model)のように,データ値(たとえば,標高値) が面的に密に分布する点上で与えられたものである. ただし,データ点は通常は規則正しく並ぶ格子点であるが, そうでない場合には適当なデータ補間の手法(たとえば, 中野・藤井,1989b;Briggs,1974)を用いて格子点上で の値を求める必要がある. 地図データとしてグリッドデータが与えられた場合, それから地図画像を作成することは容易である.
ベクトルデータは,GIS(Geographical Information System; 地理情報システム)などで取り扱われる,地図上に示された 領域・線分・点などの要素を,それらの位置関係や接続関係 を含めたグラフ(Wilson,1985)として表したものである. これを利用する場合には,グラフの解読(線分要素の接続状態の チェックなど)を行ない,かつ,ラスター化(rasterization) と呼ばれる輪郭線内部の領域塗りつぶしを行なうなどして 画像を作成しなければならない.
本文では,このようなベクトルデータを用いた地図画像の 作成手法について述べる. 以下では,数値地質図の場合を例に取り,実際のベクトル データの構成,およびそれから地図画像を作成するための 具体的な処理手順について詳しく説明する. また,その実例として,100 万分の1日本地質図第3版 CD-ROM 版(地質調査所,1995)に含まれるベクトル データから,PostScript で記述した数値地質図, もしくは TIFF 画像データファイルとしておさめた 数値地質図を作成するためのソフトウェアなどを紹介する.
本文ではベクトルデータによって表現された地図データの例として, 地質調査所から最近出版された 100 万分の1日本地質図第3版 CD-ROM 版(地質調査所,1995)におさめられている DLG 形式 (Digital Line Graph Format;村田,1995)の数値地質図 データファイル(以下では,DLG データファイル("DLG" file) と呼ぶ)のものだけを取り扱う. この CD-ROM は,地質調査所がこれまで長年に渡って印刷物として 発行してきた地質図類の一層の利用・活用を促進するために, それらをデジタル化した数値データの形で CD-ROM などの電子 媒体上に記録して出版した最初のものである(地質調査所,1995). これには DLG データファイル以外にも複数の形式の数値地質図 データベース(データファイル群とそれらを取り扱うための ソフトウェア),およびそれらの解説書などがおさめられている. 本文で紹介するソフトウェアは,これらの応用例として 位置づけられる. そこで,DLG データファイルの説明の前に, まずこの CD-ROM におさめられているデータベースの概略を 説明する. なお,この CD-ROM 全体の概要は,CD-ROM に添付の小冊子, もしくは地質ニュースの特集記事(たとえば,長谷川,1995; 鹿野ほか,1995;松本・鹿野,1995)などを参照していただきたい.
100 万分の1日本地質図第3版 CD-ROM 版には以下の 3種類の形式の数値地質図のデータベースおさめられている: (1) ベクトル形式地質図データベース, (2) メッシュ形式地質図データベース, (3) 地質図画像データベース. これらは各々,複数のデータファイルとそれらをパーソナル コンピュータやワークステーションで取り扱うためのソフトウェア, そしてデータおよびソフトウェアの詳細な解説書の入った文書 ファイルなどからなる.
ベクトル形式地質図データベースでは,ベクトルデータで表された 数値地質図などを作成・編集する際に広く用いられている市販の GIS のソフトウェア(たとえば,ESRI 社 の "Arc / Info")で 取り扱いが可能な DLG 形式(正確には DLG-3 オプション形式), Arc export 形式("Arc / Info" 用),および DXF 形式(Autodesk 社の CAD ソフトウェア "AutoCAD" 用)の3種類のファイル形式の データが用意されている(村田,1995). そして,これら各々のファイル形式で,円筒図法と多円錐図法で 地図投影した座標値表現を持つ数値地質図のデータセットが,合計 6個のデータファイルとして CD-ROM におさめられている. これらのうち本文で利用する DLG データファイルは, 以下の2つである.
ベクトル形式地質図データベースに含まれるソフトウェアは, パーソナルコンピュータ用とワークステーション用のものが 用意されており,本文で紹介するもの(後述)と同様に DLG データファイルから PostScript で記述した 数値地質図データを作成するために利用できる(村田,1995). ただし,本文のものとは異なり,これらは指定した任意の 広がりの数値地質図ではなく,1次メッシュ領域(国土 地理院発行の 20 万分の1地図群の領域に相当する東西1度, 南北 40 分の広がりを持つ矩形領域)ごとの数値地質図 データを作ることができるだけである.
メッシュ形式地質図データベースと地質図画像データベース にはどちらも,日本全体をカバーする1次メッシュ領域ごとに 画像化した数値地質図や地形陰影図などが含まれている. ただし,前者は各領域の画像データが ASCII テキストの独自形式で 書き込まれており,添付のソフトウェアは NEC PC9801 シリーズ (+ フルカラー画像表示ボード)で用いられることを想定している (松本・野呂,1995). また,後者は,画像データが TIFF 画像データファイル(中野,1995a) としておさめられており,添付の UNIX + X ウインドウ用ソフトウェア, もしくは市販のソフトウェアなどを用いれば様々なコンピュータで利用 可能である(中野,1995b).
メッシュ形式地質図データベースの画像データファイルは, GIS ソフトウェアを用いてベクトルデータファイル(DLG データ ファイル)から作成された. また,地質図画像データベースのデータファイルは,メッシュ形式 データベースのデータから作成された. 後述する本文のソフトウェアのうちの1つは,地質図画像データベースの ものと同じ数値地質図の画像データを,指定された任意の領域について DLG データファイルだけを用いて作成することができる.
以下では,100 万分の1日本地質図第3版 CD-ROM 版の DLG データファイルの構成を,地質図画像データを作成する 際に必要な部分を中心に説明する. このファイルのより詳細な説明(特にファイル上でのデータの 位置や記述形式)は,村田(1995)の解説書を参照していただきたい. また,ここで説明する構成が一般的なものかどうかを確認して いないので,ここでの説明を参考に 100 万分の1日本地質図第3版 以外の DLG データファイルを取り扱う場合には注意が必要である.
DLG データファイルは FORTRAN で取り扱うことを想定した 一行 80 文字(行末は改行コード)の ASCII テキスト ファイルである. その内容は,大別するとヘッダ部とデータ部に分類できる (第 1 表).
第 1 表 に示されているように,ヘッダ部には 変換パラメータ,そして後述する3種類の描画要素の各々の 個数などが記されている. ここで,変換パラメータは,DLG データファイル上に記録 された点の座標値をファイル上での値から実際のものへと変換 (一次変換)する際に用いられる(その詳細は村田(1995) の解説書,もしくは付録に示したソースリストを参照のこと).
データ部には,ノード,領域,線分要素の各記述部がこの 順番でおさめられている. これら3つの要素記述部はヘッダ部に記されている個数分 だけ各々繰り返されるが,それ以外にも,これらの識別の ために各記述部の先頭に各々 "N"(ノード),"A"(領域), および "L"(線分)という文字が書き込まれている.
DLG データファイルにおさめられた地図データでは,何らかの 属性によって区別される地図上の領域の輪郭線や断層線のような 線構造は,多数の点からなる線分によって表される (第 1 図). これらの点のうち,線分の端点や交点のような特別な点 (第 1 図の N1 〜 N6)は, 特にノード要素と呼ばれる. 線分を構成する点の座標値はノード要素の分も含めてすべて 線分要素記述部(後述)に書き込まれているため,数値地図 を描く際に DLG データファイル中のノード要素記述部の 情報(第 1 表)は特に必要ない. しかしながら,ノード要素それぞれに一意的につけられた 内部 ID 番号は,同一点のチェックのために重要である. すなわち,DLG データファイル中の線分要素をつなぎあわせる 必要があるとき,それらの端点(= ノード要素)の座標値の 比較ではなく,ノード要素の内部 ID 番号の比較によって同一 点を検索することができる.
領域要素記述部には,地図上で同じ属性がつけられたひと つながりの領域ごとにその広がりの情報などが書き込まれている. 各領域の属性は属性コードによって表され,100 万分の1 日本地質図第3版の DLG データファイルの場合,それには 地質コード(地質単元ごとにつけられた 1 〜 200 の整数値)と 1次メッシュコード(その領域が属する1次メッシュ領域に つけられた4桁の整数値)の2つがある. たとえば,第 1 図の A1 と A5 は それぞれ独立な領域要素で, また,A2 〜 A4 は地質コードは同じだが異なる1次メッシュ 領域に属するためにそれぞれ2つに分断された領域要素である. 領域要素は,複数の線分(線分要素)からなる輪郭線によって取り 囲まれる. 領域要素記述部では,その領域の広がり(輪郭線)をこれらの 線分要素それぞれにつけられた一意的な内部 ID 番号列で表す. ただし,第 1 図の A1 のように 領域内部に "島"(第 1 図の A5) を持つ領域要素では,"島" の輪郭線をダミーの内部 ID 番号 0 の後に記述する.
100 万分の1日本地質図第3版の DLG データファイルの 線分要素には,その属性として以下の4種類の断層コード (0 〜 3)がつけられている: (0) 1次メッシュ領域の境界線(第 1 図 L8 〜 L10), (1) 地質単元の境界線(L1 〜 L5,L11), (2) 地質境界を兼ねない断層線(L12), (3) 地質境界を兼ねる断層線(L6,L7). これに加えて,それぞれの線分要素記述部には先に述べた 線分要素の内部 ID 番号,線分を構成する点の情報, その端点のノード要素の内部 ID 番号が書き込まれている. さらに,数値地図を描画する際には必要ないが,線分要素を ベクトルと見なした場合にその左右に位置する領域要素の内部 ID 番号もそこに記録されている.
以上に加えて,100 万分の1日本地質図第3版の DLG データファイル固有の注意点を2つコメントしておく. まず第1の点は,データ部の各要素記述部にある内部 ID 番号についてである. これは,100 万分の1日本地質図第3版の DLG データファイル の場合,各要素ごとにファイル上で出現する順番(1 〜)に 一致している. 後述するソフトウェアでは DLG データファイルのアクセスの際に それを大いに利用しているが,一般に成り立っているとは限らない ことに注意すべきである. 第2の点は,領域要素の属性についてである. 100 万分の1日本地質図第3版の DLG データファイルの場合, 先に述べたメッシュ形式データベースを作成することを考慮して, 各領域要素には地質コードに加えて1次メッシュコードを属性値 として与えている. このため,第 1 図の A2 〜 A4 のように, 地図上の領域は 地質単元だけで分類されないことになる. 言い換えると,1次メッシュ領域の境界線で分割された 領域(たとえば第 1 図 A2)は, 数値地質図描画のために その境界線(第 1 図 L9) を取り除く必要がある. 後述するソフトウェアでも,各地質領域に対してこのような 1次メッシュ領域の境界線を取り除いた輪郭線の再構成 (線分のつなぎあわせ)を行なっている.
先に説明したノード要素記述部のように,DLG データファイル にはそれを用いて数値地図を作成する際に不必要な情報が 多数含まれている. これは,DLG データファイルが数値地図描画の際の 領域 → 線分 → ノード のようなトップダウンのアクセスだけでなく,データファイルの 作成時に行なわれる ノード → 線分 → 領域 のようなボトムアップのアクセスにも対応しているためである.
100 万分の1日本地質図第3版の DLG データファイルから 地質図画像を作成するための処理の概要を 第 2 図に示す. ただし,第 2 図の長楕円中に 示されているものは,以下で 説明する処理の各ステップで用いられるプログラムの名称 である. これらは,UNIX 上で起動可能な C 言語 で書かれた実行 プログラムもしくは C-Shell と awk 言語用の スクリプトで,第 2, 5 および 6 表に使用法を,また付録にソースリストを示してある.
ここで説明する手法では,DLG データファイルから画像を 直接作成するのではなく,まずそれから2種類の形式の中間 ファイルを作成する. これらはどちらも,フリーフォーマットの数値が書き込まれた ASCII テキスト形式のファイルで,その各々を 領域データファイル("area" file; 第 3 表参照) と線データファイル(第 4 表参照) と呼んでいる. ただし,線データファイルは,第 2 図 に示した 断層線データファイル("fault" file), 海岸線データファイル("coast" file), 海域データファイル("sea" file),そして 地質データファイル(複数;"geology" files)の総称である. また,領域データファイルはそれらを作成するためだけに 用いるファイルなので,画像作成の際には必要ない.
線データファイルを用いて,PostScript で記述したもの と TIFF 画像データファイル(中野,1995a)の2種類の形式の 地質図画像を作成する. 本文で紹介するソフトウェア (第 5,6 表)は, 指定した地域・広がりの領域について,地質領域の輪郭線 などの線画を作成すること,および指定した色で塗り分けた 地質領域などをカラー画像として描画することができる. さらに,TIFF 画像データを作成するプログラム line2map (第 6 表)は, 指定した地質単元の領域だけを抜き出した 画像を作成することも可能である(後述).
以下では,上記の2つの処理内容(DLG データファイルからの 線データファイルの作成とそれを用いた地質図画像の作成) をそれぞれ説明する.
先にも述べたように DLG データファイルには,ノード要素 記述部のような数値地質図を描画するために不必要な情報 が多数含まれている. そこで,ここでは,数値地質図の描画に必要な情報だけを DLG データファイルから抜き出して,取り扱いの容易な ASCII テキストのフリーフォーマットのデータファイル (線データファイル)に書き込む.
DLG データファイルから線データファイルを作成する際の 具体的な処理内容は以下のとおりである. まず,プログラム dlg2fault(第 2 表) を用いて,DLG データ ファイル中の線分要素のうちで断層コードから断層線の一部で あると判断できる線分の情報だけを取り出し,断層線データ ファイルに書き込む. ただし,第 2 表にも示されているように, このプログラムと後述 する dlg2area にはプログラム名の拡張子として ".g" と ".p" のついた2つのバージョンがある. これらは各々,先に説明した100 万分の1日本地質図第3版 CD-ROM 版の円筒図法と多円錐図法の2つの DLG データファイルに 対応しており,DLG データファイルからのデータの抜き出しと 同時に座標値をそれぞれ度単位と km 単位に変換する (付録に示した "Makefile " のリストを見ればわかるように, 拡張子 ".g" と ".p" のプログラムは同じソースリストから 座標値変換のための定数 "UNIT" に異なる値を与えられて作成 (コンパイル)される).
次に,プログラム dlg2area (第 2 表;dlg2fault と同様に これにも2つのバージョンがある)を用いて,地質単元の 占める領域の輪郭線の情報だけを DLG データファイルから 抜き出して領域データファイル (第 3 表)に書き込む. この際に,数値地質図を描画する場合に必要ない DLG データ ファイル中のノード要素の情報と1次メッシュ領域の境界 線をなす線分要素の情報は,断層コードなどを利用して 取り除かれる.
領域データファイルに書き込まれた地質領域の輪郭線を すべて描くと,隣り合う地質領域の境界線をなす線分は その両側の領域の輪郭線の一部として2回使用される. ところで,"海" という属性を持つ領域は 100 万分の 1日本地質図第3版の DLG データファイルでは定義されて いないので,その際に地質領域の輪郭線のうち海岸線を なす線分だけは1度しか使用されないことになる (ついでながら,"湖" という属性は定義されている; 村田・鹿野,1995). これを利用すれば,領域データファイルに含まれる線分 の情報から海岸線のデータを取り出すことができる. プログラム area2coast(第 2 表)は, このようにして 海岸線データファイルを作成する. ただし,領域データファイル中の線分から上のように 定義される海岸線を抜き出しただけでは単に線分の 集まりとなり,たとえば本州全体で1本のつながった (そして閉じている)輪郭線とはならない. そこで,area2coast は,DLG データファイルの線分 要素記述部からそのまま領域データファイルにコピーした, 各々の線分の端点に相当するノード要素の内部 ID 番号を 利用してこれらの線分をつなぎ合わせ,海岸線が すべて閉じた線分になるようにする.
前述したように,100 万分の1日本地質図第3版の DLG データファイルでは "海" は独立な領域要素として 定義されていない. しかしながら,上で求めた海岸線の内部の "陸" の 領域を除く部分を便宜上 "海" の領域と定義できる. さらに,日本列島全体を含む十分に大きな領域の輪郭線を それにつけ加えれば,数値地質図を描画する際に 海域を他の地質領域と同様にして取り扱うことができる (DLG データファイルの説明 (第 1 表) で使った 用語に従えば,その領域に対して "陸" の部分は 文字どおり "島" となる). プログラム append.box(第 2 図) はこのような目的に使用する. すなわち,このプログラムは,海岸線データファイル の中の線分を構成する点の座標をすべて調べて, それらを内部に含む十分に大きな長方形の領域を決め, その輪郭線のデータを海岸線データファイルの最後に つけ加えた海域データファイルを作成する.
線データファイルの取り出しの処理の最後として, プログラム area2geology(第 2 表)は, 領域データファイルに含まれるすべての地質領域の 輪郭線情報を取り出し,それらを地質単元ごとにまとめて, 地質単元に対応する地質コード(1 〜 200 の整数値) を名前とする地質データファイルに書き込む (地質単元ごとの地質データファイルを自動的に作成する). ただし,DLG データファイルから作成する際に1次 メッシュ領域の境界線の情報を取り除いたため, 領域データファイル上では地質領域の輪郭線は必ずしも ひとつながりの閉じた線分として記録されているわけではない. それゆえ,海岸線の場合と同様に,area2geology は, すべての地質領域の輪郭線が閉じたものとなるように, 領域データファイル上の線分の端点のノードの内部 ID 番号を用いて,そのつなぎ合わせを行なっている (海岸線の場合は,もともとが地質領域の輪郭線をなす 線分のうち1度だけ用いられるものを寄せ集めた ブツ切れの状態の線分をつなぎ合わせる必要があったが, 地質領域の輪郭線の場合は,1次メッシュ領域の境界線を 取り除いたことによる部分的なつなぎ合わせを行なえば よいだけである).
以上で,数値地質図を描画するために必要なすべての 線データファイルが作成できた. これらのうち,断層線データファイルには閉じていない 線分が,そして,それ以外の線データファイルは すべて閉じた線分(領域の輪郭線)のデータが おさめられている. しかしながら,線データファイル上にはそれを区別する 情報を埋め込まずに,どちらも同じ形式のデータを 書き込むことにした (第 4 表参照;後述する数値地質図 描画のためのプログラム line2map では,その区別は 利用者が指定するようになっている). また,後述する数値地質図を描くためのソフトウェアは すべて,これらの線データファイルが同じディレクトリに おさめられていることを仮定している. area2geology の場合,通常はそれが自動的に作成する地質 データファイルはすべて同じディレクトリに書き込まれるが, それ以外のものの場合は,各自がデータファイルをそれと 同じディレクトリに書き込むように指定する必要がある.
なお,ここで作成した線データファイル(および領域データ ファイル)は ASCII テキスト形式のものなので,ファイル 圧縮によってそのサイズを大幅に削減できる(後述). 第 2 表に示したプログラムのうち area2geology を除くもの はすべてデータを標準出力に書き出すので,それを適当 なファイル圧縮用のフィルタプログラム(たとえば UNIX の compress コマンドなど)にリダイレクトした 結果をファイルに書き込めばよい. また,area2geology は地質単元ごとの地質データファイル を自動的に作成するが,それら各々にデータを書き込む 際に起動時のパラメータとして指定されたプログラムを フィルタとして用いる. そして,たとえば compress コマンドによって圧縮された データの入ったファイルには拡張子 ".Z" をつけ加える 必要があるので,area2geology では,自動作成される地質 データファイルの名前につけ加えるべき拡張子の 指定を起動時に行なうことにしてある (第 2 表). 以上で述べたファイル圧縮の手法は,線分データファイル 作成のプロセスとともに後でその実例を紹介する.
上で作成した線データファイルを用いて,PostScript で 記述した数値地質図を作成するプログラムには, 第 5 表に 示した make.ps.line と make.ps.rgb の2つがある. これらはどちらも UNIX の C-Shell スクリプトで,パターン 処理言語 awk を用いて線データファイルのアクセスなどを 行なっている.
プログラム make.ps.line は,起動時に指定されたサイズの 用紙上に,指定された地域(長方形を仮定)に含まれるすべて の地質領域の輪郭線と断層線を,各々指定された線の太さで 描いた数値地質図のための PostScript データを作成する (第 5 表). このプログラムは描画処理のために2つのサブプログラム を呼び出す(これらも UNIX の C-Shell スクリプトで, 各々の使用法の詳細は付録に示した make.ps.line の リストを参照のこと). これらのうちサブプログラム eps.window は,数値地質図を 描く際のウィンドウ処理(スケーリングとクリッピング)の ための PostScript による宣言などを行なう. また,サブプログラム eps.draw は,与えられた線データを, awk を用いてクリッピングを行ないながら PostScript による線描画コマンドに変換する.
100 万分の1日本地質図第3版のすべての地質領域を, それらの地質単元ごとに指定された色で塗りつぶしたカラー の数値地質図の PostScript データを作成するためには, プログラム make.ps.rgb(第 5 表) を用いる. このプログラムは,起動時に指定されたカラーパレット データファイル("palette" file; 第 2 図)中に記述 されたデータを用いて,各地質単元の領域の色を決める (このファイルの記述法の詳細については後述する). プログラム make.ps.line と同様に,make.ps.rgb は 4つのサブプログラム(awk 用いた C-Shell スクリプト) を呼び出すことによって描画処理を行なう(それらの 使用法の詳細は付録に示した make.ps.rgb のリストを 参照のこと). これらのうち eps.window と eps.draw は,先に説明した make.ps.line で使用するものと同じである. これ以外の2つのうち,サブプログラム eps.palette は, カラーパレットデータファイルに記述された色データを PostScript で描画時に用いる形式に変換する. また,サブプログラム eps.fill は,eps.draw と同様に awk を用いて数値地質図のすべての領域の輪郭線データを スキャンしてクリッピングを行ないながら,それらを PostScript の領域塗りつぶしコマンドに変換する. ただしその際に,輪郭線内部の領域の塗りつぶしは,領域の 内部性を奇・偶交差規則(even-odd rule)によって判定する PostScript コマンド "eofill" を用いて行なっている. このような PostScript による領域塗りつぶし処理の詳細は, そのリファレンスマニュアル(Adobe System,1988)などを 参照していただきたい.
線データファイルから TIFF 画像データファイルの形式 (中野,1995a)でファイルに書き込んだ数値地質図を 作成するためのプログラムが,line2map (第 6 表)である. このプログラムは,起動時に make.ps.line や make.ps.rgb と 同様にして指定したサイズ・領域の数値地質図を make.ps.line と同様な輪郭線だけの線画,もしくは make.ps.rgb と同様な領域内部を指定した色で塗りつぶした カラー画像として描くことができる. さらにこれらに加えて,line2map では線データファイルの うちの指定したものだけを用いた数値地質図を作成する ことが可能である(make.ps.rgb などでもこれは可能だが, そのためにはプログラムの書き換えを要する).
line2map は,その起動時に与えた描画記述ファイル("script" file)の指定によって,描画すべき地質領域や断層線などの種類, およびそれらの表示色(正確にはカラーパレット番号;後述)や 線の太さを決める. また,これと同時に指定するカラーパレットデータファイル (これは make.ps.rgb で用いられるものと同じ形式のものである) のデータによって,画像上での表示色の詳細を決める. line2map が読み込むことのできる描画記述ファイルと カラーパレットデータファイルの例(ただし一部を省略した) を第 7 表に示した.
第 7 表に示したように, 描画記述ファイルは1行が1つの 線データファイルに対応する ASCII テキストファイルである. 各行には空白やタブコードで区切られた以下の3もしくは4 個の項目のデータを書く: (1) 線データファイルの名前, (2) 線(輪郭線)を描く際に用いるカラーパレット番号, (3) 線(輪郭線)の太さ(単位はピクセル), (4) 領域を塗りつぶす際に用いるカラーパレット番号(省略可能). これらの指定に関してはそれぞれ以下のような注意点がある. まず線データファイルの名前の指定に関して, 先にも述べたように,line2map(および make.ps.line と make.ps.rgb)ではこれらがすべて同じディレクトリに 置かれていることを仮定している. また,これらはファイル圧縮されていてもよいわけだが, このようなディレクトリ指定およびファイル圧縮の解凍処理は line2map の起動時のフィルタの指定 (第 6 表;後述) によって決定されるため,ここでの線データファイルの名前 にはそれに関する情報をつけ加えなくてもよい. 次に,線のカラーパレット番号と太さに関する指定について であるが,これらの一方を 0 と指定すると画像上にその 線は描かれない. たとえば第 7 表に示した 描画記述ファイルの例では,断層線 (線データファイル名 "fault")と海岸線("coast")以外の パレット番号は 0 なので,これら以外の線(領域の輪郭線) は作成される画像上には描かれない. 描画記述ファイルの各行の最後に位置する領域塗りつぶし用の パレット番号の指定は,上にも記したように省略が可能である. もし,この指定を省略すると(行の項目数が3であれば), そこで指定された線データファイルは(輪郭線ではない) 単なる閉じていない線であると見なされ,領域内部の 塗りつぶしは行なわれない(たとえば, 第 7 表の断層線). また,ここに 0 を指定すると,その線を描くことを指定した 場合には閉じた輪郭線であると見なされるが,その内部の塗り つぶしは行なわれない(たとえば, 第 7 表の海岸線).
描画記述ファイル上でカラーパレット番号として示されている 線や領域の色データの詳細は,カラーパレットデータファイル 上に記述する(第 7 表; 前述したように,このファイルは プログラム make.ps.rgb でも用いられる). 第 7 表に示されているように, このファイルは各行に 空白やタブコードで区切った,以下の4項目のデータを 書き込んだ ASCII テキストファイルである: (1) カラーパレット番号(0 〜), (2) 色の赤(R)成分の強度, (3) 色の緑(G)成分の強度, (4) 色の青(B)成分の強度. ここで,色の各成分の強度データは 0 〜 255 の整数値で表す (すべて 0 なら黒,すべて 255 なら白となる). また,先に述べたようにカラーパレット番号 0 は描画記述 ファイル中で特別扱いされるが,ここでもそれに対する 記述は画像の背景色を指定するためだけに用いられる. ファイル上で,色の記述はカラーパレット番号の順になって いる必要はないが,負の値などの不適当な値が書き込まれて いるとそれ以降の記述は無視される. プログラム line2map は,色の成分の記述がないカラー パレット番号に対してその初期値として与えられた黒を 描画に用いるようになっている.
第 6 表にも記されているように, プログラム line2map では 線データのおさめられたディレクトリの指定やそれらがファイル 圧縮されている場合の解凍処理を起動時に与えられたフィルタの 記述を用いて行なう(プログラム make.ps.line と make.ps.rgb では,その処理はプログラム中に埋め込まれている; 付録のソースリストを参照のこと). さらにそればかりでなく,フィルタをうまく用いれば, 線データファイルを書き換えることなく,line2map のデータ の読み込みと同時にその座標変換を行なうこともできる. このようなフィルタの指定の実例,およびより高度な 応用例については後述する.
プログラム line2map の説明の最後として,それが用いている 作画処理の手法についてコメントしておく. このプログラムで行なっているような画像データ作成のために 輪郭線の内部を塗りつぶす処理は,ラスター化と呼ばれている. ラスター化には様々な手法があるが(たとえば,中野・藤井,1989a), line2map の 関数 Raster(付録に示したソースリスト "raster.c" を参照のこと)では,それを make.ps.rgb で用いた PostScript コマンド "eofill" と同じ奇・偶交差規則で領域の 内部性を判定する,高速な手法によって行なっている. この手法では,まず,読み込んだ領域の輪郭線を作成する 画像にあわせてデジタル化した後,それと X 方向に無限に 延びる線の交点(エッジ)を求める. そして,同じ Y 座標値のものを X 座標の順にソートした エッジのうち,引き続く奇数番目と偶数番目のものを 端点とする X 方向の線分によって領域を塗りつぶしを行なう. この手法の詳細については,付録のソースリスト, もしくは適当なコンピュータグラフィックスの教科書 (たとえば,Harrington,1987)を参照していただきたい. なお,このような手法を実現した関数 Raster は,入出力 (線データの読み込みとラスター化した線分の画像への書き込み) を引数として与えられた関数(コールバック関数)を用いて 行なっている. それゆえ,関数 Raster は,使用する線データや画像データの形式に ほとんど依存しない広く利用可能なものとなっている.
ここまでに説明した 100 万分の1日本地質図第3版 CD-ROM 版の DLG データファイルからの線データファイルの作成,およびそれから 数値地質図の描画の処理(第 2 図) はやや複雑なので, 以下ではそのためのプログラム群 (第 2, 5, 6 表)の 使用例を示す(第 8 表). ただし,ここでは,UNIX の適当な Shell のもとで必要なすべての プログラムがコマンドラインから起動可能であるとする. また,以下では円筒図法で座標値が記された DLG データファイル だけを取り扱うが,多円錐図法の場合もほぼ同じ要領で処理を 行なうことができる.
DLG データファイルから線データファイルを作成する処理 の実例を第 8(a) 表に示す. 今,100 万分の1日本地質図第3版 CD-ROM 版が 第 8(a) 表の 1 行目の Shell 変数 cdrom に設定されたディレクトリ("/cdrom") にマウントされており,また,それに含まれる円筒図法の DLG データファイルの名前が 2 行目で設定した Shell 変数 dlg で表されるとする(UNIX によっては,CD-ROM 上のファイル名を 大文字で指定する必要があるかもしれない;中野・田中,1995). 変数 area にその名前を設定した領域データファイル(3 行目)は, 線データファイルを作成する間だけ用いるテンポラリなものなので, ハードディスクの容量を考慮して適当なディレクトリに置き, その使用後は消去するとよい. そして,前準備の最後として,線データファイルのために適当な ディレクトリを作成しておく(4 行目).
第 8(a) 表の 5 〜 9 行に 示したものが DLG データファイルから 線データファイルを作成する実際の処理である. ただし,ここでは,作成するすべてのデータファイルには UNIX の compress コマンドによってファイル圧縮を行なった 結果を書き込んでいる(それを表すためにファイル名の拡張子 ".Z" を付け加えた). また,領域データファイルもファイル圧縮したため, それを用いる 7 〜 9 行目の処理では zcat コマンドを用いて その読み出しを行なっている. なお,前述したように,area2geology の場合(9 行目)は ファイル圧縮をそれ以外とはやや異なった記法で指定する (第 2 表)ことに注意していただきたい.
上記の処理に要した時間は合計すると,SUN SPARC Classic (24 メガバイトメモリ)+ SunOS 4.1.3 上でおよそ 40 分 程度であった. また,作成されたデータファイルのサイズは 第 9 表に 示したようになった(ただし,上記の計算機以外では, C 言語の数値出力用ライブラリ関数の違いに起因する 若干の増減があるかもしれない). この表からわかるように,ここまでの処理には,100 万分 の1日本地質図第3版の円筒図法と多円錐図法の数値データ のどちらの場合も最低限 15 メガバイト程度のハード ディスクの容量が必要である(このうちおよそ 3 メガ バイトはテンポラリな領域データファイルの分なので, 後で消去可能である). ここでは,ファイルの圧縮に compress コマンドを用いたが, GNU の gzip コマンドを用いればこれらよりもやや圧縮率の高い (サイズの小さい)データファイルを得ることができる.
数値地質図の描画処理の実例を 第 8(b) 表に示す. そのために,まず,線データファイルのおさめられた ディレクトリ名 (第 8(b) 表の 1 行目), 描画を行なう 地域の対角点(西南と東北の隅)の座標値(2 行目), PostScript で記述する地質図の紙上での位置・サイズ (3 行目)と線の太さ(4 行目;単位はポイント), カラー地質図の色指定のためのカラーパレットファイル名 (5 行目),そして TIFF 画像データファイルを作成する際の 画像サイズ(6 行目)をそれぞれ Shell 変数に設定している. ここでは,画像サイズ(横・縦幅がそれぞれ 1365 と 1680 ピクセル) および紙上での描画領域のサイズ(横・縦幅がそれぞれ 5.2 と 6.4 インチ)は,地質図の地域の広がり(東経 134.75 〜 136.75 度, 北緯 34 〜 36 度)と日本周辺での経・緯度 1 度当たりの 実距離の比(およそ 13 : 16)を考慮して決めた. また,PostScript で記述した数値地質図を A4 サイズの 用紙(横・縦幅がそれぞれ 8.3 と 11.7 インチ)上に センタリングして出力することを想定して,紙上での描画 領域の左下隅の位置を指定している(紙の左端から 1.5, 下端から 2.5 インチとした).
PostScript で記述した数値地質図は, 第 8(b) 表 7 行目 (地質領域の輪郭線と断層線の線画)もしくは 8 行目 (カラー地質図)のようにして作成する. ただし,これらではプログラムが出力する PostScript の 記述をそのままファイルに書き込んでいるが,実際には それを直接 PostScript プリンタに出力したり,また, ファイル圧縮を行ないながらファイルに書き込んだ方 がよいだろう.
プログラム line2map を用いて,PostScript で記述した ものと同様な地質図の TIFF 画像データファイルを作成 する例が, 第 8(b) 表 9 行目(線画) と 10 行目(カラー地質図)である. これらの例で,プログラム名("line2map")の 次に記した "zcat ${g}/" が線データファイルを 読み込むためのフィルタの記述である. これによって Shell 変数 g の示すディレクトリ("${g}/") におさめられているファイル圧縮されたデータファイルを, 読み込み時に zcat コマンドを用いて解凍するように 指定している. その次に記された "geology.line" および "geology.rgb" が, 描画記述ファイルの名前である. これらのうち前者は,地質と断層線データファイルだけを カラーパレット番号 250 の色(黒; 第 7 表参照)で 線画として描画するように記述したものである (地質データファイルに対しては,領域塗りつぶしに使う カラーパレット番号を 0 として輪郭線だけを描くように 指定した). また,後者は,第 7 表 に示した内容とほぼ同じ記述を含む ファイルである. このようにして得られた TIFF 画像データファイル "line.tif" と "rgb.tif" の画像を 第 3 図 に示した.
以上で説明した描画処理に要する時間はいずれも, 前記の SUN の計算機で 20 分程度であった. これらの処理時間のほとんどは,データファイルの スキャンに費やされているようである. また,作成されたファイルのサイズは,PostScript のもので 1 メガバイト弱に,そして,TIFF 画像データ ファイルの場合は,"line.tif","rgb.tif" がそれぞれ 120 および 200 キロバイト程度になった. ただし,PostScript のファイルは,圧縮するとおよそ 1 / 3 のサイズになる. そして,TIFF 画像データファイルは,プログラム line2map が画像データを LZW 法(中野,1995a)で圧縮して書き込む ようにしてあるので,比較的小さなサイズとなっている (LZW 法によるデータ圧縮の指定の詳細は付録のソース リストを参照のこと).
本文では,ベクトルデータから地図画像を作成するために, 一般の GIS ソフトウェアが取り扱う複雑な構造のデータ ファイル(DLG データファイル)からダイレクトに描画を 行なうのでなく,それから必要な部分だけを抜き出した 線データファイルを用いて描画処理を行なうというやや 冗長な手続きを踏んでいる. このようにした理由は,ソフトウェア作成の負担を軽減 するためだけではなく,利用者によるベクトルデータの作成 (もしくは修正)を容易にすることを意図したためである (ただし,100 万分の1日本地質図第3版の数値データの 著作権は地質調査所が保持しているため,それを利用する 場合には地質調査所の承諾が必要である;100 万分の1 日本地質図第3版 CD-ROM 版(地質調査所,1995)に添付 の小冊子中の著作権等に関する記述を参照のこと). すなわち,個々の地質単元ごとに線データファイルを単純な 形式にしてあるために新たな線データファイルの作成が 容易で,また,プログラム line2map を使えば(描画記述 ファイルの若干の改変で)それを追加した数値地質図画像 の作成が簡単に行なえる (たとえば,調査地域の位置を数値地質図上に示した インデックスマップなどは容易に作成できる).
しかしその反面,前述したように数値地質図の描画時の 線データファイルのスキャンにはかなりの時間がかかる. これを高速化するためには,線データファイルの構造を 以下のように変える必要があるかもしれない: (1) 線データファイル中の各線分のデータセット (第 4 表) にそれが含まれる領域の広がりの情報を持たせる(これを利用 すれば,スキャンの際に描画領域外のデータの読み飛ばしが 高速に行なえる), (2) 線分データセットに対するインデックスを作成して, それを用いてスキャンをする, (3) 線データファイルをバイナリファイルにする. また,これとは別に,PostScript で記述した数値地質図 を作成するプログラムの高速化のために,それを C-Shell + awk ではなく,もっとデータ読み込みの速い言語 (たとえば C 言語)でコーディングし直すべきかもしれない.
プログラム line2map 起動時のフィルタとして適当なものを 指定すれば,本文で紹介したような線データファイルの 解凍処理だけでなく,線を構成する点の座標変換をデータの 読み込み時に同時に行なうことができる. これは,衛星画像を地質図と重ね合わせて表示する場合 などに利用できる(中野,1996b). すなわち,これら2枚の地図画像の座標系を一致させるために, 画像の位置決めデータ(画像上の座標と実空間での座標 (経度と緯度)の関係式)を利用して衛星画像を変形 (座標変換)するのではなく,それを逆に用いて座標変換した ベクトルデータから地質図を作成する方が効率的である. また,線データファイルのフォーマットを変更した場合にも, フィルタでその違いを吸収するようにすれば line2map の ソースリストを書き換える必要はない.
本文では地図画像を色だけで表現したが,プログラム line2map に少し手を加えれば,その領域塗りつぶしを適当なパターン (ハッチパターン)を用いて行なうこともできる (なお,100 万分の1日本地質図第3版 CD-ROM 版に含まれる ソフトウェア DLG2PS(村田,1995)は,地質領域をパターン で塗りつぶした数値地質図を作成できる). さらに,パターンとして適当な画像データを与えることに すれば,それは画像中の任意の輪郭線内部だけを表示する プログラムとなる. これは,衛星画像のうち陸に相当する部分だけを表示したい 場合などに利用できる.
以上で作成した数値地質図は,地形データと組み合わせて 陰影つき地質図や鳥瞰図として表示することができる (中野,1996a). また,前述したように,衛星画像と重ね合わせた表示も 可能である(中野,1996b). このような手法は,別稿において詳しく述べる予定である.
なお,本文で紹介したソフトウェアはすべて配付が可能である. ご希望のかたは著者まで連絡していただきたい. また,100 万分の1日本地質図第3版 CD-ROM 版に関しては, 地質調査所地質情報センター情報管理普及室 (電話:0298 - 54 - 3606,電子メイル:postmaster@gsj.go.jp) に問い合わせていただきたい.
Adobe System(1988) ページ記述言語 PostScript リファレンス・マニュアル (石田 晴久監修,松村 邦仁訳), アスキー出版局,338pp.
Briggs,I.C.(1974) Machine contouring using minimum curvature, Geophys.,39,39 - 48.
地質調査所(編)(1995) 100 万分の1日本地質図第3版 CD-ROM 版, 数値地質図 G-1,地質調査所.
Harrington,S.(1988) アルゴリズムとプログラムによる コンピュータグラフィックス [I](郡山 木杉訳), マグロウヒル,324pp.
長谷川 功(1995) 特集:100 万分の1日本地質図第3版 CD-ROM 版, 地質ニュース,493,8.
鹿野 和彦・長谷川 功・松本 則夫・村田 泰章・ 中野 司・野呂 春文(1995) 数値地質図「100 万分の1日本地質図第3版 CD-ROM 版」の出版, 地質ニュース,493,9 - 11.
松本 則夫・鹿野 和彦(1995) 「100 万分の1日本地質図第3版 CD-ROM 版」 CD-ROM 解説, 地質ニュース,493,12 - 16.
松本 則夫・野呂 春文(1995) メッシュ形式地質図データベース数値ファイル解説, および, メッシュ形式地質図データベースソフトウェア解説, 地質調査所(編) 100 万分の1日本地質図第3版 CD-ROM 版, 数値地質図 G-1,地質調査所.
村田 泰章(1995) ベクトル形式地質図データベース数値ファイル解説, および, ベクトル形式地質図データベースソフトウェア DLG2PS 解説, 地質調査所(編) 100 万分の1日本地質図第3版 CD-ROM 版, 数値地質図 G-1,地質調査所.
村田 泰章・鹿野 和彦(1995) 「100 万分の1日本地質図第3版 CD-ROM 版」 から求めた日本列島を構成する岩石の分布面積, 地質ニュース,493,26 - 29.
中野 司(1995a) 画像処理のためのソフトウェア: (7) 色数削減のアルゴリズム, 情報地質,5,187 - 210.
中野 司(1995b) 地質図画像データベース数値ファイル及びソフトウェア解説, 地質調査所(編) 100 万分の1日本地質図第3版 CD-ROM 版, 数値地質図 G-1,地質調査所.
中野 司(1996a) 地図画像のためのソフトウェア: (2) 地図画像の陰影表現, 準備中.
中野 司(1996b) 地図画像のためのソフトウェア: (3) 衛星画像の利用法, 準備中.
中野 司・藤井 直之(1989a) 画像処理のためのソフトウェア: (1) 領域塗りつぶしと仮想スクリーン処理, 情報地質,14A,93 - 107.
中野 司・藤井 直之(1989b) 二次元分布データの処理システム: (2) 二次元分布データの内挿補間, 情報地質,14B,113 - 132.
中野 司・田中 明子(1995) Clementine 探査機のデータ:その概要と利用法, 情報地質,6,117 - 134.
Wilson,R.J.(1985) グラフ理論入門(斉藤 伸自・西関 隆夫訳), 近代科学社,182pp.
別紙 に以下の名前のファイルの内容(ソースリスト)を示した.
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
|
![]() |
![]() |
|