21|QGISを用いた災害リスク情報の可視化と分析[1/2]|土地利用現況ごとに面積計算をするこのトピックでは、QGISを使って、PLATEAUの3D都市モデルを分析する方法を示します。土地利用現況ごとの面積を求めたり、浸水想定区域や土砂災害警戒区域の可視化、そして、建築物から避難所までの直線距離を求めたりできます。ShareX・Facebook・LINEPLATEAUには、建築物や起伏などの形状のデータ以外にも、さまざまな地理空間データが収録されており、GISソフトウェアを使うことで、さまざまな分析ができます。このトピックでは、オープンソースのGISであるQGISを使って、PLATEAUの3D都市モデルを分析する方法を示します。土地利用現況ごとの面積を求めたり、浸水想定区域や土砂災害警戒区域の可視化、そして、建築物から避難所までの直線距離を求めたりする方法を解説します。土地利用現況ごとに面積計算する方法を説明します。アーカイブ動画)でも制作方法をハンズオン形式で紹介しています。Pluginを使って3D都市モデルを可視化する」の応用編です。Plugin」を追加し、PLATEAUのCityGML形式ファイルを読み込むまでを説明しました。このトピックでは、読み込んだデータのうち、とくに属性データに着目し、土地利用現況ごとの面積計算や災害リスクがある地域の可視化、建築物から避難所までの直線距離の算出方法を説明します。主な見どころは、以下のとおりです。土地利用現況ごとの面積を求めます。PLATEAUの3D都市モデルには、こうしたデータが「土地利用モデル」として格納されています。これを使えば、土地利用現況を地図上で色分けして可視化できるのはもちろん、QGISの解析機能を使って、そのデータ数や面積を求めることができます。おける土砂災害防止対策の推進に関する法律」に基づき、浸水想定区域や土砂災害警戒区域を定めています。都市によっては、これらの属性が、「災害リスク情報」としてPLATEAUの3D都市モデルに格納されています。Pluginで建築物のCityGML形式ファイルを読み込むと、それらが別のレイヤとして取り込まれます。これらをQGISで分析することで、災害リスクごとに色分けして可視化できます。地方公共団体によっては、避難所の名前と場所(経緯度)をCSV形式のデータとして独自に提供しているところがあります。したCSVデータは、QGISで読み込んでレイヤとして扱うことができます。QGISには、2つのレイヤ間で、最も近いもの同士を直線で結んで対応付ける「最近傍結合」という機能があります。この機能を使って、「地方公共団体が提供する指定避難所のレイヤ上の地物(=指定避難所)」と「PLATEAUの3D都市モデルから取り込んだ建築物レイヤの地物(=それぞれの建築物)」とで最短のものを対応付け、それぞれの建築物から、最寄りの避難所の直線距離を求めることができます。Pluginを使って3D都市モデルを可視化する」と同じです。次の環境を想定します。バージョン0.0.2例として扱う地域は、静岡県沼津市です。CityGML形式のデータをダウンロードし、展開しておいてください。静岡県沼津市では、第1.0版のCityGMLと、第2.0版のCityGMLの2種類を提供しています。Pluginは、第1.0版には対応していません。データを読み込むことはできますが、災害リスク情報などが欠落してしまいます)。沼津市の3D都市モデルには2020年度版と2021年度版のデータがありますが、このトピックで用いるのは2021年度版です。沼津市のCityGML形式データをダウンロードする以下では、このCityGML形式のデータを用いて、1土地利用現況ごとの面積計算、2災害リスクの可視化、3避難所までの直線距離の算出、の3つの例を見ていきますが、それぞれ、次の要件を満たす都市であれば、他の都市であっても、同じように操作できます。土地利用モデル(luse)が提供されていること。津波や河川氾濫などの災害リスクが建築物モデルに付与されていること。該当都市の地方公共団体などが、避難所の名前や位置を示すCSV形式データなどを配布していること。全国の避難所は、国土数値情報から「避難施設データ」としてダウンロードできます(ただしこのデータはシェープファイル形式のため、QGIS上で反映させる方法が本稿の方法と少し異なります)。データには避難所の位置は含まれていません。どの都市に、どのようなデータが含まれているのかについては、「整備都市の属性リスト」を参照してください。ごとに面積計算をする」から進めます。土地利用現況を土地利用モデルとして提供しています。LandUseという地物型で表現したものです。土地利用モデルの応用スキーマ」に記載されています。土地利用モデル(LOD1)の取得イメージ」にありますが、それぞれの土地に「田」「畑」などの区分が、luse:classという属性に設定されています。QGISにおいて、この属性でグループ化して面積を集計する操作をすることで、それぞれの総面積がわかります。luse:class属性に区分が設定されている(3D都市モデル標準製品仕様書の表4-53より引用)QGIS上で面積を求めるときは、ひとつ重要なポイントがあります。それは経緯度の座標系である地理座標系ではなく、メートル単位の座標系である投影座標系に変換するという点です。PLATEAUの3D都市モデルは「EPSG:6697」もしくは「EPSG:6698」(高さがない場合)を用いています。面積を求める操作をするときは、これを平面直角座標系に変換します。平面直角座標系は、地域によって原点が異なる19種類の座標系があり、8系に該当する静岡県沼津市では「EPSG:6676」を用います。3|3D都市モデルデータの基本[4/4]|CityGMLの座標・高さとデータ変換」を参照してください。CityGML形式ファイルをまとめてインポートするまずは、土地利用現況のCityGML形式ファイルをまとめてインポートします。土地利用現況のファイルは、udxフォルダの下のluseフォルダに格納されています。ここでは、沼津市内全域の、それぞれの土地利用現況ごとの面積を求めたいと思います。そこで、luseフォルダに含まれているすべてのCityGML形式ファイルをインポートします。Pluginの「バッチプロセスで実行」という方法を使います。Pluginを起動する[プロセシング]メニューから[ツールボックス]を開きます。Pluginを起動します。Pluginを起動する[2]バッチプロセス画面に切り替える1つのファイルを読み込むダイアログボックスが表示されるので、[バッチプロセスで実行]をクリックして、複数ファイルを選択できる画面に切り替えます。CityGMLファイル]の下の[オートフィル]のドロップダウンをクリックして、[ファイル選択]をクリックします。複数ファイルを選択できる画面が表示されたら、udxフォルダの配下のluseフォルダのファイルすべてを選択し、[開く]をクリックします。luseフォルダのファイルすべてを選択する[4]オプションを設定するすると、選択したファイルが1行ごとに設定されます。これらに対して、オプションなどを変更します。ひとつずつ設定してもよいですが、一番上の行の値だけを設定し、残りは全部同じ値で埋める操作をすると効率的です。上の行のオプションを次のように設定します。おいて用いる座標系)のことです。後述する操作で面積を求めるため、ここでは平面直角座標系に変換しておきます。VIII]変換先CRSに該当の項目がないときは、その右のボタンをクリックして、「6676」を検索して見つかったものを選択します。上の行の値を設定したら、[オートフィル]のメニューから[フィルダウン]を選択します。すると、それより下の行が、同じ値に設定されます。フィルダウンする[5]実行する[実行]ボタンをクリックします。すると、すべてのファイルが読み込まれます。[閉じる]をクリックして、ウィンドウを閉じます。【メモ】なお、オートフィルから複数ファイルを追加すると2行目が空欄となります。2)」と表示されますが、プラグインの実行上、とくに問題ありません。CityGMLファイル]が設定されていないため、アラートが出ているだけです。土地利用現況ごとに着色するインポートすると、図21-12のようにLandUseというレイヤができます。単色表示なので、まずは、土地利用現況ごとに色分けしてみましょう。属性に応じてスタイリングする」を参照)。LandUseレイヤが追加された【手順】区分別に着色する[1]レイヤのプロパティを開く[LandUse]レイヤを右クリックして[プロパティ]を選択し、レイヤのプロパティを開きます。レイヤのプロパティを開く[2]カテゴリ値による定義に変更する[シンポロジ]タブをクリックして開き、ドロップダウンリストで[カテゴリ値による定義(categorized)]に変更します。土地利用現況は「class」という属性に設定されているため、[値(value)]で、これを選び、[分類]をクリックします。すると分類一覧が表示されるので、[OK]をクリックします。以上の設定をすると、土地利用現況ごとに色分けされます。それぞれのデータ数をカウントしてみます。プロセシングツールの「属性の基本統計量」から操作します。土地利用現況におけるそれぞれのデータ数をカウントしていますが、この操作は、さまざまな用途に応用できます。数をカウントする[1]属性の基本統計量を開く[プロセシングツールボックス]から、[ベクタ解析]の下にある[属性の基本統計量(レイヤ出力)]をダブルクリックして開きます。プロセシングツールボックスでは、検索ボックスに項目名を入力すると絞り込まれるので、「属性の」など一部を入力して探すのがよいでしょう。【メモ】プロセシングツールボックスが表示されていないときは、[プロセシング]メニューの[ツールボックス]をクリックしてください。属性の基本統計量を開く[2]数をカウントする属性の基本統計量のウィンドウが開いたら、次のように入力し、[実行]をクリックします。実行が終わったら、[閉じる]をクリックしてウィンドウを閉じてください。・入力ベクタレイヤ対象のレイヤです。土地利用モデルを取り込んでいる[LandUse]レイヤを選択します。和を求める属性を指定します。空にしておくと、総和ではなく、数がカウントされるので、ここでは空のままにしておきます。・カテゴリ分けする属性グループ化する属性を指定します。classごとに分類したいので、classを選択します。[・・・]をクリックすると、属性を選択できます。結果の保存先を選択します。何も指定しなければ、新しく一時スクラッチレイヤが作られ、そこに保存されるので、ここではそのままにしておきます。・出力レイヤ結果の保存先を選択します。何も指定しなければ、新しく一時スクラッチレイヤが作られ、そこに保存されるので、ここではそのままにしておきます。実行が完了すると、[カテゴリ別の統計量]という新しいレイヤが作成されます。右クリックして属性テーブルを開くと、図21-19のように、カウント数が表示されます。面積を求めるこの仕組みを応用して、土地利用状況別の面積を求めます。QGISでは、「ジオメトリ属性の追加」という操作をすると、地物に対して、面積や周長を追加できます。これらを計算しておき、いま説明した「基本統計量」の機能を用いて、その総和を求めます。面積や周長を求める際、QGISで不正なジオメトリ(幾何形状)として判定される地物が含まれていると正しく計算できません。面積を求める[1][ジオメトリを修復]を開くまずは、ジオメトリの修復から始めます。[プロセシングツールボックス]から、[ベクタジオメトリ]の下にある[ジオメトリを修復]をダブルクリックして開きます。[ジオメトリを修復]を開く[2]修復方法と出力レイヤを選択するジオメトリを修復ウィンドウが表示されたら、次の項目を選択し、[実行]をクリックして実行します。・入力レイヤ対象のレイヤです。デフォルトの[構造]のままにしておきます。・出力レイヤ結果の保存先を選択します。何も指定しなければ、新しく一時スクラッチレイヤが作られ、そこに保存されるので、ここではそのままにしておきます。ジオメトリを修復[3]レイヤ名を変更する「出力レイヤ」という名前のレイヤとして出力されます。以降の操作をわかりやすくするため、名前を変更しておきます。右クリックして[レイヤの名前を変更]を選択し、「LandUse-fix」に変更します。レイヤ名を変更する[4]ジオメトリ属性を追加するジオメトリを修復したLandUse-fixレイヤに対して、面積と周長を求めていきます。プロセシングツールボックスから[ベクタジオメトリ]の配下の[ジオメトリ属性を追加]をダブルクリックして開きます。[ジオメトリ属性を追加]を開く次のように設定し、[実行]をクリックします。実行が終わったら[閉じる]をクリックして、ウィンドウを閉じます。・入力レイヤ対象のレイヤです。いま生成したジオメトリ修復済みの[LandUse-fix]レイヤを選択します。・計算に利用する座標参照系(CRS)計算のときに使う座標参照系を選択します。ここでは[レイヤのCRS]を選択し、レイヤに設定されているものと同じものを使います。【メモ】これまでの操作では、[LandUse-fix]レイヤには、8系の平面直角座標系である「EPSG:6676]が設定されているため、メートル単位で計算されます。面積や周長は、投影座標系でないと正しく計算できないので注意してください。・出力レイヤ結果の保存先を選択します。何も指定しなければ、新しく一時スクラッチレイヤが作られ、そこに保存されるので、そうしておきます。ジオメトリ属性を追加[5]属性テーブルを確認する[出力レイヤ]という新しいレイヤに、結果が出力されます。右クリックして、[属性テーブル]を開きます。出力レイヤの属性テーブルを開くすると「area」と「perimeter」が追加されることがわかります。前者が「面積」、後者が「周長」です。面積と周長が追加された[6]総和を求めるあとは「用途別の数を取得する」で実行した操作と同様に、「属性の基本統計量」を使って、このareaの総和を、classでグループ化したものを求めます。プロセシングツールボックスから[ベクタ解析]の下にある[属性の基本統計量(レイヤ出力)]を開き、次のように入力して[実行]をクリックします。実行が終わったら、[閉じる]をクリックしてウィンドウを閉じます。・入力ベクタレイヤ対象のレイヤです。面積を示す属性であるareaが追加された[出力レイヤ]を選択します。・集計する属性areaの総計を求めたいので、[area]を選択します。・カテゴリ分けする属性グループ化する属性を指定します。classごとに分類したいので、classを選択します。[・・・]をクリックすると、属性を選択できます。・出力レイヤ結果の保存先を選択します。何も指定しなければ、新しく一時スクラッチレイヤが作られ、そこに保存されるので、ここではそのままにしておきます。areaをclassでグループ化した総計を求める[7]結果を確認するもうひとつ別の「カテゴリ別の統計量」のレイヤが作られます。右クリックして[属性テーブルを開く]を選択し、属性テーブルを確認すると、area属性の集計結果が表示されます。合計は「sum」の項目で、これが面積の総和です。