ハザードマップ上の物件の抽出

2,378 views
Skip to first unread message

Mito Suzuki

unread,
May 23, 2021, 5:01:40 PM5/23/21
to QGIS初心者質問グループ
はじめまして。
ハザードマップ上の浸水物件の抽出について教えてください。

QGIS3.16を使用しています。

ハザードマップ上にある浸水物件を抽出し、そのデータを取得したいです。
空間結合の機能を使ってみたところ、下記のメッセージが表示されうまくいきません。

「結合レイヤの空間インデックスが存在しません。処理が極端に悪化します。“浸水想定区域” の地物( 2073 )に無効なジオメトリがあります。ジオメトリを修正するか、プロセシングの設定を「無効な地物を無視」に変更してください」

物件所在地はCSVファイルでデータ入力しております。

浸水物件の抽出方法をご存知の方がいらっしゃいましたら、ご教示いただけますと幸いで。

どうぞ宜しくお願いいたします。

福岡

unread,
May 23, 2021, 9:32:50 PM5/23/21
to QGIS初心者質問グループ
Mito Suzuki 様

こんにちは

前提とする条件がもう少し欲しいと思う方が多いのではないかと思います。
少し予想を含めて整理してみます。

「空間結合の機能を使ってみたところ」:メニューの「ベクタ - データ管理ツール - 属性の空間結合」と予想
「物件所在地はCSVファイルでデータ入力」:ちょっと判断に迷います。建物のデータをCSVに含まれる位置座標からポイントとしてQGISへ取り込んでいると予想
「浸水想定区域” の地物( 2073 )に無効なジオメトリがあります」:浸水深さを属性テーブルに持つ氾濫域データの地物にジオメトリエラーがあると予想

そうすると予想ですが、要望に関して整理してみると次のなりました。
1 国土数値情報などから得た氾濫域のポリゴンデータがあるが、ジオメトリエラーがある。
2 建物のデータは、CSVのポイントデータである。
3 建物データに氾濫域のデータを結合させ、建物毎に浸水深をリンクさせたい。

このうち躓いているのは「1」のところですので、このことの解決策(ジオメトリエラーの解消)が主目的だと予想しました。

まずプロセッシングツールの「ベクタジオメトリ - 有効性チェック」で、エラー内容を確認します。
よくあるのが「自己交差」だと思います。先日、国土数値情報の「津波浸水想定」をダウンロードしましたが、多数の「自己交差」が確認できました。

自己流なのですが、メニューの「ベクタ - 空間演算ツール - バッファ」で距離を0mで処理しています。
多分、正統派の対処方法ではないと思いますので、正しい方法やもっと良い方法がありましたらご投稿ください。m(__)m

なお「結合レイヤの空間インデックスが存在しません。処理が極端に悪化します。」は、メニューの「ベクタ - データ管理 - 空間インデックスを作成」で対処できます。
これはエラーではなく処理速度が遅くなることに関する警告なので、処理時間の短縮が必要な場合に対処するということで良いと思います。

2021年5月24日月曜日 6:01:40 UTC+9 Mito Suzuki:

Mito Suzuki

unread,
May 24, 2021, 7:46:37 AM5/24/21
to QGIS初心者質問グループ
福岡様

ご丁寧に解説していただき、本当にありがとうございます。また、説明不足で申し訳ありませんでした。
お陰様でエラーを解消することが出来ました。

折角ご回答頂いたのに本当に恐縮なのですが、私の最終目的の「物件をハザードマップの浸水深ごとに分類して抽出したデータを取得する」という機能は、この「ベクタ - データ管理ツール - 属性の空間結合」ではない気がして来ました。

つい2週間前から勉強を始め、書籍を購入したりYoutube等で勉強しているのですが、明確な手段が未だ見つかりません。

もしも、ご知見をお持ちでしたら教えていただけますと幸いです。

重ね重ね大変申し訳ありません。

どうぞ宜しくお願いいたします。

2021年5月24日月曜日 10:32:50 UTC+9 福岡:

福岡

