概要
件名のとおりです。
手順
手順1
建物ポリゴンデータを入手。ここでは国土基盤地図情報の「建築物」のデータを利用しました。「基盤地図情報ビューア」を利用して必要箇所のshpファイルを作成し、それをQGISで読み込みました。
手順2
次に建物占有率を設定するメッシュを作成します。メッシュは外部ファイルから読み込む方法もありますが、ここでは「ベクタ>調査ツール>グリッドを作成」を利用して作成しました。今回作成したメッシュ作成条件は以下。
こんな感じのメッシュができます。
手順3
次に建物ポリゴンをメッシュと関連づけるために、建物ポリゴンをメッシュで分割します。「プロセッシング>
>ツールボックス>ベクタオーバーレイ>交差」で以下の条件で「実行」します。
すると以下ようにメッシュ形状で分割さたれた建物ポリゴンのデータが作成されます。
手順4
次に分割されたポリゴンの面積を設定します。手順3で作成されたデータを右クリックし、「属性テーブルを開く」で属性テーブルを開き、「フィールド計算機を開く」をクリックし、各ポリゴンの面積を設定します。
属性テーブルの最も右端に"bill_area"が追加されていることを確認してください。ちなみに、"id_2"は手順3で利用したグリッドデータのidが設定されています。
手順5
次に手順2で作成したグリッドデータと手順4で作成したデータを関連づけます。「プロセッシング>ツールボックス>ベクタ一般>属性テーブルで結合」で以下の条件で「実行」します。
上の操作では、グリッドデータにポリゴンを格子線で区切ったデータ(交差データ)を結合しているため、ポリゴンが重なっていない格子には何もマッチしないため、以下のようなメッセージが表示されますが問題ありません。
手順6
次に出力レイヤを右クリックして属性テーブルを開き、「フィールド計算機を開く」をクリックし、建物占有率を設定します。結合されたテーブルには既に各格子に含まれる建物の面積が"b_area"として設定されているはずです。また各格子(セル)の面積は"$area"で算出することができます。
ここ注意しなければいけないことがあります。それは一つもポリゴンがマッチしなかった格子(セル)の"b_area"にはNULLが入っていることです。それに配慮して以下の計算式で建物占有率を算定します。
属性テーブルを閉じて、出力レイヤを右クリックしてプロパティから値を表示して確認してみてください。
上記設定とすると以下のように表示されるはずです。
元データの建物ポリゴンと比較しても合理的な数値を確認することができます。
以上です。
氾濫計算などで各メッシュの建物占有率を算出したい場合には、QGISが使えますね!格子数や建物数が増えた場合がかなり処理速度が遅くなることが予測されますが、どうでしょうか??