TOPEXをGRASSで算出してみる

もくもく単純データ処理に嫌気がさしてきたので
気分転換を兼ねて,
以前相談を受けていて放置していた
TOPEX(Topographic Exposure)の算出を
Grassをつかってやってみました。

GrassでTOPEXを計算,ていうのはこの方がやっていたので参考にしました。
Calculating Togographic Exposure With Grass

もともと俯角はすべて0°とするものだったらしいけど
負の値として計算することもあるようですね。
たとえばこれ(P47-48)
EMPIRICAL MODELLING OF WINDTHROW RISK USING GEOGRAPHIC INFORMATION SYSTEMS

DEMを基にしたTOPEXは
こんな感じで計算するようです。

1) 対象セルA00から8方位の計測線を延ばす
2) その延長上かつ特定の計測範囲内において
一定の間隔でA00からの高低角を算出する
(下図では A00-A33 , A00-A55
およびA00-A77 間の高低角を算出する)
3) 求めた高低角の最大値を
その方位の高低角と定義する
4) 各方位で同様の計算を行い
8方位すべての値を積算したものをTOPEXとする

↓かなりアレな図ですが(平面図です)背景のメッシュはDEMだと思ってください…

tekitou

どうやら地上開度とアイディアはほとんど同じ。
開度による地形特徴の表示

とりあえず

1)Grass を外部からうごかす環境設定済み
2)DEMはGrassにインポート済み
3)俯角もそのまま計算する(負の値として処理)

という前提で進みます。

引数多すぎとか8方位なのにいらん計算してるとか
そもそもGeotiffのインポートからやれよとか
いろいろあるけど気分転換なので 気にしない 気にしない

ここからダウンロードして解凍
topog フォルダをフォルダごと
windowsであれば
C:\Python27\Lib\
にコピーしてください。

それで

python (command line)
または
コマンドプロンプト(最初にpythonと入力しENTERする)

などで以下のようにコマンドを入力して実行してみてください。



topex.pyの中身はこうなっています。

環境変数の設定とかめんどくせ という場合は
同梱してあるtopexf.pyを使って

1)出力コマンドをテキストファイルに出力
2)grassのレイヤマネージャにあるコマンドコンソールにコピペして実行

てのがてっとりばやくて楽かもしれないですね。
これはpython2xがあれば動きます。



topexf.pyの中身はこうなっています。



コメントはかなり適当(ごめんなさい)
これみたいにGDALでやったほうがべんりなんだろうなー
gdalでfocal statistics

ではでは。