数値地図25000(地図画像)の入力
国土地理院の刊行している数値地図25000は2万5千分の1地形図を画像化したものです.1ピクセルが0.1×0.1mm(2.5m×2.5m)のTiff形式で保存されており,1ピクセル8ビットで各ビットにそれぞれ意味がありビットごとに分けて使うと便利です.なお,下に示したように地形図そのものの画像であるため,余白や外側の線,文字等がはいっています.また,UTM投影のため,画像は長方形ですが,地形図は下図のように台形になっています.これらの情報は,CD-ROMのDATAディレクトリの下のKANRI.CSVファイルの中に記述されています.とくに赤い字で示した4隅の情報(地図画像の4隅と実際の緯度・経度)は位置合わせ時に重要です.

(1)xy座標系での入力
画像入力用の中間ファイル等を作成するためのxy座標系をとる別のLOCATIONとMAPSETをGRASSで作成します.領域は画像より少し大きめの横5000,縦4000程度で分解能は縦横とも1にします.
r.in.tiffコマンドによりTiff画像をラスター形式でGRASSに入力します.
GRASS 5.0beta6 > r.in.tiff
(地図画像のファイル名をフルパスで入力,/cdromは設定により異なります)
----- 省 略(以降,入力の確認は省略します) -----
Enter a new raster file name
Enter 'list' for a list of existing raster files
Hit RETURN to cancel request
>
(この画像用の新しいファイル名を入力する)
FLAG: Set the following flag?
Verbose mode on.?(y/n) [n]
(フラグの設定,デフォルト(リターン)でよい)
地図画像の不要な部分を取り除きたい場合は,先ほど示した図の内側(水色の部分)を示す台形と同じ形の領域を示すマスク用のラスターを作成し不要な部分を取り除きます(領域は地図により異なります).
(2)地図画像を8つのレイヤーに分割
地図画像は各ビットごとに意味を持っています.必要であれば,これらを8つのレイヤーに分ける作業を
r.mapcalcを用いて行ないます.nbit目を取り出す基本式は,(画像 MOD 2n)/2n-1 です(MODは商のあまりを求める関数).r.mapcalcの中ではMODは%に対応します.GRASS 5.0beta6 > r.mapcalc
(コマンドr.mapcalcの起動.プロンプトがmapcalc>に変わります.)
mapcalc> 553867b8 = ("553867.img" % 256) / 128 ↓
(8bit目を切り出す演算,553867.imgは画像ファイル名で,マスク処理をした場合は,そのファイル名を指定します.結果は553867b8に出力されます.)
EXECUTING 553867b8 = ... 100%
CREATING SUPPORT FILES FOR 553867b8
minimum value 0, maximum value 1
(8bit目が1の場合は結果が1,それ以外は0になります)
以下同様に
mapcalc> 553867b7=("553867.img" % 128)/64 (7bit目の計算)
以上で,地図画像の各レイヤーが完成します.
(3)画像のグルーピング
それぞれの画像を1度に座標変換したりする場合などのために,コマンド
i.groupを用いてグルーピングを行ないます.GRASS 5.0beta6 > i.group
(新しく作成するグループ名(ここでは,
553867とした)を入力します)AFTER COMPLETING ALL ANSWERS, HIT <ESC> TO CONTINUE
ESCキーを押します.
553867 - does not exist, do you wish to create a new group? (y/n) [n] y
(はじめて作成するので.yを入力します)
LOCATION: image25000 GROUP: 553867 MAPSET: map
(画像の一覧が表示されるので,グループとして登録する画像の前に
xを入れ,リターンを押します.) MAPSET: map
Group [553867] references the following raster files
(つぎに,下のような画面が表示されるので,リターンを押し終了します.)
LOCATION: image25000 GROUP: 553867 MAPSET: map
1. Select a different group
2. Edit group title
3. Include new raster files in the group
or remove raster files from the group
4. Assign colors to the group
5. Create a new subgroup within the group
RETURN exit
>
(4)UTM座標系への投影
xy座標系で作成した地図画像25000をUTMへ座標変換し移動させるためには,UTM座標系のデータベース・LOCATION等が必要です.これらはあらかじめ作成しておいてください.
グルーピングされた画像を別の座標系に投影するには,
i.targetおよびi.rectifyの2つのコマンドを用います.まず,UTM座標系をもつLOCATIONとMAPSET名(座標変換のターゲットと言う)をi.targetコマンドを用いて指定します.GRASS 5.0beta6 >
i.target
つぎに,座標変換のためのパラメータを指定します.前述したように地図画像25000は,4隅の座標値が明確であるために,数値入力で座標変換時に使用する座標変換POINTSファイルを作成します.緯度経度→UTM座標値変換コマンドm.ll2uを用いて,この地図画像の4つの隅のUTM座標値を求めておきます.
GRASS 5.0beta6 >
m.ll2u bessel(コマンドm.ll2uを起動し,楕円体のオプションbesselを入れておきます)
Enter lon lat, one coordinate pair per line, in the format
座標変換のためのPOINTSファイルは,グループディレクトリの中にある必要があります.そこで,現在のディレクトリを移動します.
GRASS 5.0beta6 >
cd $LOCATION/group(先ほど作成したグループ名(例では,553867)のディレクトリがあります.)
GRASS 5.0beta6 >
cd 553867(グループ名の下に移動します.ここにはすでに,
REFとTARGETが存在します).viまたはxeditを用いて,上で求めた情報から下記のようなPOINTSファイルを作成します.
GRASS 5.0beta6 >
vi POINTS(左側はGRASS画像のxy座標値で,右側はそれぞれに対応したUTM座標値です.注意しなければならないのは,もとのtiff画像の座標(上で示した図中の赤い数字)は左上が原点ですが,GRASSのxy座標では左下が原点となることです.このため,y座標は下から上へと座標値を読み変えなければなりません.)
最後に,
i.rectifyあるいは,i.rectify2コマンドを用いて座標変換を実行します.これらの違いは,マニュアルを参照して下さい.なお,ここでは,i.rectifyコマンドの例を示します.GRASS 5.0beta6 >
i.rectify(変換先の新しいファイル名(前と同じでも可)を入力します.)
553867b1@map . . . . . . . . . . . . 553867b1______
(入力後,ESCキーを押します.)
Please select one of the following options
(オプションの選択,ここでは1を選びます.)
You will receive mail when i.rectify is complete
(場合により,かなり時間がかかるため,バックグランドで計算されます.sendmailデーモンが動いているマシンではメールで終了の返事が来ます.)
(5)画像ファイルの圧縮と再合成
変換が正常に行なわれたことを確認するために,GRASSを終了し,変換先(ターゲット)のLOCATION,MAPSETで再度GRASSを起動します.変換が終了したかどうかは
g.listコマンド等でリストを表示して確認して下さい.これらの画像は変換先の分解能によりかなり大きなファイルになることがあります.そこで
r.compressコマンドを用いて圧縮します.ビットに分解した画像は圧縮が非常に有効です.GRASS 5.0beta6 >
r.compress(圧縮の確認.yを入力します)
COMPRESS [553867b1]
DONE: compressed file is 68006199 bytes smaller
各ビットに分解したレイヤーをもとに戻したい場合は
r.mapcalcコマンドを用いて以下の計算を行ないます.GRASS 5.0beta6 >
r.mapcalc(計算結果のラスター名をtopomapとした例です.)
EXECUTING topomap = ... 100%
CREATING SUPPORT FILES FOR topomap
minimum value 0, maximum value 255
最後に変換したラスター画像を表示し,確認します.