エクセルで作る地形解析図【参考】

目次参考

【 参考 1 】 -- DEM間隔と座標系 --

 10mDEMデータは公称10m間隔グリッドとなっているが、実際は緯度および経度を等分割して0.4秒間隔グリッドであるため緯度によってそのグリッド間隔距離は異なる。このため、対象とする地区のグリッド距離は、とりあえず正確なものを使ったほうが良い。10mDEMデータの1ピクセル(グリッド)の正確な大きさは、国土地理院のHP「便利なプログラム・データ」で公開されている測量計算で、平面直角座標による距離計算ページを利用して求められる。
 なお、右画面画像は2013年7月くらいまでのもので、1点ごとにしか計算できなかった。それがその頃にリニューアルされて、2013年9月現在、複数点を一括して計算できるようになっている。

 ちなみに、私が現在住んでいる北緯45度、東経142度付近では、東西方向:8.76m、南北方向:12.34mである。このため、例えば地上開度図で検索距離を250mとすると、東西方向は28ピクセル、南北方向は20ピクセル、45度方向は16ピクセルとなる。グリッドが正方形ではないので45度方向は実は正確に45度になっていないけど。

 ついでに座標系のことも触れておく。
 平面直角座標系というのは公共測量に使われている座標系だが、ようするにX-Y座標で位置を示している。なんだ、座標値が2点あれば距離も方向もピタゴラスと三角関数で簡単に計算できるじゃないか、と思うのだが、まぁ、メートル単位だとだいたい合ってるのだが、厳密には違う。その理由は、地球は丸いから。見通し範囲であれば違わないのだろうが、その曲面が微妙に影響してくる。東京を基準にして北海道で測量するとゆがみが大きくて座標軸が直角にならなくて不便だ、ということなんだろう。なので平面直角座標系は、日本国内をそれぞれの中では大きくはゆがまないだろうという範囲で19地区に分割している。
 東京と北海道を含むような範囲で同じ座標で表したいという場合もあるかと思う。そういう時はUTM座標系を使う。UTMの説明は、ネット検索するといっぱい出てくる。とりあえず、日本地図センターのこちらのページをどうぞ。
 UTM座標系だったら北海道と九州もいっしょに表せるかといったら、これまた難しい。UTM座標系もゾーンに区切られていて、北海道のほとんどは第54帯、九州のほとんどは第52帯で、基準原点が異なる。このスケールになると、緯度・経度で表現するしかないかな。


【 参考 2 】 -- tiff画像 --

 XMLファイルをtiff画像に変換する方法について書いていたが、GRASS GISを使えばその面倒くさいことをしなくて良いので、差し替える。   <差し替え元>

【 参考 2 】 -- geotiff画像 --  原稿差し替え(2014.9.2)

 3章に、「GRASS GISを入手していれば、3)でXML文書にするより、書き換えたエクセルデータをそのままテキストエディタにコピペし、位置座標等の情報を加えてGRASS GISに取り込み、GeoTiff画像にしたほうが簡単だし、そのままGISソフトで表示・加工できるようになる。」と書いた。この位置座標等の情報とは、以下のヘッダ情報。

north: 45.16666667
south: 45.04832667
east: 141.6521111
west: 141.5818889
rows: 1065
cols: 632
null: -9999.00
type: float

 とりあえず適当な数値を入れているが、これはデータの範囲と行数、列数、データなしの値、データのタイプ。
 ここで注意するのは、データの範囲はセルの外側であること。ワールドファイルの場合はセルの中心の座標であるので、セルサイズの0.5分ずれる。

 これに表形式のデータをそのままコピペしてテキスト形式で保存したものが「GRASS ascii形式」となる。あとはこれをGRASS GISで読み込み、geotiffファイルとして保存すればよい。

参考文献

【 参考 3 】 -- マクロを知らない人へ --

 エクセルのマクロなんてさわったことがない、という人も少なくないようだ。
 全部を説明するのはできないので、ここではマクロのエディタを開く方法と、それを動作させる方法だけを書く。

 まず、普通にエクセルシートを開いたら、『名前をつけて保存』のところでファイルの種類をプルダウンから『マクロ有効ブック』を選択し、ファイル名を入力して保存する。




 次に、マクロ画面を開く。『alt+F8』キーで右の画面が出てくる。


 『マクロ名』に、作成するマクロの名前を入れると、『作成(C)』の文字が濃くなるので、クリックする。

 下記の画面が出てくるので、
