QGIS3-その3「レイヤーの新規作成とフィールド計算機・ラスタ計算機の利用」

#はじめに

この回では

1.ベクタレイヤの新規作成
2.フィールド計算機・属性テーブルの活用
3.ラスタ計算機の活用

についてまとめる

###バージョン
QGIS3 == 3.10.0
バージョンを上げましたがそれほど大きく変わっていないので
前回までの分は更新していません。

#1.ベクタレイヤの新規作成
###1-1.
例えば調査予定地に印を打ちたい時や登山経路をざっくり打ちたい時、ゾーン分類をしたい時また、様々な処理の前提や過程としてベクタレイヤを新規で作りたい時はよくある。
どんなことができるのかを示します。

四国の剣山山頂付近で山頂と駅にポイントを打ち、間の距離を測ってみます。
![コメント 2020-01-10 105525.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486481/71333a3c-e97f-cd2e-8141-96e8b274da78.png)
###1-2.メソッド
![コメント 2020-01-10 080210.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486481/899a163f-c745-b433-1e8c-add87f8822c9.png)
レイヤ＞レイヤの作成＞新規シェープファイルレイヤ
で以下の画面が立ち上がる。
![コメント 2020-01-10 080830.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486481/83cc7899-6ab2-5a70-9b4c-522a0a20d9e8.png)

ファイル名を指定し、好きなようにフィールドを作成できる(後からでも作成できる＋ここではidだけ作成しておけばOK)
”ジオメトリタイプ”で"ポイント"・"マルチポイント"・"ライン"・"ポリゴン"を指定できます。

>補足："ポイント"と"マルチポイント"について
>結論は、"ポイント"を使っておけば良いんじゃない・・？です。"マルチポイント"はジオメトリに複数の点を含められますが、QGIS上だとレイヤ分けや属性などで分けてしまってよいのではないかと思ってしまいます。一部の処理は"ポイント"にしか対応していないので、まぁ外への書き出しとかをしないなら"ポイント"をとりあえず使っています。

Z値・M値はZが高さの値・Mは任意の座標的なものです。(Mは例えば識別番号みたいなのを割り振っても良いし、時間を割り振っても良いです。X・Y・Zは座標系によって変化するものですがMは変化しないものです。私はM値を使っていません。)入れなくても問題ないですが、ここでは以下の章の都合、Z値を入れます。

**いざプロット**
まずは、レイヤを編集モードに切り替える。
![コメント 2020-01-10 110858.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486481/d4a562fb-b8c9-ef30-0e1b-a30548f9ebb6.png)
編集モードだとジオメトリの編集ができます(点を打ったり、線を引いたり etc.)。


![コメント 2020-01-10 115537.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486481/5c269b44-b971-96d8-65a8-a98d313c6abc.png)
実際に鉛筆マークの横の"ポイント地物を追加する"ボタンをクリックすると、ポインターの形が変わり、任意の場所をクリックで地物の追加ができます。
"ポイント地物を追加する"の右側の工具なボタンは"頂点ツール"でジオメトリをクリックすると移動・その状態でDelを押せば削除・もう一度クリックするとその場所に指定ができます。(実際に動かすと思っていた挙動と違う？。)
ジオメトリをクリックで決めると、地物属性のウィンドウが開きますので必要に応じて埋めてください。


**注意点**は編集モードで編集したジオメトリ情報は保存後だと元に戻せません！オリジナルのファイルは別にとっておきましょう。特にQGIS上でレイヤーのコピーをしただけだと、参照元を変えられないので注意が必要です(一回は経験するはず・・・。)。**オリジナルは別途保管！！**

基本的に"ライン"・"ポリゴン"も"ポイント"と同じように新規作成・地物情報の付加ができます。
以上でベクタレイヤの追加は完了

