前提・実現したいこと
PythonとGISを使用して地形発達シミュレーションを行おうとしています。
そこで、河川での侵食・堆積を表現したいです。
現在の状況
元となるデータは5mDEMを使用しています。形式はGeotiffのラスターファイルです。
まず、SAGA GISのChannel network and drainage basinsというものによって、流れる先を示すラスターデータを作成してあります。
下の表のように数字と方角が対応しています(ピクセルに0とあった場合には北へ流れる)。
8の場合は移動しません。
|7|0|1|
|6| |2|
|5|4|3|
また、侵食量は式があり、求めることが出来ます。
考えたこと
このようにやればよいのではないかという予測
0. DEM及び流下先ラスターデータをnumpy配列に変換する
- DEM配列の各要素ごとに侵食量を計算し、新たな配列(土砂配列)とする
- 土砂配列を流下先配列に従って移動させる
- 移動後の要素
わからないこと
やりたいことを画像で示すと、以下のようになります。
2×2の配列があった場合、移動後の土砂の配列が分かれば侵食・堆積後の標高は簡単な計算で求まります。
しかし、赤線で囲った部分の表現の仕方が見当もつきません。
調べた結果numpyの場合、cumsum関数を使えば隣の要素との計算が、スライシング機能によって要素の抽出ができると
分かりました。
また、roll関数によって位置をずらすことができると分かりました。
ただ、今回のように要素によってバラバラな動きをする方法は調べてもわかりませんでした。
教えていただけると幸いです。
補足情報(FW/ツールのバージョンなど)
ひとまず、移動距離は1マスとしたいです。
conda version : 4.8.4 conda-build version : 3.20.0 python version : 3.8.5.final.0
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/17 08:46