TOPIC 21|QGISを用いた災害リスク情報の可視化と分析[2/2]|災害リスク情報を可視化する
このトピックでは、QGISを使って、PLATEAUデータを分析する方法を示します。ここからは、災害リスク情報を可視化する方法を解説します。
このトピックでは、QGISを使って、PLATEAUデータを分析する方法を示します。ここからは、災害リスク情報を可視化する方法を解説します。
【目次】
21.4 _ 災害リスク情報を可視化する
次に、ふたつ目の課題、「災害リスク情報の可視化」を始めます。
これまでの続きではなく、QGISの[プロジェクト]メニューから[新規]を選択し、新規プロジェクトとして始めてください。
21.4.1 _ 仕組みと考え方
PLATEAUの3D都市モデルでは、災害リスクを「災害リスク(浸水)モデル」と「災害リスク(土砂災害)モデル」の2つのモデルに分けて定義しています。どちらもLOD1のモデルです。
詳細な仕様については、「3D都市モデル標準製品仕様書」の「4.9 災害リスクモデルの応用スキーマ」を参照してください。
①災害リスク(浸水)モデル
想定される浸水面を表現したもので、災害時にどの高さまで浸水するかを示したものです。高さは、地盤面の標高に浸水深を加えた値です。次の4種の情報を扱います。
・水防法第14条第1項に定める「洪水浸水想定区域」
・水防法第14条の2第1項に定める「雨水出水浸水想定区域」
・水防法第14条の3第1項に定める「高潮浸水想定区域」
・津波防災地域づくりに関する法律第8条第1項に定める「津波浸水想定」
②災害リスク(土砂災害)モデル
土砂災害のおそれのある範囲を表現したものです。高さは0であり、範囲だけを示します。次の2種の情報を扱います。
・土砂災害警戒区域等における土砂災害防止対策の推進に関する法律第7条第1項に定める「土砂災害警戒区域」
・土砂災害警戒区域等における土砂災害防止対策の推進に関する法律第9条第1項に定める「土砂災害特別警戒区域」
21.4.2 _ 建築物モデルをインポートする
「災害リスク(浸水)モデル」と「災害リスク(土砂災害)モデル」は、建築物モデルに付与されています。
PLATEAUのフォルダ構造では、bldgフォルダに建築物モデルのCityGML形式ファイルが含まれています。このフォルダのファイルをPLATEAU QGIS Pluginでインポートする際、災害リスクに関連する情報が紐付いていれば、それらが別のレイヤに展開されます。
実際にインポートしてみましょう。ここでは、静岡県沼津市の図21-31に示す6つのメッシュコードの範囲をインポートします。
【メモ】
メッシュコードの詳細は、「TOPIC 3 3.2.4 _ メッシュコードによるファイルの分割」を参照してください。
【メモ】
以下の手順は、「21.3.2 CityGML形式ファイルをまとめてインポートする」と同様のため、同じ操作の箇所は割愛します。
【手順】建築物モデルをインポートする
[1]PLATEAU QGIS Pluginを起動する
[プロセシング]メニューから[ツールボックス]を開きます。[Project PLATEAU]の配下の[PLATEAU 3D都市モデルを読み込む]をダブルクリックして、PLATEAU QGIS Pluginを起動します。
[2]バッチプロセス画面に切り替える
1つのファイルを読み込むダイアログボックスが表示されたら、[バッチプロセスを実行]をクリックして、複数ファイルを選択できる画面に切り替えます。
複数ファイルを選択できる画面が表示されたら、[PLATEAU CityGMLファイル]の下の[オートフィル]のドロップダウンをクリックして、[ファイル選択]をクリックします。
[3]読み込むCityGMLファイルを選択する
udxフォルダ配下のbldgフォルダのファイルのうち、図21-31に示した6つのファイルを選択し、[開く]をクリックします。
【読み込むファイル】
「52385628」「52385629」「52385618」「52385619」「52385608」「52385609」
【メモ】
連続しないファイルを選択するには[Ctrl]キーを押しながらクリックします。操作しにくいときは、[オートフィル]―[ファイル選択]ではなく、それぞれの行の[PLATEAU CityGMLファイル]の[・・・]ボタンをクリックして、ひとつずつ選択していく方法をとるのもよいでしょう。
[4]オプションを設定して実行する
選択したファイルが1行ごとに設定されたら、オプションなどを次のように設定します。そして、[実行]ボタンをクリックして実行します。読み込みが完了したら、[閉じる]をクリックして閉じます。
・読み込むLOD | [最も単純なLODのみを読み込む] |
・地物を構成する部分ごとにレイヤを分ける | No |
・3次元データを強制的に2次元化する | No |
・既存の同名レイヤに追記する | Yes |
・変換先CRS | [EPSG:6676 - JGD2001/Japan Plane Rectangular CS VIII] |
【メモ】
変換先CRSに該当の項目がないときは、その右のボタンをクリックして、「6676」を検索して見つかったものを選択します(前掲の図21-9を参照)。
[5]作られたレイヤを確認する
読み込むと、Buildingのレイヤに加えて、「Building / LandSlideRisk 急傾斜地の崩落」「Building / LandSlideRisk 土石流」などのいくつかのレイヤも追加されます。これらの「Building / 」の名前のレイヤが、「災害リスク(浸水)情報(Building / RiverFloodingRiskから始まるもの)」および「災害リスク(土砂災害)情報(Building / LandSlideRiskから始まるもの)」です。
「LandSlideRisk 急傾斜地の崩落」のような名称は、モデルに含まれている「description(説明文)」と「scale(規模)」に基づくものなので、データによって異なります。
この情報は、属性テーブルを確認するとわかります。例えば、「Building / RiverFloodingRisk 狩野川水系狩野川 L1(計画規模)」のレイヤを右クリックして[属性テーブルを開く]を選択して、属性の内容を確認すると、descriptionには「狩野川水系狩野川」、scaleには「L1(計画規模)」が、それぞれ設定されていることがわかります。
21.4.3 _ 浸水被害想定を可視化する
このように災害リスクに関する情報は、「Building / 」の名前のレイヤに、それぞれ分割して格納されています。例えば、いま図21-36で確認したRiverFloodingRisk(浸水)であれば、rankOrg属性に「浸水深の区分」、depth属性には「陸上の各地点で水面が最も高い位置にきたときの地面から水面までの高さ」が格納されています。またLandSlideRisk(土砂災害)であれば、areaType属性に「種類」が格納されていますし、TsunamiRisk(津波リスク)であればrankOrg属性に津波の「浸水深の区分」が格納されています。
【メモ】
浸水深の区分は、rank属性もしくはrankOrg属性のいずれかに格納されています。rankOrg属性は、都道府県独自に設定した区分です。
【メモ】
どの属性が、どのような意味を持つのかについては、「3D都市モデル標準製品仕様書」の「4.9 災害リスクモデルの応用スキーマ」を参照してください。
災害リスクに関するレイヤであれば、どの属性テーブルにもparentという属性があり、この属性は建築物のIDを示しています。つまり、図21-37のように、1つの建築物に対して、複数の災害リスクのテーブルが紐付く構造になっています。
災害リスクに格納された属性を、地図上で可視化するには、建築物の形状が入っているBuildingレイヤから、それらの属性を参照できるように「テーブル結合」という操作をします。
以下では、「Building / TsunamiRisk 静岡県第4次地震被害想定(南海トラフ巨大地震(ケース1))」に含まれている「浸水深の区分(rankOrg属性)」をテーブル結合して、それを可視化してみます。
【手順】 浸水深の区分(rankOrg属性)を可視化する
[1]テーブル結合の画面を開く
Buildingレイヤから浸水に関する属性を参照したいので、テーブル結合の画面を開きます。Buildingレイヤを右クリックして[プロパティ]を選択します。そして[テーブル結合]タブをクリックします。
テーブル結合を開いたら、下の[+]ボタンをクリックして、テーブルを追加する画面を開きます。
[2]災害モデルの属性テーブルを結合する
次のように設定して、[OK]をクリックします。
・結合するレイヤ
結合するレイヤです。ここでは[Building / TsunamiRisk 静岡県第4次地震被害想定(南海トラフ巨大地震(ケース1)]を選択します。
・「結合基準の属性」と「ターゲット属性」
parent属性がid属性と結びついているので、前者には「parent」を、後者には「id」を設定します。
・その他のオプション
デフォルトのままとします。
[3]結合を保存する
前の画面に戻ったら、[OK]をクリックして設定を保存します。
[4]結合結果を確認する
[Building]レイヤを右クリックして、[属性テーブルを開く]を選択して、属性テーブルを開きます。
右にスクロールすると、「Building / TsunamiRisk 静岡県第4次地震被害想定(南海トラフ巨大地震(ケース1)_id」「Building / TsunamiRisk 静岡県第4次地震被害想定(南海トラフ巨大地震(ケース1)_source」「Building / TsunamiRisk 静岡県第4次地震被害想定(南海トラフ巨大地震(ケース1)_rankOrg」のように「結合したテーブル名_属性名」の列が追加され、該当の属性を参照できるようになっていることがわかります。
【メモ】
接頭辞の「Building / TsunamiRisk 静岡県第4次地震被害想定(南海トラフ巨大地震(ケース1)_」の部分は、図21-40において[属性名の接頭辞]オプションで指定できます。今回は指定しませんでしたが、短くわかりやすい接頭辞を指定しておくとよいでしょう。
[5]色分けする
ここまでできたら、Buildingレイヤのシンポロジを設定して、浸水深の区分ごとに色分けしてみましょう。色分けの方法は、TOPIC 20の「20.5 属性の確認とスタイリング」で操作した方法と同じです。
Buildingレイヤのプロパティを開き、[シンポロジ]タブを開きます。シンポロジタブでは、[カテゴリ値による定義]を開き、[値(Value)]として、「Building / TsunamiRisk 静岡県第4次地震被害想定(南海トラフ巨大地震(ケース1))_rankOrg」を選択します。
ここでは、濃度で色分けしたいと思います。そこで[カラーランプ]で[Spectral]を選択します。その後、[カラーランプを反転]をクリックして、色を反転させます。そして[分類]をクリックして、値を読み込みます。
そうすると、「その他の値」の色が、赤くなっているので、赤い部分クリックして、白色に変更します。
設定が終わったら、[OK]をクリックして、プロパティ画面を閉じます。
すると、浸水深の区分ごとに色分けして表示されます。そのままだとわかりにくいですが、拡大したり、OpenStreetMapの地図を重ねて表示したりすると、河川に近く、かつ、曲がっているところの浸水リスクがほかより高く設定されていることがわかります。
21.5 _ 建築物から最寄りの避難所までの距離を求める
最後に、災害リスクと関連して、それぞれの建築物から最寄りの避難所までの距離を求めてみましょう。
21.5.1 _ 仕組みと考え方
近年では、地方公共団体のオープンデータ化の取り組みが進み、避難所の経緯度をCSV形式などの一覧で配布しているところが多いです。例えば静岡県は、下記のページで沼津市の指定避難所一覧を提供しています。
【ふじのくにオープンデータカタログ 指定避難所】
https://opendata.pref.shizuoka.jp/dataset/fuji-449.html
QGISでは、プロセシングツールの「属性の最近傍結合」という操作をすると、2つのレイヤ間で、最も近い地物同士の直線距離を計算できます。つまり、この指定避難所を別のレイヤとして読み込み、それとBuildingレイヤを「属性の最近傍結合」で操作すると、Buildingレイヤ上のそれぞれの地物(建築物)から指定避難所レイヤ上の地物(指定避難所)までの最短の直線距離を求められます。
21.5.2 _ 指定避難所データをインポートする
まずは、指定避難所のデータをQGISにインポートします。
【メモ】
このトピックでは、前節の流れを汲んで説明していますが、以降で説明する内容は、災害リスク情報の可視化とは独立しています。いったんプロジェクトを新規作成し、沼津市のCityGMLを読み込み直したところから始めてもかまいません。
【メモ】
指定避難所データのデータ形式や文字コードは、地方公共団体によって異なります。下記は、静岡県の場合です。
【手順】指定避難所のデータをインポートする
[1]指定避難所のCSVデータをダウンロードする
指定避難所のCSVデータをダウンロードします。ここでは下記のURLから、沼津市の指定避難所データをダウンロードします。
【ふじのくにオープンデータカタログ 指定避難所】
https://opendata.pref.shizuoka.jp/dataset/fuji-449.html
[2]CSVのレイヤを追加する
[レイヤ]メニューから[レイヤを追加]―[CSVテキストレイヤ]を選択します。
次の設定をしてから[追加]ボタンをクリックして、レイヤを追加します。レイヤが追加されたら[閉じる]をクリックして、ウィンドウを閉じてください。
・ファイル名
読み込むCSVファイル名を指定します。手順[1]でダウンロードしたファイルを指定します。ファイルを指定すると、画面下の「サンプルデータ」に、そのプレビューが表示されるので、列名や文字コードの指定に間違いがないかを確認できます。
・レイヤ名
出力するレイヤ名です。任意名ですが、ここでは「sitei_hinanjyo_ichiran」とします。
・文字コード
文字コードです。今回扱う沼津市のCSVファイルはシフトJIS形式であるため、[Shift_JIS]を指定します。
・ファイル形式
[CSV(コンマで区切られた値)]を指定します。
・レコードとフィールドのオプション
読み取り方法を選択します。デフォルトと異なるのは、[破棄するヘッダ行数]を「1」とし、[最初の行は属性名]にチェックを付ける点です。今回扱う沼津市のCSVファイルは、1行目に列名が記載されています。それを読み飛ばすため、そして、その値を属性名として採用するため、この指定が必要です。
・ジオメトリ定義
[ポイント座標]を選択して、CSVデータ中の、どの列の値を「X値」「Y値」として扱うのかを指定します。「サンプルデータ」の部分を見るとわかりますが、沼津市のCSVファイルの場合、「緯度」「経度」の列に、それぞれ格納されています。そこでX値には「経度」を、Y値には「緯度」を、それぞれ指定します(逆にしないように注意してください)。
このとき[ジオメトリのCRS]も指定します。経緯度の情報なので、[EPSG:6688 - JGD2011]を選択します。
[3]読み込まれたレイヤを確認
インポートすると、地図上に、指定避難所の場所が、点で表示されます。
OpenStreetMapなどの地図を重ねて、点の位置が地図と合っていることを確認してください。合っていない場合は、「緯度と経度を逆にした」「ジオメトリのCRSが正しくない」という可能性があります。
【メモ】
点が見えないときは、レイヤの重ね合わせを確認してください。また色が見にくい場合は、レイヤのプロパティの[シンポロジ]を開いて、別の色を設定するなどして調整してください。
【メモ】
OpenStreetMapなどの地図を重ねる方法は、TOPIC20の「20.4.4 地図を重ねて表示する」を参照してください。
[4]平面直角座標に変換する
距離を計算するため、経緯度の座標系から、メートル単位の座標系がある「平面直角座標」に変換します。ここでは「EPSG:6676」に変換します。
(1)プロジェクトのCRSを変更する
まずは、プロジェクト全体のCRSから変更します。プロジェクトのプロパティから[座標参照系]を開きます。そして[EPSG:6676]を選択します。
【メモ】
EPSG:6676は、平面直角座標の8系に該当します。沼津市は静岡県なので、これを使います。座標系に関する詳細は、「TOPIC 3|3D都市モデルデータの基本[4/4]|CityGMLの座標・高さとデータ変換」を参照してください。
(2)指定避難所レイヤのCRSを変更する
プロセシングツールから[ベクタレイヤ]―[ベクタレイヤを再投影]をダブルクリックして開きます。
ベクタレイヤを再投影のウィンドウが開いたら、次のように設定し、[実行]をクリックします。実行が終わったら[閉じる]をクリックして閉じてください。
変換すると、新しく「再投影したラスタファイル」というレイヤができるので、右クリックしてレイヤ名を変更しておきます。変更する名前は「hianjo-6676」としておきます。
・入力レイヤ
変換対象のレイヤです。「sitei_hinanjyo_ichiran」のレイヤを選択します。
・変換先CRS
変換先のCRSです。EPSG:6676を選択します。
21.5.3 _ 属性の最近傍結合をする
以上で下準備が整いました。「hinanjo-6676」と「Building」で属性の最近傍結合をすることで、それぞれの建築物から指定避難所までの距離を求めます。
【手順】それぞれの建築物から指定避難所までの距離を求める
[1]ジオメトリを修復する
面積を求めたときと同様に、最近傍結合も不正なジオメトリが含まれていると、正しく計算できません。そこでまずは、ジオメトリの修復操作から始めます。
プロセシングツールから[ジオメトリを修復]をダブルクリックして開きます。そして[入力レイヤ]として[Building]を選択して、[実行]をクリックします。実行が完了したら、[閉じる]をクリックして閉じます。
修復が完了すると、「出力レイヤ」という名前のレイヤができるので、右クリックして[レイヤの名前を変更]を選択し、「Building-fix」に変更しておきます。
[2]空間インデックスの作成
最近傍結合をするときは、あらかじめ空間インデックスを作成しておくと、処理速度が速くなります。
空間インデックスを作るには、レイヤのプロパティから[ソース]の[空間インデックスを作成]をクリックします。この操作を「hinanjo-6676」と「Building-fix」の2つのレイヤに対して設定しておきます。
[3]属性の最近傍結合をする
プロセシングツールの[ベクタ一般]の配下の[属性の最近傍結合]をダブルクリックして開きます。
属性の最近傍結合のウィンドウが開いたら、次のように選択し、[実行]をクリックします。実行が完了したら、[閉じる]をクリックしてウィンドウを閉じてください。
・入力レイヤ
入力のレイヤです。「Building-fix」を選択します。
・第2の入力レイヤ
もうひとつの入力レイヤです。「hinanjo-6676」を選択します。
・その他のオプション
デフォルトのままとします。
[4]結果を確認する
[出力レイヤ]というレイヤができるので、右クリックして属性テーブルを開いて内容を確認します。
するとテーブルに、distance、feature_x、feature_y、のような属性が追加されているのがわかります。これが最近傍結合の結果です。distanceが、最寄りの指定避難所までの距離(単位はメートル)です。
ここでは、情報を見るのみとしますが、シンポロジを設定して、「最寄りの指定避難所から一定距離以上離れた建築物は赤く表示する」というようなこともできます。
地方公共団体はほかにも、消防署や学校などの施設の場所をCSV形式で提供していますし、警察庁は警察署の場所をCSV形式で提供しています。これらのファイルも、ここで実施したのと同じようにすれば、最寄りの場所の直線距離を求めることができます。
最後に、この最近傍結果をもとに、それぞれの建物から最寄りの避難所までをラインで結んでみます。
【手順】建物から最寄りの避難所までをラインで結ぶ
[1]式によるジオメトリを開く
プロセシングツールボックスの[ベクタジオメトリ]―[式によるジオメトリ]をダブルクリックして開きます。
[2]ジオメトリの式を入力する
式によるジオメトリのウィンドウが開いたら、次のように選択し、[実行]をクリックします。
実行が完了したら、[閉じる]をクリックしてウィンドウを閉じてください(図21-59)。
・入力レイヤ
入力のレイヤです。これまでの操作で作成してきた「出力レイヤ」(属性の最近傍結合の出力レイヤ)を選択します。
・出力のジオメトリ型
出力されるレイヤのジオメトリ型です。直線で結びたいので、「ライン」を選択します。
・ジオメトリの式
このアルゴリズムで使用する式です。次の式を入力します。
make_line(centroid($geometry),make_point("nearest_x","nearest_y"))
この式は、建物の中心点(centroid($geometry))と最寄りの避難所(make_point(“nearest_x”,“nearest_y”))を結ぶラインを作る(make_line)ための式です。
・その他のオプション
デフォルトのままとします。
すると、マップ画面にラインレイヤが出力され、それぞれの建物から最寄りの避難所までのラインが作成されていることがわかります(図 21-60)。
21.5.4 _ 発展
このトピックでは指定避難所までの直線距離を求めましたが、道路データを利用して、「最短距離検索」という操作すると、指定避難所までのルートを検索することもできます。
詳しくは、下記のコンテンツを参照してください。
【道路データのダウンロード方法】
https://airkankyou.com/2023/01/04/qgisroaddata/
【GISオープン教材 - ネットワーク分析】
【文】
久納敏矢(株式会社MIERUNE)、大澤文孝