「Sub **()」 から 「End Sub」
の間に必要な数式等を入れる。
 この「Sub **()」 から 「End Sub」がひとつのマクロとなる。
 **がマクロ名になっている。







 マクロを実行するには、『alt+F8』キーで右の画面が出てくるので、『実行(R)』をクリックする。

 エラーが出て途中で止まってしまったら、・・・ 申し訳ないがケースバイケースなので、勉強してくださいとしか言えない。4章で示したものは、基本的にはそのままコピペすれば大丈夫と思うが、「Sub **()」 から 「End Sub」にはさまれた範囲がひとつのマクロということだけはお忘れなく。
 なお、マクロが有効なエクセルファイルが開いていれば、別なファイルからもそのマクロが使える。4.1に示したように、GML形式のXMLファイルをcsvファイルとして開き、そのcsvファイル上でマクロを実行できる。


【 参考 4 】 -- カラーホイール --


8方位で表示した例

 斜面方位図で8方位に区分する場合の方位の着色は、カラーホイールの並びにするのが一般的らしい。

 カラーホイールは色の相対関係を示す基本となるものだそうで、カラー間の関係を把握し覚えるのも便利なもの。レッド、グリーン、ブルーは加算混合色で、シアン、マゼンタ、イエローは減算混合色。それぞれの正反対側にあるのがその補色(レッドとシアン、グリーンとマゼンタ、ブルーとイエロー)。
 減算混合色の多様な色は、その補色以外の2つの加算混合色で生成される。したがって、画像内のある原色の量を増やすとその補色の量が減る。例えば、イエローはグリーンとレッドで生成され、ブルーを含まない。ということは、画像ソフトなどでイエローを調整するには、ブルー成分を増減させると、イエローが弱くなったり強くなったりするということになる。

 色の話のついでだが、RGB立方体なるものも色の組み合わせの理解に役立つと思う。下左図のように三次元の直交座標軸にRとGとBを割り当てると、立方体の頂点が、R G B と C M Y 、それに黒と白の8つの色になる。
 カラーホイールに対応するのが下右図のHSIカラーモデルなんだそうだけど、私にはこの図ではなんだかピンとこない。


【 参考 5 】 -- 3D表示ファイル : VRML --
(2014.4.27追記) いまや、webの世界でVRMLは完全に廃れて、WebGLに切り替わっているらしい。国土地理院のサイトでは、地形図だけでなく空中写真までも簡単に3D表示して閲覧できるようになった。ただ、3DプリンタはまだVRMLファイルじゃないと模型作成できないらしい。これも時間の問題なんだろうな。
 地形解析図とは直接関係ない。ただ、VRMLファイルで地形の3D表示が簡単にできることを知った。プラグインを別途インストールする必要があるが、ウェブブラウザでそのままくるくる回転させて上から、横から、下から、そして裏からものぞき見ることができる。
