RUN BY LIXIL Publishingheader patron logo deviderLIXIL Corporation LOGO

HOME>BACKNUMBER>『10+1』 No.42>ARTICLE

>
Grounding on Datascape | 元永二朗
Grounding on Datascape | Motonaga Jiro
掲載『10+1』 No.42 (グラウンディング──地図を描く身体) pp.102-104

国土地理院が発行する数値地図は、さまざまな地理情報を「地図」ではなく「数値」つまりデータの形にしてCD-ROMなどに収めた物である。

適切なソフトウェアを用いればその「数値」を意識することなく地形図などの形態に出力することが可能である。しかしデータの中身に直接ふれずにソフトウェアを使っているだけでは満足する結果を得られないこともある。例えば「数値地図5mメッシュ(標高)」をもとに「カシミール3D」で等高線を描いた場合、そのまま見る分には充分にきれいな図なのだが、残念ながら拡大表示すると等高線が「メッシュ」の形そのままに階段状にガタガタになってしまう。地形データをグリッド状にサンプリングした「5mメッシュ」データの性質からすると、この表示は原理的には正しい。だが「目でぱっと見てどんな地形かを大体把握する」ために等高線を描く場合は、やはり滑らかな曲線で表示されていたほうが読みやすい。

数値地図の中身は「数値」の固まりであり、それ以上でもそれ以下でもない。得られる出力はそこに加える処理による。データを生かすも殺すもユーザー次第である。拡大に耐える、読みやすい等高線が欲しいなら、それに適した処理を加えればよいだけのことだ。
もともとコンピュータというのは、定められた法則に従ってデータを処理する機械である。普段なにも考えずにアプリケーションを使っていたとしても、その背後で実行されていることの本質は「人手で行なうには大量すぎる作業をなにがしかの法則に従って高速に処理する」ということだ。表では絵を描こうが文書を打とうが、背後のその原理はなにもかわらない。好むと好まざるとに関わらず現実にコンピュータが溢れる社会に生きているわれわれは、時にはその本質を「垣間見ておく」くらいの必要はあるだろう。

というわけで、普段はソフトウェアの奥に隠れている、その数値の地平に「グラウンディング」してみよう。作業のプラットフォームはMac OS Xである(試してはいないが、いくつかの点に注意すればWindowsでも同じ作業は可能だろう)。
まずは「数値地図5mメッシュ(標高)」のデータを覗いてみる。CD-ROMMのDataディレクトリ以下の拡張子.lemファイルに標高データが収められている。例えば09ld272.lemというファイルをテキストエディタで開いてみると
 1  325  309  299  294  291  286  283  286....
と延々数字のみが並んでいる。これはある範囲の地表を5m間隔のメッシュで区切り、その各地点の標高を並べたデータである。スペースで区切られた数値が標高になっている。それぞれのファイルがどの場所を表しているかなどの諸データはHeaderディレクトリの同じ名前、拡張子.csvのファイルに記載されている(データフォーマットなどの詳細は数値地図CD-ROM内のドキュメントを参照のこと)。

