サイトマップ
お知らせ、メモ
案内板
うちのヘッドライン
 




トップ  >  こんなときどうする  >  テスト用毎木調査データを作るには

テスト用毎木調査データを作るには

こんなの何に使うんだ?と思われますが、ちょっと思うところがあって作ってみました。 以下は、位置情報付き毎木調査データを作った過程です。

位置情報を作る

まず、テスト用DEMデータを使って、XYZのポイントデータを作成します。

GRASSにテスト用DEMを読み込み、リージョンをそのDEMの範囲か、それよりも内側に設定し、 v.random でランダムにポイントデータを発生させます。 樹木密度を考えて発生させる点数を調整します。

次に、ランダム点に対してテスト用DEMデータを対象として v.drape を実行し、ランダム点に高さを割り付けます。

出来たデータをv.out.asciiで吐き出し(区切りをカンマにしてcsvにしておくと便利)、 XYZ形式の位置情報データを出力します。

樹高、胸高直径、樹種を割り振る

XYZデータを表計算ソフトに取り込んで、樹高、胸高直径、樹種を割り振ります。 ほかにもイロイロと割り振ってみてもいいかもしれません。

樹高は、ここでは6m〜17.3mに割り振ってみました。OpenOffice上での数式は以下のような感じです。

=RAND()*11.3+6

一斉林などの場合は樹高の範囲をもう少し狭めてみたほうがいいと思います。

胸高直径は、よくわからないので、樹高を基準に以下のような式で割り振りました (D列は樹高が割り振られています)。

=D2*0.014+RAND()*0.6

先に樹種を割り振って、種類ごとに樹形に応じて数式を変えたりなんかするとよりリアルになるでしょう。

最後に樹種ですが、気をつけたいのは、適当に割り振ると本来大きくならない樹木が15m以上になったりと、 ありえないデータになってしまいます。 そこで、ここでは簡単に樹高を確率として使用することにしました。 この場合、樹高が高くなることが出来る種類、優先樹種から割り振る必要があるので、 あらかじめ割り振る順番を決めておきます。 以下の例ではまずブナから割り振り、ミズナラ、シラカンバ、モミ、ハルニレ、、、と割り振ってみました。

まず、樹高を0.0〜1.0の間に正規化?します。

=(D2-MIN(D$2:D$601))/(MAX(D$2:D$601)-MIN(D$2:D$601))

つぎに、以下の式でブナを割り振ります(F列に上記の数値が記録されています)。

=IF(RAND()<F2;"ブナ";"")

残った樹木に対して、同様に種類を割り振ります。 本数を調整したい場合はRAND()を定数倍するといいでしょう。

こうして順番に割り振ると、残った樹木は必然と樹高が低くなっていきます。 そこで、順に中低木を割り振っていきます。

さいごに、お好みで珍しい種類でも割り振れば一応完成です。

QGISに取り込んだり、PostGISに取り込んだり、RにSpacialGridDataFrameとして取り込んだり、 何かと便利に使うことが出来ます。



QGISに取り込んだところ

参考文献


クリエイティブ・コモンズ・ライセンス
This documents by Yamate,N is licensed under a Creative Commons 表示 - 継承 3.0 非移植 License.
login