QGISで鉛直(深さ)方向の震源分布を作りたい！

#はじめに
QGIS3で深さ方向の震源分布って作れそうなのに意外と誰も作っていないのね・・・。
こんなやつ。
![コメント 2020-05-01 215339.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486481/31862e1f-7f2e-87ca-ae66-57682df49d4d.png)
プログラムで書こうと思っていたのだけれど、ちょっとしたことでつまずいてしまったため後回し。
とりあえず**グラフィカルモデラー**で作成します。
<font color="grey">とはいえ微妙な仕上がりというね。。。いつかきちんとプラグインに仕上げます</font>
###環境など
QGIS3 == 3.12.0

・使用プラグイン
　　Data Plotly == 3.6
　　(データプロットで使用しました)

・データ
　　今回も気象庁の[震源データベース検索](http://www.data.jma.go.jp/svd/eqdb/data/shindo/index.php)から。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486481/0b96fe43-0a39-2ff4-f39f-a1163057038e.png)
　　という形式で90程のデータを集めた。これをCSVファイルで書きだす
　　(今回はスクレイピングのプログラムを書いて適当な数の震源データを集めた。
　　　　　　　　　　　　　　　　　　　　　　　→整理してから公開します)
　　※欠損値は空白にした。IDがないデータでも何かしらの連番を振っておくと便利

[QGIS3その1](https://qiita.com/jam-goat/items/162819a52c9623fba744)も参考にしてください。

#グラフィカルモデラ―の作成
###方針
Lineジオメトリのレイヤは自力で作成
作成したレイヤを選択して水平方向にある程度幅を持たせて震源のPointジオメトリを抽出
(Lineのレイヤ・震源のレイヤ・水平方向の幅は変えられるようにしておく)
抽出した震源Pointを直線上での相対的な距離に直す
X軸を直線状での相対距離、Y軸を深さとしてグラフにする

下図で要約すると
オレンジの点が震源のPointだが、グラフ化するために赤の直線上に点を落として距離を考える。
![コメント 2020-05-01 170422.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486481/247b4bcf-06d0-de20-ae42-ac1b35d3aaff.png)


###作成
プロセシング＞グラフィカル・モデラ―をクリック
![コメント 2020-05-01 171000.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486481/d48e4154-8b06-6adb-a777-e93768e7d308.png)
すると以下のようなウィンドウが開く。
![コメント 2020-05-01 204941.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486481/0e771c36-f302-ead5-026d-ac48c55e66bf.png)
左下の「アルゴリズム」から使うものを選び右側にフローを作っていきます。
タブから「入力」を選ぶと
![コメント 2020-05-01 205325.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486481/5fc2e1ce-e5d1-d451-6b00-b534a8a8e822.png)
というタブにも切り替えができます。
これは、使用するアルゴリズムで入力が必要な時に使います。
今回だと、Lineのレイヤ・震源のレイヤ・水平幅の値が必要なので
それぞれ「ベクタレイヤ」・「ベクタレイヤ」・「数値」の入力に対応するので選択します。(ダブルクリックでもドラッグドロップでも可)
例えば数値だと選択するとこのようなウィンドウが開くのでそれぞれ必要に応じて指定します。
ここでの指定がモデルを実行したときの数値指定を限定します。
(例えばWGS84で作成していると幅の指定も(面倒なため)度で受け付けるようにしますが、その時に最大を1.0、最小を0.0としておくと入力ミスで計算が破綻したりすることを防げます。既定値はよく使いそうな値を入れておくと入力が省けて楽)
![コメント 2020-05-01 210018.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486481/62282e19-d438-dce2-5ad0-3af1efbab07e.png)
パラメータ名はモデル完成後実行したときの入力の際に使われる名前なので分かりやすくしておきましょう。
最終的にはこうなりますので、、、
![コメント 2020-05-01 210947.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486481/cb472cb2-6eb5-8114-fc77-c624b20fd143.png)
並べるとこのような形です。
![コメント 2020-05-01 211257.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486481/73264fe9-8305-7a21-91eb-c9f7c008fe6a.png)
次にプロセスを並べていきます。
まずは、「バッファ」でLineに水平方向の幅を持たせます。
![コメント 2020-05-01 211554.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486481/c71ab873-acf6-4489-d99f-cb508c25a9ed.png)
次にこのバッファ内の震央を抜き出します。
2プロセスで抜き出します。
1プロセス目はバッファ内の震央を選択。「場所による選択」です。
![コメント 2020-05-01 211824.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486481/6a14faf1-82a6-628c-e4ed-d8a25dca8293.png)
2プロセス目は選択した震央を抜き出してレイヤに保存。「選択した地物で別レイヤ」です。
![コメント 2020-05-01 212134.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486481/bbd0baee-c3b3-2bed-54d8-7c9cafc311c7.png)
親子関係で1プロセス目と結んでおきます。

「ジオメトリをスナップ」でLine上に地物をスナップさせてから
「フィールド計算機」で相対距離をだしてフィールドにdistanceという名前で付加させています。
![コメント 2020-05-01 212433.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486481/5ba3427b-998e-5c99-1cf7-0c572809f494.png)
使い方は普通のフィールド計算機と同じです（私も別に投稿しているので詳細は省略）。

**圧倒的な欠点はここです。計算式内のレイヤ名をここで決めてしまわなければならないです。**
**プログラムを書いているときも別の個所でレイヤの取り扱いで詰まったので悲しい。**
**誰か教えてください！**

とりあえず一時スクラッチレイヤをデフォルトで作成するとこの名前になるので妥協しました・・・。

最終的にこのようになれば完成です。
![コメント 2020-05-01 213430.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486481/a092272b-c579-ea98-1415-39014948e64b.png)

モデルの名前を入力して保存します。

###使い方
まず、レイヤ＞レイヤを作成＞新しい一時スクラッチレイヤ　をクリック

ジオメトリタイプはラインストリングで作成をします。
するとレイヤに「新しいスクラッチレイヤ」が増えます。

レイヤの編集で直線を適当に作成し、保存します。idは1です。
<font color="grey">(*本当はここがダサくてダサくて、、、投稿を悩むレベルでしたが誰か教えてくれると期待しての公開です*)</font>


ツールボックス内にモデルの項目が増えているのでそこからクリックします。

実行すると直線状にスナップされたこのようなレイヤが増えます。
![コメント 2020-05-01 214458.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486481/d54e8f17-e09a-71ed-3014-7068c9851f43.png)

あとはプラグイン「Data Plotly」で出力されたデータを読み込むだけです。
「Data Plotry」は様々なデータのプロットに使える便利なプラグインなので詳細な情報も後日アップしておこうと思います。マグニチュードに合わせて色と大きさを変化させています。
![コメント 2020-05-01 215339.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486481/31862e1f-7f2e-87ca-ae66-57682df49d4d.png)
X軸が角度で出ていますが、座標変換の関数がQGISにあるのでそれを使うか、111.・・・を掛けるかしてしまうとｋｍに直せます。私は角度ばかり使ってきたのでこのように出力しました。

10クリック以内でこんな断面図を出すのを目標にしていたから、まぁ、ね、妥協。

------
追記
QGIS3.26以降のバージョンでは「標高断面図」が追加されています
便利なあれこれをまた追っていきたいところです、、

----------------
ほんと、誰か分かりやすいのを作ってください。教えてください。
プラグインとかも資料が不足していてなかなか進まない。。。

何かご意見等ございましたら
twitterまでお気軽にご連絡ください[@ohcelot](https://twitter.com/ohcelot)
2020/05/01新規作成
2025/04/09追記