#VRML V2.0 utf8
Shape {
    geometry ElevationGrid {
    xDimension 4
    zDimension 5
    xSpacing 10
    zSpacing 10
    height [
      10, 10, 10, 9,
      10, 11, 11, 10,
      11, 13, 15, 11,
      10, 12, 13, 10,
      10, 10, 12, 11
    ]
  }
  appearance Appearance {
    material Material {}
  }
}
    3D表示例 と そのファイル
    (表示例の右下図は、同じ箇所の段彩陰影図)

 VRMLファイルは、標高のグリッドデータをカンマ区切りあるいはタブ区切りなどで並べるだけのテキストファイル。サンプルとして4列5行のデータ例を右に示す。xDimensionで列数、zDimensionで行数、xSpacingで東西方向のグリッド間隔、zSpacingで南北方向のグリッド間隔を指定するだけ。右のサンプルでは標高データをわかりやすいように4列5行に配列したが、半角スペースや改行は意味がないので1データごとに改行してもかまわない。カンマの代わりにタブでもよい。
 ということは、GML形式のxmlファイルがそのまま使えるということ。拡張子を .csv に書き換えてExcelで開き、B列の標高データを選択してコピーし、VRMLファイルの height [ の次の行に挿入し、拡張子を .wrl にして保存すればでき上がり。
 これに衛星画像を貼り付けたりもできる。

【プラグインをインストールしてあれば、ここにサンプルが表示されます】

 VRMLブラウザー/プラグインについては、こちらをご参照。私はこの中のcortonaというのを使用中。

 3D表示方法・ファイルにもいろいろあるが、その中のVRMLファイルを私が最初に見たのは、防災科学技術研究所の三次元震源分布表示だった。こりゃすごい、と思い、仕事中だったので職場でVRMLファイルに関していろいろ検索してみたのだが、3Dゲームが大きく関連するらしく、閲覧制限にひっかかるサイトが多くあって、職場からは思うように調べられなかった。

 ちなみに、「VRML入門」で検索すると、やっぱりいろんな学校の講義資料が出てくる。昨今の学生にとっては当たり前に知ってることなのかなぁ、、、 と思ったのだが、それにしても出てくるサイトの作成時期が今から10年ほど前のものばかり。
 いろいろ見ると、どうやらもはやすたれつつあるファイル形式らしい。


【 参考 6 】 -- 局所積和演算とSUMPRODUCT関数--

 積和演算なる用語もこのサイトを作り始めてから知ったのだが、3×3セルくらいの計算なら前の行と次の行の値を足して、と計算式をちまちま入力してもたかが知れている。しかし、半径100mの円の範囲のセル値をどうこうする、ということになると、10行前の5〜8列と9行前の6〜9列と・・・などと計算式を入力することになって簡単ではない。
 それを簡単に計算できるのが SUMPRODUCT関数。例えば、A1セルからC3セルに以下のような数値を入れたとする。
 例1 1  1  1     例2 1  0 -1
    1 -8  1        2  0 -2
    1  1  1        1  0 -1
 これを絶対参照として、=SUMPRODUCT($A$1:$C$3,D1:F3) とすれば、例1であればE2セルにおける8近傍ラプラシアンとなる。(ただしX、Y方向セルサイズが違うとややこしくなる)。例2であれば、それを 8*Dx で割ると東西方向の傾斜となる(Sobelのオペレータ)。半径100mの円内に相当するセルを 1 とし円外を 0 とすれば、円内の値だけが抽出されて合計される円フィルターとなる。ガウシアンフィルタによる平滑化なんてのも簡単にできる。


【 参考 7 】 -- 3D表示ファイル : 3D-PDF --

 VRMLは廃れて、WebGLは私の手には負えないとあきらめていたのだが、3D-PDFなるものがあるのを知った。
 作成するにはそれなりの3D-CADソフトが必要なんだろうと思うが、下記のようにWebでも表示ができる
(私の環境では、IEでは表示されるが、Firefoxだと真っ白画面となり表示されない)。チェックボックスによりパーツごとの表示非表示切り替えができる。そして下記は結構重いファイルなのだが、読み込みにはやや時間がかかるものの読み込んだ後は動きが軽いのにはびっくり。これはとあるところの地層と断層を表示した3D-PDFの例。
 (マウスとCtrlキーで回転・拡大・縮小・移動が自在)

この例で動きが鈍い場合、topo_bor_map.00tのチェックをはずすとだいぶ変わると思います。ファイルDL




【 参考 8 】 -- 画像の合成 --

 画像のソフトとしては、もっぱらphotoshopを利用しているのだが、知らない機能がいっぱいある。その中で、このサイトでも大きく関係するのが画像の合成。
 2枚の画像を重ねて表示させるには、上のレイヤーを透過させる。これまでこれしかしていなかった。ところが、重ね方にもいろいろ方法があった。
 レイヤーウィンドウは常時表示させていて、重ねる順番とか、不透明度とかで常に使っている。しかしその隣のプルダウンは使ったことがなかった。この中に 『乗算』 というのがある。
 反転地下開度図に、地上開度図(50%透過)、傾斜量図(50%透過)をそのまま 『通常』 で表示したのが左図。傾斜量図だけ 『乗算』 で表示したのが右図。


 色の調整をしていないのでちょっと暗いが、わかるだろうか。今まで赤色立体地図に似せた図をいろいろ試行錯誤していたが、どうしても谷底を暗くできなかった。ところが、乗算すると谷底がしっかり暗くなっている。このクリックに気づかず、ずいぶん無駄な労力をしていたことに、少々がっくりしてしまった。


目次参考