#2.フィールド計算機・属性テーブルの活用
フィールド計算機では、QGIS上の式を使って様々な計算ができる。属性テーブルは地物属性をエクセル感覚で編集できる。
**1.**から引き続いて実際に距離をフィールド計算機から測ってみます。
まずはQGIS上でZ値を設定してみます。(DEMラスターがあればそこから関数で標高値を引っ張ってこれるので便利です)
><<参考>>
キーボード：`ctl`+`alt`+`T`でツールボックスを開きます(ツールバーの歯車マーク)
ベクタジオメトリ＞ドレープ(ラスタ値をZ値に代入)を選択(検索窓で調べると早い)
![コメント 2020-01-11 002052.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486481/cec1a4fa-dfce-6924-88a0-1784445e46b4.png)
"ファイルに保存"を選択し、ファイル名を指定。
実行をクリックすると新たなレイヤが追加されます。

それではまず、属性テーブルを開きます。
属性テーブルウィンドウ内の新規フィールドをクリック
![コメント 2020-01-11 020430.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486481/9e9d4d01-3cfd-bda7-cce0-0076b723bf7a.png)
フィールドを追加のウィンドウが開く。
今回はZ値をここから読み込むようにします。
![コメント 2020-01-11 021028.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486481/29f6526d-d490-fa66-fce5-14dc65777b13.png)
等高線から読み取った値を入力しました。
属性テーブルはこんな感じです。

|id|Name|Height|
|---|-----|--------|
|1|nishizima|1710.0|
|2|mountain|1955.0|

Z値を今設定した'Height'に対応させます。
ツールボックス＞ベクタジオメトリ＞Z値の設定
をクリック。
![コメント 2020-01-11 120036.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486481/6911ee9a-b5bf-00ad-2de4-ed797494032e.png)
上のように"Z値に設定する値"の窓の右側、"データによって定義された上書き"をクリックし、'Height'フィールドをZ値に指定するようにします。
出力先を適宜ファイル指定し、実行をするとZ値が付加された新たなレイヤができます。

####新たにできたレイヤで今度は2点距離をフィールド計算機で測ってみます。
まずはフィールド計算機を立ち上げます。
![コメント 2020-01-11 120733.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486481/3fca4dba-601b-5445-fde3-597fa266f78c.png)
ウインドウが立ち上がります。
![コメント 2020-01-11 120846.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486481/cdcdcf4a-5094-59d8-9ef8-7a12c41d6108.png)
フィールド計算機では、新たにフィールドをつくること・既存のフィールドを作ることができます。また、新たなフィールドを仮想的に作ることもできます。
左下の四角の部分に関数や式を書いていきます。
ごり押しな式を書いてみました。三次元的に直線の長さが出せる。。。はず。
![コメント 2020-01-11 131651.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486481/5c146bc8-1a74-d9aa-16bd-96ed986e4e86.png)
>長さや面積などを出すときはレイヤーのCRSをUTM系にすれば予期せぬ結果になりにくい気がします。

よく使っている関数や便利な関数はいずれ自分のメモを整理して公開しようと思います。

#3.ラスタ計算機の活用
ラスタにも計算機があります。ラスタデータ同士を足し合わせたり、差分をとったりできます。JODCの水深データを誤って正の値でとってきてしまった時もここで正負を反対にしたりできます。
![コメント 2020-01-11 132757.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486481/3a076d16-7311-8cb5-4e45-0723078aac42.png)
"Refelence layer(s)"と"Output CRS"は入れた方が良いです。自分の意識付けと、動作の安定につながる？気がします。
私の環境では、レイヤの計算順で安定して計算できたりできなかったりするので、いろいろ試すとよいと思います。範囲を指定するなどのオプションを指定するだけで安定することもある。
機能を知っておくと使うこともあるかもしれません。


------------------------

以上です。
研究の進捗が悪くなれば、こちらが更新されます。

質問・ご意見・ご指摘等いただければ幸いです。
twitterまでご連絡ください[@ohcelot](https://twitter.com/ohcelot)


その1：：https://qiita.com/jam-goat/items/162819a52c9623fba744
その2：：https://qiita.com/jam-goat/items/0facee234a7ec86676e6

その4：：まだ


2020/01/11　新規作成