まず,作業ディレクトリ[Biwa]へ移動してください.

1.境界のデータのありか

当研究室には国土地理院が出版している数値地図があります(古いですが).この数値地図を用いて,県境のベクターデータを作成します.

[/DATA/Maps/JMC-map/data/] 内にそれぞれの経度ごとのディレクトリがあり,その中に1次メッシュ番号で登録されたDATファイルがあります.

例として次のデータをコマンド[less]で見てみます.
less /DATA/Maps/JMC-map/data/135/KS5235.DAT
ここで,[135]は緯度を,[5236]は1次メッシュの番号を示しています.
M 523600(2次メッシュ)月ヶ瀬(地名)
N(ノード)のデータ
L(ライン)のデータ
他にもエリアのデータなどがベクター形式で表示されています.
また,一番南西に位置する2次メッシュの南西端を座標(0,0)とし,同じ2次メッシュの北東端を座標(10000,10000)としています.
詳しいデータの中身については,研究室にある「数値地図ユーザーズガイド」を参照してください.つまり,経度方向には7.5'/10000=0.45",緯度方向には5'/10000=0.3"の精度(約10m)で位置が表現されています.

2.境界のデータをRubyで編集する

1.のデータから,県境を取り出します.
県境を取り出すRubyスクリプトは福山先生が作ってくださいましたので,それをコピーします.
cp /home/kaoru/GIS2/LakeBiwa/jmc2pref.rb .
コピーしたら,EMACSを使って,スクリプトの編集をします.
2行目のjmc_map_dir = ""のところにデータのある番地を書き加えます.
jmc_map_dir = "/home/kaoru/GIS2/LakeBiwa/"
1.でも述べたように,実際の地図データは[/DATA/Maps/JMC-map/data/]にありますが,経度などでディレクトリを分けているので,必要なデータだけを[/home/kaoru/GIS2/LakeBiwa/]にコピーしてあります.

3.Rubyの実行

では,Rubyを実行させます.
ruby jmc2pref.rb
すると,
2nd Mesh No. at SW =
と画面上に表示されます.
ここでは,対象地域の2次メッシュ番号を入力することで,その範囲を指示できます.
2nd Mesh No. at SW = 523500
2nd Mesh No. at NE = 533677
上のように入力すると,4つのデータ[Mie],[Kyoto],[Fukui],[Gifu]ができます.
[ls]で確認してください.

4.gnuplotを用いた描画

データが正しいか確認のためにgnuplotでプロットしてみます.
gnuplot
すると,gnuplotが立ち上がります.
次のように入力してください.
plot "Mie"
すると,先ほど作成した[Mie]を読み込み,gnuplotのモニターにポイントが表示されたと思います.

しかしながら,このデータは三重県と滋賀県の県境データなので,本来ならばラインで表示した方が良いでしょう.
plot "Mie" w l
上のように入力すると,ラインで表示されます.[w l]は[with lines]という意味です.

では,他の県との県境ラインも表示させてみましょう.
plot "Mie" w l,"Kyoto" w l,"Fukui" w l,"Gifu" w l

Windowsで動作するwgnuplotもありますので,一度やってみてください.

5.県境のインプット

滋賀県の県境はすでに先生が作成してくださいました.
これをコピーします.
cp /home/kaoru/GIS2/LakeBiwa/Shiga.ll .
このデータ[Shiga.ll]はGRASSのベクター形式に適合した状態に変換されています.
では,GRASSにデータを取り込みます.
grass60
ロケーションやマップセットは前回と同じ[Biwa]とそれぞれのユーザー名です.

アスキーファイルのインプットをします.
v.in.ascii in=Shiga.ll out=bound format=standard
ちゃんとできたのかどうか,確認してみましょう.
g.list vect
すると,ロケーション[Biwa]内にあるベクターデータの一覧が表示されます.
先ほど[v.in.ascii]で作成した[bound]があるか確認してください.

では,どのようなデータなのか表示してみましょう.
モニターを立ち上げて,[bound]を表示させます.
d.mon start=x0
d.vect bound ty=boundary
すると,ラインで滋賀県の境界が表示されたと思います.

6.ベクターデータの編集

せっかく作った県境データですが,本来ならば,先ほど作った[Mie]などを用いて県境を作るべきでしょう.
ということで,まず,先ほどの4つのデータ[Mie],[Kyoto],[Fukui],[Gifu]をベクターデータとしてGRASSに取り込みます.
v.in.ascii in=Mie out=mie fs=" "
       Fukui  fukui
       Kyoto  kyoto
       Gifu  gifu
上のコマンドは省略してありますが,FukuiなどもMieと同じように処理してください.
また,[fs=" "]は[Mie]などのデータが半角のスペースで区切られていることをGRASSに教えるためのオプションです(fsはfield separatorの略).
[g.list vect]などでちゃんと取り込めたか確認してください.

次に,4つのベクターデータを1つのベクターデータにします.
v.patch in=mie,gifu,kyoto,fukui out=shiga
v.build shiga
コマンド[v.patch]はベクターデータをくっつける(patch)ために使用します.

しかし,[Mie]などのデータはGRASSのベクター形式ではノード(点)として取り込まれているので,ライン表示ができません.
これに関しては,次回までにノードからラインに変換する方法を調べておくので,少々お待ちください.


タグ:

+ タグ編集
  • タグ:
最終更新:2007年05月01日 15:47