この作業はGISを使う上,必須のものであった。いままで,この作業には多大の労力を必要とすると考えて,避けてきた。この9月末に,沖永良部島の海浜流を求める必要性があって,紙の海底地形図からDEMを作成する必要性が出てきた。仕方なく,この作業を始めた。Adobe PhotoshopとGIMPで片付けようとして作業を進めたが,結局,手作業の限界を知った。余りに膨大な時間を必要とすることがわかったからである。国土地理院が同2万5千分のT地形図から10mメッシュDEMをまずは作成するのであるが,その説明として「国土地理院発行の2万5千分1地形図を0.1mm ピッチで数値化した画像データ」とあって,紙ベースでの作業過程が理解できなかった。実際にやってみて,よく理解できたのである。
さて,GISソフトのTNTができたように思ったので,調べてみたが,わからない。TNTは無料版,ベーシック版,プロ版がある。無料版は作業結果が保存できない。学生実習にはいいとは思うけど,学生が実際に作業してその結果を踏まえて次のステップに行くことはフリー版ではできないので,結局,有料版が廉価でないといけない。ベーシック版はファイルサイズに制限があるが,通常の個人の作業には十分で,かつ廉価である。TNTの作業内容はかなり高度で,DEM作成過程がわからなかったので,サポートの窓口に問い合わせた。一週間以内に返事が来て,作業過程が克明に記されているpdfが送られてきた。当方の目的に合うように編集して送ってきていただいた。ここに掲載したいと思う。TNTがGrassGISと同等かそれ以上のものであることは了解している。TNTのサポート体制はベーシック版に対してではなくて,プロ版のものであろう。高価格故にこの体制が可能だろうと思う。ArcInfoなどはより高額なので比較からすると,TNTはかなりお徳用だと思う。ぼくは教育現場から近いうちに離れるので,フリーに固執する必要はなくなる。フリーの後はTNTも使って良いと考える。ベーシック版を購入したいと思う。
さて,GrassGISを使って標記の目的は達成出来るはずで,検索した結果,次のサイトが最も簡潔で有効であった。
http://www.ing.unitn.it/~grass/docs/tutorial_641_en/htdocs/esercitazione/dtm/dtm1.html
http://www.ing.unitn.it/~grass/docs/tutorial_641_en/htdocs/esercitazione/dtm/dtm2.html
このサイトはGrassGISのtutorialサイトページに掲載されている。 Grass 6.4用であるが,現在の7.4でもメニューの一部に違いが生じているが, 簡単に推測できる。以下,このサイトに沿って説明するが,このチュートリアルサイトの記述は極めて懇切丁寧なので,以下の記述がわからない場合,このサイトを参照して欲しい。私たちが使用しているGrassGISはメニューなどで日本語化が進んでいて,こういう場合,不便になる。バージョンによって日本語化も異なる。ぼくがここで使用しているGrassGISは7.2.2のmac版である。
まずは教材のcontours.tgzをダウンロードする。ぼくはマックなのでtgzは自動で解凍できるがWindowsでの解凍が面倒の可能性があるので,contours.tgzを解凍して,zipファイルとしている。これには,shp, shx, prj, dbfの4ファイルが入っている。ダウンロードしたzipファイルは解凍し,新たに, ShapeToDEMというフォルダを作って,その中に入れておくこと。ShapeToDEMというフォルダはデスクトップまたは自らのUSBに配置すること。
GrassGISの立ち上げなどについては,いま君たちが見ている木庭のフレームの,お猿のGIS……,のはじめに,の, ● GrassのLocation作成, などを見ること。
GrassGISを立ち上げて, Location: nc_spm_08_grass7, またはこれに類するNorth Carolinaデータベースを使用する。Mapsetは,どれでもいいが, nc_georectifyを使おう。
Grassへのcontoursシェープファイルの取り込みである。ファイル/ベクトルデータのインポート/一般的なインポート形式[v.in.ogr],をクリック。チュートリアルのESRI-shapefile importパネル図で,ファイルの空欄に,参照Browseして,自分が入れているパスのcontoursのフォルダーの中に入る。関係ファイルが4個あるが,そのうちcontours.shpを選ぶ。なお,パネルでoptions最下部の,Add importede layers ……………が予め選ばれている。日本語表示では,レイヤーツリーにインポートレイヤーを追加。
実行するとライブで,console表示 Data import result が追加されてゆく。そして自動でMap Displayに表示される View of the contours map。
Map Displayの最上段に, ノートのようなアイコン(ラスター/ベクトルマップの検索)をクリックして,Map Display画面内の等値線をクリックするとそのオブジェクトが持っている情報を見ることができる。Layer Managerの上段にはエクセルの表のようなアイコンがある。この上にポイントすると,Show attribute data for selected vector map,という注記がでる。つまりそのベクトルマップの情報がすべて表示される。
DEM作成可能な r.surf.contour コマンドを実行するには, 等値線ベクトルファイルをラスターファイルに変換する必要がある。
1. 計算するには,出来るだけ平面空間を限定する必要がある。設定/領域/領域設定, から,既存領域タブで,vector mapの空欄で,contours,を参照設定し,実行する。
2. さらに,同領域設定の,解像度タブで,2D grid resolution (north-south and east-west)で,1を入力する。このmapsetの単位がmeterなので,1は1mを意味する。
この解像度を種々変更することで,他のアプリケーションなどで使用する ascii matrix を得ることができる。
3. v.to.rastコマンドを実行する。File>Map type conversions>Vector to raster ファイル/マップタイプの変換/ベクトル→ラスター/。
v.to.rasterのパネルで, 必須タブのName for output raster map: 出力ラスターマップ ,に, 例えばcontours_rasterを入れる。属性パネルでは,Name of column for 'attr' parameter (data type must be numeric):, でlevelを選ぶ。この作業をこのコンテンツを作る際にエラーが出て進めなかった。
Conversion of a vector map to a raster oneのパネルを参照して欲しい。この最下行では,
v.to.rast input=contours@user1 output=contours use=attr column=level
とあるが,このuseのところで,=<required>と表示されて,なぜかエラーが出て,正しく実行できない。Conversion of a vector map to a raster oneのパネルの手前のパネル画面では,必須 Requiredタブで, Source of raster valuesには, attr が自動で入力されているが,実はこれが何故か効いていない。この自動入力されている文字を削除して,自ら attrと入力することで解決した。このような場合, X-windowsでコマンドベースで実行すると成功する場合が多い。成功したコマンド表示はつぎのようだ。
v.to.rast input=contours@nc_georectify output=contours_raster use=attr attribute_column=level
次にその際のスクリーンショットとできあがったcontours_rasterファイルを拡大したものを次に示す。
上の図には,ラスター/ベクトルマップの検索,のボタンを選んで,eg. 南北に連なる最も長い部分のピクセルをクリックして現れたQuery resultsのウィンドウが見え,value=123とある。これは海抜高度である。カラー表示の,068:191:112はそれぞれrgb(0 to 255)に対応している。コマンド r.surf.contour で,DEMを作成するには,このように1pixel幅のラインが必要となる。
通常, DEM digital elevation modelというが,ここでは,digital terrain modelと表現されている。さて,始めに, Grassによるコマンドの解説を次に掲載する。何をここでするのが理解しやすいと考えたからである。
https://grasswiki.osgeo.org/wiki/Contour_lines_to_DEM
r.surf.contour
GRASS GIS' r.surf.contour module is specifically built for converting contour lines into DEMs, and in general it does a rather nice job at it.
Important: be sure to restrict the computational region to the area of interest, otherwise computations will be slow. You can also set a raster MASK with r.mask in order to reduce the interpolation.
Some thatching artifacts are visible, but otherwise the module represents the surface well and does a good job recreating the river valleys and is the only one of the methods to successfully recreate the road running along the ridge on the upper-left edge of the image. Compare the two tendon-like roads running left-right across the valley with e.g. the TIN from r.surf.nnbathy.
Pre-GRASS GIS 6.4.1 only: A little extra work is needed to overcome the integer-only aspect of old r.surf.contour versions, but that only takes a minute with r.mapcalc as shown below.
Commands used:
r.mapcalc "elev.1mcont.100k = elev.1mcont * 100000"
r.surf.contour in=elev.1mcont.100k out=elev.1mcont.surf.100k
r.mapcalc "elev.1mcont.surfcont = elev.1mcont.surf.100k / 100000.0"
g.remove elev.1mcont.surf.100k
r.colors elev.1mcont.surfcont col=haxby
Again, this is not needed with recent versions of r.surf.contour.
と言うわけで,このtutorial で実施されている r.mapcalcによる計算は不要になった。要するに,一気にr.surf.contourを実行できる。
Raster>Interpolate surfaces>Raster contours ラスター/曲面補間/ラスターコンターから作成
作成されると,地図画像全域がrainbowカラーで表示される。Display mapの2D表示を3D表示に換えると,nvizが動き始める。それを次に。
以 上