このようなデータを処理、図化するツールに、オープンソースのソフトウェア「GMT(The Generic Mapping Tools)」(http://www.soest.hawaii.edu/gmt/)がある。さまざまにデータを処理する多数のコマンドの集まりであり、「GMT」という名前はその総称である。今回はこのGMTを使用して地形図を描く。
GMTをOS Xにインストールするには、fink(http://fink.sourceforge.net/)を利用するのが一番簡単で確
実だ。
インストールが終わったら、まず数値地図のデータをGMTが理解できる形に変換する必要がある。GMTで最初の入力として主に使用されるのはxyzデータと呼ばれるもので、その名の通り、x、y、zの三次元座標データである。x、yは緯度経度、zは今回の場合標高となる。前記.lemファイルの各標高値を対応する緯度経度とセットにして
139.744793040931 35.8242066476365 46
というように、経度、緯度、標高の順にスペースで区切って並べたものを一行として、地点の数だけ行を連ねればよい。そこで、数値地図のヘッダファイルとデータファイルを読み、このxyzファイルに変換するスクリプト(http://minken.net/~jiro/g/lem2xyz.pl)を作成した。平面直角座標で記述された5mメッシュから緯度経度へ変換する式は、国土地理院のWEBサイトで公開されている「平面直角座標x、yから経度、緯度および子午線収差角の計算」(http://vldb.gsi.go.jp/sokuchi/surveycalc/algorithm/xy2bl/xy2bl.htm)を利用している。

まず、データとヘッダファイルを適当なフォルダにコピーする。今回はデスクトップに「5m」というフォルダを作りそこにコピーした。ここに先ほどのスクリプトも置く。

1──OS Xのターミナルを起動する

1──OS Xのターミナルを起動する

2──ターミナル上で上記フォルダに移動する(ターミナルに「$cd~/Desktop/5m」を入力しリターン)

2──ターミナル上で上記フォルダに移動する(ターミナルに「$cd~/Desktop/5m」を入力しリターン)

準備

GMTで段彩色用のカラーパレットファイルを作成しておく。今回はあらかじめ用意されているパレットを利用して作成する。
makecpt -Crelief -T-900/900/1 -Z >newrelief.cpt
プロットする等高線の頂点数が多く間隔も狭いため、GMTのデフォルト設定から解像度を上げておく。またPostScriptの用紙サイズも大きめに取っておく。
gmtset DOTS_PR_INCH 3000 PAPER_MEDIA B0

変換

スクリプトを実行し、データをxyz形式に変換する。ここでは「09ld272.lem」を変換する。
perl lem2xyz.pl Data/09ld272.lem
でき上がったデータ09ld272.xyzをテキストエディタで覗いてみると緯度・経度・高度が並んだ行が連なっているはずだ。
変換後ターミナル上に、その後実行すべきコマンドがまとめて表示されるようになっている。これを上から順に実行する。コピー・ペースト、リターンの入力で実行できる。
まず初めに、xyzファイルをNearest neighbor法で平均化し、GMTの主フォーマットであるグリッドファイルに変換する。今回はグリッドの数(マイナス一パラメータ)を元のlemデータのメッシュ数とほぼ同じになるように設定している。このグリッド化の際のパラメータ設定が最終的な図の出来を大きく左右する。
nearneighbor 09ld272.xyz -R139.722863611111/139.745012734633/35.6619433333333/35.675508957252 -I0.0000552347220/0.0000450685180 -S0.0001 -N4 -G09ld272.grd -V
下地になる段彩色に陰影を付け強調するためのデータを作る。
grdgradient 09ld272.grd -A45 -Ne0.4 -G09ld272.grdnt.grd -V
段彩色データをPostScriptに出力する。
grdimage 09ld272.grd -R139.722863611111/139.745012734633/35.6619433333333/35.675508957252 -JM100 -Cnewrelief.cpt -I09ld272.grdnt.grd -K >09ld272.eps
等高線を曲線状にするため、グリッドファイルを元データより細かく再サンプルする。
grdsample 09ld272.grd -I0.0000110469444/0.0000090137036 -G09ld272.fine.grd
上記で作成した再サンプル後のグリッドファイルから2m間隔で等高線を作成し、段彩色を出力したファイルに追記する。
grdcontour 09ld272.fine.grd -R139.722863611111/139.745012734633/35.6619433333333/35.675508957252 -JM100 -C20 -Q9 -L0/400 -V -O >>09ld272.eps

こうして「5m」フォルダ内に生成された「09ld272.eps」が段彩色と等高線が出力されたepsファイルである[図3]。

GMTでは各コマンドのパラメータを変更することでさまざまな表現が可能である。およそ地図表現に必要だと思われるものはすべて揃っているといっても過言ではない。3D表現も可能だ。それぞれのパラメータの意味など、詳しくはGMTのドキュメントを参照されたい。

3──「数値地図5mメッシュ(標高)」をもとに作られた地図

3──「数値地図5mメッシュ(標高)」をもとに作られた地図

>元永二朗(モトナガ・ジロウ)

1968年生
オルタナティヴスペースfoo運営参加。エンジニア、デザイナー。

>『10+1』 No.42

特集=グラウンディング──地図を描く身体