前回の授業では,作成したライン(リンク,アーク)のカテゴリ番号を表示させました.
今回の授業では,前回作成したカテゴリ番号を用いて,ポリゴンを作成します.
ポリゴンには前回のラインと同じように,1つ1つのポリゴンに番号を振る必要があります.
そこで,今回は次の順番に実習していきます.
- [v.digit]でポリゴンの中心点(セントロイド)を書き加える
- セントロイド番号をGMTで描画できる形に編集する
- セントロイド番号を描画する
- ラインに矢印を描画する
- ファイルの変換と移動
まず,作業を始める前にeosmaiにログインし,ktermを立ち上げてください.
また,[cd]を用いて,ディレクトリ[Epicenter]に移動しておいてください.
1.ポリゴンの中心点を書き加える
まず,GRASSを立ち上げます.
grass62
ロケーション[Epi4_ll]にEnterし,モニターを立ち上げてください.
モニターで作業をするので,できるだけ大きいほうが良いでしょう.
d.mon start=x0
ポリゴンの中心点(セントロイド)を書き加えるために,[v.digit]を用います.
v.digit
ベクターデータは[epi4_mod]を選択します.
[v.digit]のツールボックス内の[Add centroid]をクリックして,ポリゴンの大体中央を左クリックして入力します.
セントロイドが入力できたら,データをアスキー形式で取り出します.
v.out.ascii in=epi4_mod out=epi4_center
新しく作った[epi4_center]の中身を一度確認してみてください.
less epi4_center
すると,下のようにデータが並んでいると思います.
133.80477891|32.22438776|299
経度|緯度|セントロイド番号
フィールドセクション(データの切れ目)は[|]という記号で表されています.
一番左が,先ほど入力したセントロイドの経度を,中央が緯度を,右が中央点の番号を意味しています.
2.セントロイド番号をGMTで描画できる形に編集する
GMTで描画する場合,[epi4_center]ではGMTのフォーマットに合いません.
そこで,Rubyでスクリプトを作成し,フォーマットを合わせましょう.
スクリプトが出来上がったら,実行してみましょう.
ruby center.rb
[ls]でリストを取って,[epi4_center.text]ができていればOKです.
[less]でepi4_center.textとepi4_centerを見比べてみてください.
3.セントロイド番号の描画
セントロイド番号は前回作成した[epi4.ps]に上書きしたいと思います.
前回はktermにGMTのコマンドをそのまま入力しましたが,今回はシェルスクリプトにして,実行します.
Emacsで新規作成してください.
スクリプトの名前は[epi4.sh]です.
スクリプトには次のように表示させます.
- pscoast -JM16 -R130/140/30/40 -Ba2f30mg2 -W2 -Dh -P -V -K > epi4.ps
- psxy epi4.line -JM -R -W5/255/0/0 -M -O -K -V >> epi4.ps
- pstext epi4.text -JM -R -G0/0/255 -O -K -V >> epi4.ps
- pstext epi4_center.text -JM -R -G191/0/91 -O -V >> epi4.ps
上から3行は前回までと変わりません.
オプションの説明は以下のとおりです.
- -JM16
- メルカトール座標系の横幅16cm
- -R130/140/30/40
- 描画する座標系が経度130度~140度,緯度30度~40度の範囲
- -Ba2f30mg2
- 描画する地図の緯度経度の表示(a)が2度ずつ,目盛り(f)が30分ごと,グリッドライン(g)が2度ずつ
- -W2
- 海岸線を描画するラインの太さが2px
- -Dh
- 海岸線を描画する解像度がhigh
- -M
- 使用するデータが多セグメントファイル-->1つのファイル内に複数のデータが存在する
- -G
- 図形や文字などの色指定
- -P
- ポートレイト=縦書きで描画
- -V
- コマンドを実行したときに詳細表示をする
- -K
- コマンドのフッターを出力しない-->重複して描画ができる
- -O
- コマンドのヘッダーを出力しない-->重複して描画するとき,先に描画した絵を塗りつぶさない
4行目に先ほど作成したepi4_center.textを用いています.
epi4_center.textは次のように表示されています.
133.805 32.224 8 0.0 21 CM 299
それぞれの英数字の意味は,
1列目:x座標(133.805)
2列目:y座標(32.224)
3列目:文字の大きさ(8)
4列目:文字の傾き(0.0)
5列目:フォント番号(21)
6列目:文字を表示させる位置(CM)
7列目:表示する文字(299)
上のようになっています.
以上のように,[epi4.sh]ができたら実行させてみてください.
sh epi4.sh
画像[epi4.ps]ができたら,gvで表示させてみてください.
gv &
ピンク色の数字が表示できていたらOKです.
4.ラインに矢印を描画する
今度は,ラインに矢印を描画させます.
これは,[v.digit]でラインを作成したときに,どの方向にラインを引いたのか確認するためです.
というのは,エリアを作成するためにはラインの引いた方向によって符号を+か-に変える必要があるからです.
まず,変換のためのRubyスクリプトをコピーします.
mod2gmt_ar.rbの説明は次の通りです.
- chop(7,10,14行目):データの改行マーク[\n]を削除する
- split(7,10,14行目):データを分割する
- if arc.size > 1(15行目):ラインを作るためには,最低でも始点と終点の2点が必要だが,入力ミスなどによる1点のラインを出力しないため
- dd = 0.2(21行目):矢印の位置を終点から0.2cmだけ離す<--矢印を見やすくするため
- x2 = arc[-1][0](23行目):[-1]は1つのラインの終点,[0]はx座標-->ラインの終点のx座標という意味
- y2 = arc[-1][1](23行目):ラインの終点のy座標
- x1 = arc[-2][0](24行目):[-2]はラインの終点の1つ前のノード-->ラインの終点の1つ前の点のx座標
- y1 = arc[-2][1](24行目):ラインの終点の1つ前の点のy座標
- out.printf "%.4f %.4f %d 0.3\n"(39行目):printfは書式指定をして書き出すという意味.[%.4f]は小数点以下4桁まで表示するという意味.
では,mod2gmt_ar.rbを実行させます.
ruby mod2gmt_ar.rb
次に,矢印をGMTに表示させるためにepi4.shを書き換えます.
- pscoast -JM16 -R130/140/30/40 -Ba2f30mg2 -W2 -Dh -P -V -K > epi4.ps
- psxy epi4.line -JM -R -W5/255/0/0 -M -O -K -V >> epi4.ps
- pstext epi4.text -JM -R -G0/0/255 -O -K -V >> epi4.ps
- psxy epi4.arrow -JM -R -G0/255/0 -Sv0.025c/0.2c/0.05c -W1 -V -O -K >> epi4.ps
- pstext epi4_center.text -JM -R -G191/0/91 -O -V >> epi4.ps
先ほどのepi4.shと違う点は,4行目に矢印を記入するコマンドが付け加えられた点です.
書き換えが終わったら,スクリプトを実行させてください.
sh epi4.sh
gvで表示させてみると,次のようになります.
5.ファイルの変換と印刷
以上の作業で作成した画像をpdfに変換させましょう.
これは,UNIXに搭載されているImageMagicのコマンドを用います.
ps2pdf epi4.ps epi4_new.pdf
また,このようにして作成したpdfデータを印刷してみましょう.
現在の状態では,UNIXからプリンターに接続できていませんので,まずWindowsへエクスポートしてから印刷することになります.
インターネットエクスプローラーなどのブラウザを起動させ,アドレス欄に次のように入力してください.
ここで,eosmaiにログインする際に使用するユーザー名とパスワードを入力し,コピー&ペーストでepi4_new.pdfをデスクトップや保存するフォルダにインポートしてください.
本日はここまでです.
お疲れ様でした!
最終更新:2007年07月03日 20:01