g.regionで作業領域を設定するか,r.mapcalcなどでraster画像をマスクに使う方法がある。
I g.regionで作業領域の設定
Google Earthで行政界を表示し,環境設定でUTM座標系にして,茨木市域を余裕を持ってカバーする範囲を求めた。北縁は3866335.00mN, 南縁は3847675.00mN,東縁は556160.00mE,西縁は544550.00mEである(数値をコピペして使うために桁区切りはしていない)。矩形領域は,南北は18,660m,東西は11,610mである。
tcl/tkのメインメニューのconfig/region/change region settings,g.regionのパネルが開く。Boundsタブを開いて,n,s,e,wのutm値(m)を入れる。このタブの始めのAllign region to resolutionにチェックを入れる。Resolutionタブを開いてGrid resolution 2D (both north-south and east-west)に10,Effectsタブを開いてこれまで使った全域のregionを残すファイルを指定する。Hokusetsu_allとここではした。OptionsタブではAllow overwriteにチェック。
regionの変更後は,開かれていたMap Displayを閉じて新しいDisplayを開く必要がある。なお,表示がうまくいかなかった。それは東西縁のutm値のGoogle Earthでの読みが間違っていたためである。gis.mではとくにエラーメッセージがこれに関してはでないが,念のためにTerminalモードで入力した結果,下記のメッセージが出て範囲設定のミスに気づいた。
GRASS 6.4.0 (UTM53-JGD2000):~ > d.vect UTM10mContours@PERMANENT
The bounding box of the map is outside the current region, nothing drawn.
Map DisplayのDisplay active layers,Redraw all layersで画像を表示すると,東西について,規定した枠よりもそれぞれ6kmほど多めに表示される。これにはかなり格闘したが,Map Displayでは,枠に余裕があればregionを越えて表示するのが既定のようである。Map Displayの右端のアイコンは,Map fills display window,で,既定表示ボタンである。この左隣のアイコンは,constrain map to region geometry,で,部分表示のためのregion設定に従う。
II r.mapcalcなどでraster画像をマスクに
茨木市の窓を作ろうとしたが自然分野からすると意味が無いと思い,中止することにした。ただ,自分用のメモとして次ぎに流れを書くことにする。Neteler and Mitasova, 2007, p. 129-など
II.1 想定された地図(試行錯誤の結果)
後に示す理由からマスクにする領域を含む矩形領域の経緯度(度単位)が必要。
1. 失敗1 茨木市から得ていた平面直角座標系の全図
これを使うべくPhotoshopで周辺情報を消してIllustratorに配置してトレース。M氏に依頼。良い図ができたが全く呆けてて矩形の経緯度がわからんと考えてGoogle Earthから切り出した。しかし考えてみると茨木市全図の外枠に座標が表示されていた。
2. 失敗2 Google Earthから茨木市域を表示した画像の取得
茨木市域の境界が表示される画像はGoogle Mapでは得られず,Google Earthから得た。マックの場合,画面に表示されている茨木市域を,command+shift+4,で取得。この北西隅(34.93126,135.490394)と南東隅(34.773662,135.612144)の位置をhttp://www5.ocn.ne.jp/~botan/map_g.html を使って経緯度計測。
Google Earthの画像はUTM画像と勘違いというか忘れてた。等経緯度座標系SRTM http://iss.jaxa.jp/shuttle/flight/sts99/mis_srtm.html。ということはマスク画像をイラレで作って,geotiff化して,gdalwarpで等経緯度座標系からUTM座標系に変換しなければならない。結構面倒。後者については,Tagchan.netのGDALを使って地理座標を与えた地図画像をGoogle Earthでオーバーレイする http://www.tagchan.net/blog/2009/05/gdal_google_earth.htmlでの記述で逆をすればいいのだが。
3. これでいいのだ 国土情報基盤 行政区域データ
http://nlftp.mlit.go.jp/ksj/jpgis/datalist/KsjTmplt-N03.html
府県別の全国市区町村の行政界ポリゴンデータで,ファイル形式がjpgisに準拠したxml形式なので下記の変換ツールが提供されている。
国土数値情報データ変換ツール http://nlftp.mlit.go.jp/ksj/jpgis/jpgis_tool.html
フォーマットのデータ形式は次のサイトに。http://nlftp.mlit.go.jp/ksj/old/old_data.html なお,これらのデータの座標系については,座標による空間参照 http://www.gsi.go.jp/GIS/stdind/jsgi_kaisetsu04.html に掲載されている。これらのGrassでの利用法については別途記述したい。なお,なぜかこの国土地理院のサイトでUTM座標系のゾーン番号がずれている。大阪は53なのだが52となっている。要注意。
II.2 マスク画像の作成方法
イラレでマスク用の画像を作成して別記する方法でgeotiffにしてUTM座標系に取り込んで,カテゴリーラベルの割り当て(Neteler and Mitasova 5.1.9 r.supportなど)とラスタ地図演算(N and M, 5.2 r.mapcalcなど)を実施して茨木市域のマスクを機能させる,と考えていた。
奈良盆地を完全にカバーするように5mメッシュのdem図廓を揃えてr.patchして,2m等高線を作る場合,作成した直後は表示されても,その後は全く表示されないなどの問題が発生した。メモリーの問題というよりも,プログラムの制限かも知れない。ただ,macではメモリーが16GBがマックスなので,Windowsマシーンの32GBを今月,購入する。
全域にわたって作成できないので,高度限定することにした。
高度制限なしでは,等高線が密の場所や高い高度の部分では,コンターはmesh境界がうまく繋がらなくないこともある。高度範囲に関わらず,次の図のように5mメッシュの連続性が悪いというようなことも生じる。
次のように,この範囲の高度幅は10〜1000mぐらいあるが,奈良盆地内の最低高度を30mとして,丘陵や盆地周辺の山地お表現すべく,30〜200m, 30〜300mなどは同じ制度が得られたが,30〜450mでは精度が少々減少しているように見受けられるので,30〜300mを採用した。
GRASS 6.4.4 (Plane6_JGD2000):~ > r.contour input=NaraBasin5mDEMpatched@Asuka output=NaraBasin5mDEMpatched_2mContours_30to300m min=30 max=300 step=2 cut=0 --overwrite
Reading data...
100%
Displacing data...
100%
Writing vector contours (total levels 136)...
100%
WARNING: 39017 crossings founds
Writing attributes...
Building topology for vector map
<NaraBasin5mDEMpatched_2mContours_30to300m>...
Registering primitives...
110380 primitives registered
56155020 vertices registered
Building areas...
100%
0 areas built
0 isles built
Attaching islands...
Attaching centroids...
100%
Number of nodes: 110397
Number of primitives: 110380
Number of points: 0
Number of lines: 110380
Number of boundaries: 0
Number of centroids: 0
Number of areas: 0
Number of isles: 0
GRASS 6.4.4 (Plane6_JGD2000):~ >
次の図で,例えば吉野川の北岸の南斜面の等高線表示に問題あるようだが,
次の部分拡大図のように, 問題がない。
以 上