Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
QGISハンズオン「QGISで地域防災!」
Search
kou_kita
October 06, 2019
Technology
0
620
QGISハンズオン「QGISで地域防災!」
FOSS4G KANSAI 2019のハンズオン「QGISで地域防災!」の資料です。
kou_kita
October 06, 2019
Tweet
Share
More Decks by kou_kita
See All by kou_kita
QFieldで地図を使う
kou_kita
0
160
QGIS・オープンデータを活用したマップ製作
kou_kita
0
89
QGISによる分析
kou_kita
0
71
登記所備付地図について
kou_kita
0
77
QGISのファイルについて 2024年8月改訂版
kou_kita
0
24
GISとはなにか? 2024年8月改訂版
kou_kita
0
19
GISのデータの種類 2024年8月改訂版
kou_kita
0
19
北海道の航空レーザー測量とオープンデータ
kou_kita
0
290
オープンデータとGISデータの活用
kou_kita
0
250
Other Decks in Technology
See All in Technology
Python(PYNQ)がテーマのAMD主催のFPGAコンテストに参加してきた
iotengineer22
0
470
社内で最大の技術的負債のリファクタリングに取り組んだお話し
kidooonn
1
550
[FOSS4G 2024 Japan LT] LLMを使ってGISデータ解析を自動化したい!
nssv
1
210
Amazon Personalizeのレコメンドシステム構築、実際何するの?〜大体10分で具体的なイメージをつかむ〜
kniino
1
100
透過型SMTPプロキシによる送信メールの可観測性向上: Update Edition / Improved observability of outgoing emails with transparent smtp proxy: Update edition
linyows
2
210
Taming you application's environments
salaboy
0
180
Can We Measure Developer Productivity?
ewolff
1
150
VideoMamba: State Space Model for Efficient Video Understanding
chou500
0
190
Why does continuous profiling matter to developers? #appdevelopercon
salaboy
0
190
誰も全体を知らない ~ ロールの垣根を超えて引き上げる開発生産性 / Boosting Development Productivity Across Roles
kakehashi
1
220
iOSチームとAndroidチームでブランチ運用が違ったので整理してます
sansantech
PRO
0
130
スクラム成熟度セルフチェックツールを作って得た学びとその活用法
coincheck_recruit
1
140
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
50
7.2k
GitHub's CSS Performance
jonrohan
1030
460k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
KATA
mclloyd
29
14k
What's new in Ruby 2.0
geeforr
343
31k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
27
840
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
44
2.2k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Typedesign – Prime Four
hannesfritz
40
2.4k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
370
Product Roadmaps are Hard
iamctodd
PRO
49
11k
Transcript
QGISで地域防災 オープンデータとプロセッシングツールで 津波避難の準備をしよう 1
QGISバージョン3から、多くの機能が「プロセッ シングツール」に統合されました。 様々な分析をプロセッシングツールで行うことができま す。 今回は、プロセッシングツールを使って津波避難につい て、分析・可視化をしてみます。 また、複数のプロセッシングツールを自動で実行する 「グラフィカルモデラー」も利用してみます。 2
<このハンズオンの想定> みなさんは、福祉施設の管理を行う業務をしています。 もし南海トラフ地震が発生し、津波避難をしなければいけなくなったとき のために、避難訓練を行います。 まずは、利用者が津波到達までに逃げられる範囲は1000mだということがわ かりました。 各施設から1000mの範囲に、津波発生時の避難場所がどこにあるのか確認し ます。 もし避難所がなかったときはどうしたらいいでしょう? 行政に要請する?新たな避難場所を独自に考える?
そういうことを検討するために、オープンデータとQGISを使って、 まずは現状を地図で確認してみましょう。 3
<注意事項> このハンズオンで利用しているデータは、処理の時間等も考慮し、兵庫県 の東部の一部(西宮市、尼崎市、芦屋市)のデータになっています。 元のデータが基本的にオープンデータです。 自分で入手することも可能ですので、ご自分の住む街が必要な場合は、各 自入手してください。 また、避難の範囲(このハンズオンでは1000m)は、あくまでも例です。 実際の津波到達時間、避難距離はわかりませんので、実務で行う場合は、 実際の値をご自分で調査してください。 4
津波浸水域内の福祉施設から 一定距離内の避難場所を探す 5
6
準備 7
材料 • 福祉施設(国土数値情報) • 避難場所(G空間情報センター) • 津波浸水域(兵庫県オープンデータ) • 道路ライン(OpenstreetMap) 8
ハンズオンフォルダ「津波避難」の 「津波避難_兵庫県一部.gpkg」 にレイヤが保存されています。 9
QGISを起動してください 10
メニューに「プロセッシング」が無い方は、 教えて下さい。 11
<背景図をレイヤに追加します> フォルダ「津波避難」の「OSM_兵庫県.jpg」をQGISに ドラッグ&ドロップ 12
<背景図をレイヤに追加します> 座標参照系を選択します。 「WGS84(EPSG:4326)」を選択します。 13
<ベクタレイヤを追加します> フォルダ「津波避難」の「津波避難_兵庫県一部.gpkg」を QGISにドラッグ&ドロップ 14
<ベクタレイヤを追加します> 「全て選択」ボタンをクリックして、「OK」ボタンをクリッ クします。 1 2 15
<ベクタレイヤを追加します> 地図に必要なレイヤが表示されます。 16
<ベクタレイヤを追加します> レイヤの順番を確認しましょう。 17
<プロジェクトを保存します> ボタンをクリックしてプロジェクトを保存します。 フォルダ「津波避難」に保存しましょう。 ファイル名はわかりやすく「津波避難場所」としましょう。 18
ここまでで失敗している方や、途中で強制終了してしまった 人などは、フォルダ「津波避難」にある 「バックアップ_津波避難場所.qgz」ですべてのレイヤを表 示した状態の地図を表示することができます。 19
分析 20
・・・これからの作業の説明 1. 津波浸水範囲に入っている福祉施設のみを抽出 2. 津波浸水域外の避難場所を抽出 3. 2で抽出したデータから「津波」が対象の避難場所を抽出 4. 1で抽出した福祉施設から道路に沿った避難可能距離の範 囲を計算
5. 4の範囲内にある避難場所をカウント 21
<津波範囲内の福祉施設を抽出> 津波浸水想定範囲の中にある福祉施設を抽出します。 22
<津波範囲内の福祉施設を抽出> メニュー「プロセッシング」→「ツールボックス」を選択し ます。 23
<津波範囲内の福祉施設を抽出> ツールボックスの「ベクタ選択」→「場所による抽出」を 選択します。 24
<津波範囲内の福祉施設を抽出> 抽出するレイヤに「福祉施設」、空間的関係は「交わる」、 比較対象レイヤは「津波浸水範囲」を選択し「実行」。 福祉施設ポイント 津波浸水範囲 25
<津波範囲内の福祉施設を抽出> 津波浸水範囲のポリゴンに不正があるので、 処理に失敗します。一度閉じます。 26
<津波範囲内の福祉施設を抽出> この赤い点の部分が不正なジオメトリです。 (プロセッシングツール「有効性チェック」で確認できます。) 27
<津波浸水範囲の修正をします> ジオメトリに不正のあった津波浸水範囲を修正して、分析に使え るようにします。 28
<津波浸水範囲の修正をします> 検索に「修正」と入力し、「ジオメトリの修正」を 選択します。 29
<津波浸水範囲の修正をします> 入力レイヤは「津波浸水範囲」を選択し「実行」ボタンをク リック。 津波浸水範囲 30
<津波浸水範囲の修正をします> 新しい一時レイヤが作成されます。 31
<津波浸水範囲の修正をします> 「F2」キーを押して、名前をわかりやすく修正します。 「修正津波範囲」と入力しましょう。 32
<津波浸水範囲の修正をします> 一応ファイルに保存しておきます。 レイヤ横の「 」をクリックして、ファイルに保存します。 フォルダ「津波避難」の 「津波避難_兵庫県一部.gpkg」を指定 「修正津波範囲」と入力 33
<津波浸水範囲の修正をします> 紛らわしいので、もともとの津波浸水範囲は削除します。 1 2 レイヤを選択してから、クリック 34
<再度、津波範囲内の福祉施設を抽出> 修正した津波浸水範囲を利用して、再度津波浸水範囲内の福祉施 設を抽出します。 35
ツールボックスの「ベクタ選択」→「場所による抽出」を 選択します。 <再度、津波範囲内の福祉施設を抽出> 36
<再度、津波範囲内の福祉施設を抽出> 抽出するレイヤに「福祉施設」、空間的関係は「交わる」、 比較対象レイヤは「修正津波範囲」を選択し「実行」。 福祉施設ポイント 修正津波範囲 37
<再度、津波範囲内の福祉施設を抽出> 新しくレイヤが作成されるので、「F2」キーでレイヤ名を変 更します。「抽出福祉施設」としましょう。 38
<津波浸水範囲の修正をします> 一応ファイルに保存しておきます。 レイヤ横の「 」をクリックして、ファイルに保存します。 フォルダ「津波避難」の 「津波避難_兵庫県一部.gpkg」を指定 「抽出福祉施設」と入力 39
<津波浸水範囲の修正をします> 紛らわしいので、もともとの福祉施設は削除します。 1 2 レイヤを選択してから、クリック 40
<津波範囲外の避難場所を抽出> 津波浸水範囲の外の避難場所を抽出します。 41
ツールボックスの「ベクタ選択」→「場所による抽出」を 選択します。 <津波範囲外の避難場所を抽出> 42
<津波範囲外の避難場所を抽出> 抽出するレイヤに「避難場所」、空間的関係は「離れた」、 比較対象レイヤは「修正津波範囲」を選択し「実行」。 避難場所ポイント 修正津波範囲 43
<津波範囲外の避難場所を抽出> 新しいレイヤが作成されます。今回は次の処理にも使用する ため、レイヤはそのままにします。 44
<対象が「津波」の避難場所を抽出> 避難場所の対象が「津波」に対応している避難場所のみを抽出し ます。 45
ツールボックスの「ベクタ選択」→「属性による抽出」を 選択します。 <対象が「津波」の避難場所を抽出> 46
属性データの「津波」フィールドに「◎」が入力されている データを抽出します。 <対象が「津波」の避難場所を抽出> 47
入力レイヤに「出力レイヤ」、属性選択に「津波」、 演算子は「=」、値に「◎」を入力し、「実行」します。 <対象が「津波」の避難場所を抽出> 出力レイヤ 津波 = ◎ 48
新しくレイヤが作成されるので、「F2」キーでレイヤ名を変 更します。「抽出避難場所」としましょう。 <対象が「津波」の避難場所を抽出> 49
一応ファイルに保存しておきます。 レイヤ横の「 」をクリックして、ファイルに保存します。 フォルダ「津波避難」の 「津波避難_兵庫県一部.gpkg」を指定 「抽出避難施設」と入力 <対象が「津波」の避難場所を抽出> 50
紛らわしいので、もともとの避難場所と一時レイヤは 削除します。 1 2 レイヤを選択してから、クリック <対象が「津波」の避難場所を抽出> 51
<福祉施設から一定の距離を算出> 福祉施設から、避難できる一定距離を道路に沿って 算出します。今回は福祉施設から1kmの範囲を算出します。 52
ツールボックスの「ネットワーク解析」→「サービスエリア (始点レイヤ)」を選択します。 <福祉施設から一定の距離を算出> 53
ネットワークを表すレイヤに「OSM道路」、始点を含むレイヤ に「抽出福祉施設」、計算するパスの種類は「最短」、求め たい旅行コストに「1000」を入力し、「実行」します。 <福祉施設から一定の距離を算出> OSM道路 抽出福祉施設 最短 1000 54
1000mの範囲がラインレイヤで作成されます。 <福祉施設から一定の距離を算出> 55
施設ごとの1000mの範囲をポリゴンにします。 プロセッシングツールの検索に「凸」(とつ)と入力して、 「ベクタジオメトリ」の「凸包」を選択します。 <福祉施設から一定の距離を算出> 1 2 56
入力レイヤに「サービスエリアの出力」を選択し、「実行」 をクリックします。 <福祉施設から一定の距離を算出> サービスエリアの出力 57
新しいレイヤで福祉施設から1000m範囲のポリゴンができま す。 <福祉施設から一定の距離を算出> 58
新しくレイヤが作成されるので、「F2」キーでレイヤ名を変 更します。「1000m範囲」としましょう。 <福祉施設から一定の距離を算出> 59
<1000m範囲内の避難場所をカウント> 福祉施設から、1000mの範囲の中に避難場所があるか確認するた めに、範囲内のポイントをカウントします。 60
プロセッシングツールの検索に「点の数」と入力して、 「ベクタ解析」の「ポリゴン内の点の数」を選択します。 <1000m範囲内の避難場所をカウント> 1 2 61
ポリゴンレイヤに「1000m範囲」、点レイヤに「抽出避難場 所」を選択し、「実行」します。 <1000m範囲内の避難場所をカウント> 1000m範囲 抽出避難場所 62
新しくレイヤが作成されるので、「F2」キーでレイヤ名を変 更します。「避難場所カウント」としましょう。 <1000m範囲内の避難場所をカウント> 63
一応ファイルに保存しておきます。 レイヤ横の「 」をクリックして、ファイルに保存します。 フォルダ「津波避難」の 「津波避難_兵庫県一部.gpkg」を指定 「避難場所カウント」と入力 <1000m範囲内の避難場所をカウント> 64
属性テーブルを表示して、避難所の数を確認します。 フィールド名をクリックすると、並び替えることができます。 <1000m範囲内の避難場所をカウント> 65
今回利用した プロセッシングツール 66
67 <ジオメトリの修正> ジオメトリ(レイヤの地物) にGIS上のエラーが有る場合に、 プロセッシングツールの処理が できずエラーになります。 その場合このコマンドを実行 すると、修正した新しいレイヤ を作成します。 ジオメトリエラーは主にポリ
ゴンレイヤで発生し、同じ点に 複数のノードがあったり、図形 が交差していたりする場合が該 当します。
68 <場所による抽出> 2つのレイヤを比較して、重 なっている、重なっていないな どの条件に合致する地物を抽出 して新しいレイヤを作成しま す。 同じような機能で、地物を選 択するだけの「場所による選 択」があります。
69 <属性による抽出> レイヤの属性値で地物を抽出 して、新しいレイヤを作成しま す。 同じような機能で、地物を選 択するだけの「属性による選 択」があります。
70 <サービスエリア> ある地点からラインに沿って 指定した距離の範囲を新しいレ イヤで作成します。 移動時間を指定することもで きます。
71 <凸包> 選択したレイヤの地物ごとの 凸包(凹んだ部分を省略した範 囲)を作成します。 地物ごとではなく同じ属性を 持つグループで凸方を作成した いときには、「最小境界ジオメ トリ」を使用します。
72 <ポリゴン内の点の数> ポリゴンレイヤに重なるポイ ントレイヤの、ポリゴンの範囲 内のポイントの数をカウント し、新しいポリゴンレイヤを作 成します。そのレイヤの属性 テータにポイントの数を記録し ます。
グラフィカルモデラーを使って プロセッシング処理を自動化 73
74 グラフィカルモデラーとは? グラフィカルモデラーは、プロセッシングツールの複数の コマンド処理を一度に自動でできるようにする機能です。 データ分析を行うために、たくさんの処理を行う必要がある場合に、 同じようなデータ(例えば市町村ごととか)に対して同じ処理を 何度も行うのは大変です。 そこで、グラフィカルモデラーを使うことで、 一度で処理を完了することができます。
・・・今回自動化する処理 1. 津波浸水範囲に入っている福祉施設のみを抽出 2. 津波浸水域外の避難場所を抽出 3. 2で抽出したデータから「津波」が対象の避難場所を抽出 4. 1で抽出した福祉施設から道路に沿った避難可能距離の範 囲を計算
5. 4の範囲内にある避難場所をカウント 75
1. 「ジオメトリの修正」で津波浸水範囲を修正 2. 「場所による抽出」で修正津波浸水範囲の中の福祉施設を 抽出 3. 「サービスエリア(始点レイヤ)」で福祉施設から1000m のラインを作成 4. 「凸包」で1000mラインの範囲を作成
76 プロセッシングツールの順序
77
78 実際に実行してみますので まずはご覧ください
<グラフィカルモデラーの画面> 79
80
81 名前:モデルの名前 グループ:モデルをプロジェクトに登録するときの グループ名
82 これをクリックすると、プロセッシン グツールボックスに追加される。 (このプロジェクトでのみ有効)
83 レイヤや数値など、 プロセッシングツールを 実行するためのアイテムを モデラーに追加します。
84
85 プロセッシングツールの コマンドを選択します。
86
<モデルを作ってみよう> 87
88 メニューの「プロセッシング」→「グラフィカルモデラー」 を選択します。 <モデルを作ってみよう>
89 「モデル名」を入力します。今回は「避難範囲算出」と入力 しましょう。 <モデルを作ってみよう>
<アイテムを追加> 90 レイヤアイテムとして「津波浸水範囲レイヤ」、「福祉施設レイヤ」、 「道路レイヤ」、 数値入力用アイテムで「避難距離」をモデルに追加します。
91 津波浸水範囲レイヤをアイテムに追加します。 「入力」タブをクリックして、「ベクタレイヤ」を ダブルクリックします。 <アイテムを追加> 2 1
92 パラメーター名に「津波浸水範囲」と入力し、 ジオメトリタイプを「ポリゴン」にします。 「OK」ボタンをクリックします。 <アイテムを追加>
93 モデルにアイテムが追加されます。 <アイテムを追加>
94 福祉施設レイヤをアイテムに追加します。 ふたたび「ベクタレイヤ」をダブルクリックします。 <アイテムを追加>
95 パラメーター名に「福祉施設」と入力し、 ジオメトリタイプを「ポイント」にします。 「OK」ボタンをクリックします。 <アイテムを追加>
96 モデルにアイテムが追加されます。 <アイテムを追加>
97 道路レイヤをアイテムに追加します。 ふたたび「ベクタレイヤ」をダブルクリックします。 <アイテムを追加>
98 パラメーター名に「道路」と入力し、 ジオメトリタイプを「ライン」にします。 「OK」ボタンをクリックします。 <アイテムを追加>
99 モデルにアイテムが追加されます。 <アイテムを追加>
100 数値を入力する「避難距離」をアイテムに追加します。 「数値」をダブルクリックします。 <アイテムを追加>
101 パラメーター名に「避難距離」と入力し、 数値型を「integer」(整数値)にします。その他はそのまま でいいです。「OK」ボタンをクリックします。 <アイテムを追加>
102 モデルにアイテムが追加されます。 <アイテムを追加>
<画面からはみ出したら> 103
104 モデルが画面からはみ出したら、 ボタンをクリックする と画面の中に収まります。(もしくは画面を広げます) <画面からはみ出したら>
105 モデルを個別にドラッグで動かすこともできます。 <画面からはみ出したら>
<「ジオメトリの修正」の追加> 106 津波浸水範囲レイヤに不正なジオメトリがあるので、 「ジオメトリの修正」を行って修復します。 処理結果は、次の処理に使用しますが、レイヤとして出力はしません。
107 「アルゴリズム」タブをクリックして、検索に「修正」と入 力し、「ジオメトリの修正」をダブルクリックします。 <「ジオメトリの修正」の追加> 2 1 3
108 Descriptionはそのままでもいいですが、あとあとわかりやす いように「津波範囲 ジオメトリ修正」とします。 入力レイヤに「津波浸水範囲」アイテムを選択します。 <「ジオメトリの修正」の追加> わかりやすく変更
109 「OK」ボタンをクリックすると、モデルにコマンドが追加さ れます。 <「ジオメトリの修正」の追加>
<「場所による抽出」の追加> 110 津波浸水範囲の中にある、福祉施設を抽出します。 処理結果は、うまくできているか確認するため、レイヤに出力します。
111 検索に「場所による」と入力し、「場所による抽出」をダブ ルクリックします。 <「場所による抽出」の追加> 2 1
112 Descriptionはそのままでもいいですが、あとあとわかりやす いように「福祉施設 場所による抽出」とします。 入力レイヤに「福祉施設」アイテムを選択します。 <「場所による抽出」の追加> わかりやすく変更
113 空間的関係から抽出方法を選択します。 をクリックして、「交わる」を選択して、「OK」ボタン をクリックします。 <「場所による抽出」の追加> 2 1
114 比較対象のある地物のあるレイヤでジオメトリ修正した津波 浸水範囲「'出力レイヤ' from algorithm '津波範囲 ジオメ トリの修正'」を選択します。 <「場所による抽出」の追加> 修正処理した津波浸水範囲
115 レイヤを地図に出力する場合は、出力レイヤにレイヤ名を入 力します。ここでは「出力福祉施設」と入力します。 <「場所による抽出」の追加> 出力するレイヤ名
116 「OK」ボタンをクリックすると、モデルにコマンドが追加さ れます。 <「ジオメトリの修正」の追加>
117 うまくできているか試してみましょう。 ボタンをクリックすると、モデルを実行できます。 <「ジオメトリの修正」の追加>
118 「津波浸水範囲」「福祉施設」「道路」を選択します。 「避難距離」はまだ使用しないので、入力しません。 「実行」ボタンをクリックすると、処理が開始されます。 <「ジオメトリの修正」の追加>
119 正しく処理ができているか確認します。 ※元の福祉施設レイヤを非表示にして、新しいレイヤを一番上に表示します。 <「ジオメトリの修正」の追加>
120 きちんと作成されていることが確認されたら、 作成した福祉施設の一時レイヤは削除してください。 Point!
<「サービスエリア」の追加> 121 抽出した福祉施設から、道路に沿って指定した距離の新しいラインを作成 します。 処理結果は、うまくできているか確認するため、レイヤに出力します。
122 「ネットワーク解析」→「サービスエリア(始点レイヤ)」 をダブルクリックします。 <「サービスエリア」の追加>
123 Descriptionはそのままでもいいですが、あとあとわかりやす いように「避難距離 サービスエリア(始点レイヤ)」とし ます。 ネットワークを表すベクタレイヤに「道路」アイテムを選択 します。 わかりやすく変更 <「サービスエリア」の追加>
124 開始点を含むベクタレイヤに 「'出力レイヤ' from algorithm '福祉施設 場所による抽出 '」を選択します。(前の処理で出力した一時レイヤ) <「サービスエリア」の追加>
125 求めたい旅行コストで、数値のアイテムを選択します。 をクリックして、「モデル入力」を選択します。 そして、「避難距離」アイテムを選択します。 <「サービスエリア」の追加>
126 レイヤに計算したラインを出力するので、 サービスエリアの出力(線)に「避難ライン」と入力します。 <「サービスエリア」の追加>
127 「OK」ボタンをクリックすると、モデルにコマンドが追加さ れます。 <「サービスエリア」の追加>
128 うまくできているか試してみましょう。 ボタンをクリックすると、モデルを実行できます。 <「サービスエリア」の追加>
129 「津波浸水範囲」「福祉施設」「道路」を選択します。 「避難距離」は「1000」と入力します。(1kmの距離を計算) 「実行」ボタンをクリックすると、処理が開始されます。 <「サービスエリア」の追加>
130 正しく処理ができているか確認します。 ※避難ラインの色を見やすく変更しています。 <「サービスエリア」の追加>
<モデルの保存> 131 作成したモデルを保存します。 ファイルにも保存できますし、プロジェクトに保存することもできます。
132 ファイルに保存する場合は、ツールバーの ボタンをク リックします。 <モデルの保存>
133 プロジェクトに保存する場合は、ツールバーの ボタンを クリックします。 <モデルの保存>
134 プロジェクトに保存した場合は、プロセッシングツールボッ クスから利用することができます。 <モデルの保存>
<時間があれば・・・> 135
136 時間があれば次の作業もモデルに追加してみましょう。 1. 「凸包」で避難ラインの範囲を作図します。 2. 「避難場所」をレイヤに追加します。 3. 「場所による抽出」で津波範囲の外にある避難場所を抽 出します。 4.
「ポリゴン内の点の数」で1.で作成した範囲内の3.で抽 出した避難場所をカウントします。
137
138