unread,
May 24, 2021, 8:26:09 PM5/24/21
to QGIS初心者質問グループ
Mito Suzuki 様

こんにちは

手法については問題無いように思います。
建物の属性テーブルに浸水深関連のデータが加わるので、これをExcelなどに取り込み、水深毎の件数を集計できると思います。

ただ氾濫域の「浸水深」がどのように整理されているデータをお持ちなのかが、気になります。
念のため私の居住地である秋田のデータで確認しようと国土数値情報から洪水浸水想定区域(ポリゴン)をダウンロードしてみました。

そうすると、製品仕様書では「A31_001」に浸水ランクが掲載されることになっていますが、このフィールドが属性テーブルに存在しませんでした。
この関係は大丈夫でしょうか?

2021年5月24日月曜日 20:46:37 UTC+9 Mito Suzuki:

福岡

unread,
May 24, 2021, 8:40:22 PM5/24/21
to QGIS初心者質問グループ
すみません。ちょっと訂正です。

「A31_001」には次のように「1~6」のコードでランク分けされることになっています。

浸水深ランクコード

先ほどの投稿で「A31_001」が無いと書きましたが、データを見直したところフィールドはありました。
ただし入っている数値が「11,12,13,14,15,21,22,23,24,25,26,27」なっていて、ランクコードと一致しませんし、実水深データでも無いようです。

2021年5月25日火曜日 9:26:09 UTC+9 福岡:

福岡

unread,
May 25, 2021, 3:09:43 AM5/25/21
to QGIS初心者質問グループ
Mito Suzuki 様

こんにちは

Discordでいつも教えて頂いている ありたさん からアドバイスをもらいました。
浸水深のコード表ですが、次のものを使うのが正解でした。m(__)m


これで作業例を示すことができます。
ありたさん、ありがとうございました。m(__)m

さて作業例を以下に示します。

家屋のポイントデータが無いので、ダウンロードしたデータに調査ツールを使ってポイントを配置しました。
fig01.PNG

拡大するとこんな感じで、8,700強のポイントが配置されています。
fig02.PNG

メニューの「ベクタ - データ管理ツール - 属性の空間結合」を使います。
「ベースレイヤ」にポイントデータ、「結合レイヤ」に氾濫域データを指定します。
ジオメトリの空間関係は、デフォルトの「交差する」で良いと思います。
結合するフィールドには、浸水深が記載されているフィールドを指定します。
結合のタイプは、ちょうど境界にあったりすることでダブルカウントされないように「1対1結合」にします。
fig03.png

これで実行して属性テーブルを見ると、次のように出力されていました。
fig04.PNG

全地物を選択して「Ctrl+C」で、属性テーブルをクリックボードに取り込み、表計算ソフトに貼り付けます。
※A列にはWKTの空間情報が張り付きますが、列ごと削除して良いと思います。

countif関数で浸水深別の個数を数え、最終的には次のような結果が得られます。
fig05.PNG
2021年5月25日火曜日 9:40:22 UTC+9 福岡:

Mito Suzuki

unread,
May 25, 2021, 7:42:38 AM5/25/21
to QGIS初心者質問グループ
  福岡様、ありた様

ご丁寧に解説して頂き本当に本当にありがとうございました。

お陰様で、物件毎の浸水深データを取得することが出来ました!!!

言葉では言い表せないほど、本当に感謝しております。(やっと答えが出て嬉し泣きしております)

また、このグループを作り運営してくださっているキタ様にも感謝申し上げます。

引き続きどうぞ宜しくお願いいたします。



2021年5月25日火曜日 16:09:43 UTC+9 福岡:

きたこういち

unread,
May 25, 2021, 11:04:04 AM5/25/21
to QGIS初心者質問グループ
なぜか感謝されましたねw
ありがとうございます。
この掲示板は、回答していただけるたくさんの有識者の方々に支えられています。
あらためてお礼申し上げます!
今後もよろしくお願いします!

2021年5月25日火曜日 20:42:38 UTC+9 Mito Suzuki:
Reply all
Reply to author
Forward
0 new messages