2019年1月11日金曜日

QGISで植生図 その1

QGISで植生図その1(基本データの作成まで)

※※ QGISのバージョン3に対応させました ※※  → こちら

その2(整形など)はこちら
その3(GPSとの連携)はこちら

(植生図の作成手順)
国土地理院の地図をベースに下図(ベース図面)を配置する。
現場の図面(手書きの植生図等)をその上に配置する。
境界線をひたすら引く。少しはみ出すように。
ラベル(凡例)をポイントデータで入力する。
境界線のデータ(ラインデータ)をポリゴン化する。線で囲われている部分が一気にポリゴンになる。
ポリゴンにラベル(凡例)のポイントデータを属性結合する。
これで大元のshapeファイルはほぼ完成。

(重要種位置図)
引き出し線にも対応 → 詳しくはその2(整形など)を参照


QGISのバージョン

安定版のQGIS2.18を使用しています。
最新バージョンでも同様にできるようです(本人未確認)が、2.18でも何の不満もないので、そのまま使用しています。


参考文献

QGISのバージョン2.18に対応したマニュアル「業務で使う林業QGIS 徹底使いこなしガイド」を大いに参考にしています。これはなかなかいいです。お薦めします。
http://www.ringyou.or.jp/publish/detail_1409.html

QGISの最新バージョン(Ver.3.6)に対応した「業務で使うQGIS Ver.3 完全使いこなしガイド」でも、いいかと思いますが、私は持っていません。


QGIS2.18のインストール

(インストール元)
https://www.qgis.org/ja/site/forusers/download.html

32bit版なら64bitマシンでも使えるそうです。スタンドアロンタイプ。


プラグインのインストール

「プラグイン」→以下の4つのプラグインをインストール
「TileLayerPlugin」
「Spline」
「QuickMapServices」
「Join multiple lines」


豆知識

ファイル名はローマ字半角、短め、最初は数字じゃない方がいいらしい。→ファイル名も項目名も日本語で大丈夫そうです。


国土地理院の地図を表示できるようにする

(準備と設定)
国土地理院のファイルをダウンロード
林業QGISの78ページ参照

(表示)
「web」→「タイルレイヤプラグイン」→「タイルレイヤを追加する」→標準地図を選択して「追加」
「プロジェクトの設定」の設定でオンザフライをONにしてから地図を表示しようとすると、なぜかエラーが起こり、フリーズする、または、何も表示されないことがある。


プロジェクトの設定

プロジェクトのプロパティ→オンザフライ→ON
オンザフライをONにしておけば、異なる空間参照システムでも、QGISがうまく重ねてくれる。
プロジェクトの空間参照システムを設定
GPSで使っているWGS84(EPSG4326)などの地理座標系では、上下がつぶれたように表示される。面積や距離も正確に測定できない。
投影座標系の平面直角JDG2000(日本は19に分けられている)がいい。
関東なら→9(EPSG2451)
どこを利用するかは国土地理院のWebサイトを参照。
http://www.gsi.go.jp/LAW/heimencho.html


作業用ベース図の書き出しと配置

ベース図は位置をずらすといちいちWEBに読みに行くので、必要なところだけ、作業用ベース図としてjpgで書き出して、ラスタレイヤとして表示させた方が時間の節約になる。
プロジェクトの空間参照システムを設定してから書き出さないと、うまく表示できない。
位置情報付きのイメージファイルとして出力するためには
「プロジェクト」→「画像として保存」
自動的に同じファイル名でワールドファイル(位置情報ファイル:jgw)も作成される。
「レイヤ」→「レイヤの追加」→「ラスタレイヤの追加」を選び、書き出したファイルを選択する。
「CRSが定義されていません」というメッセージが表示され、何も表示されない時は、そのレイヤで右クリックし、「プロパティ」→「一般情報」→「空間参照システム」をプロジェクトと同じ測地系に変更する。


 現場図面の配置

林業QGISの401ページ参照

(ラスタファイルの準備)
現場図面のラスタファイルが大きすぎるとジオリファレンサーでまともに表示されないみたい。
上を北にしておいた方がいい。
合わせる点をあらかじめ決めておいて、マークしておくといい。

(操作)
ラスタ→ジオリファレンサー→ジオリファレンサー
GDALジオリファレンサーというプラグインがインストールされていないとメニューに出てこない。
ジオリファレンサーが起動したら、「変換の設定」で変換タイプを設定。
  ・シンプレートスプライン:移動だけ。合わせる点は1点でいい。
  ・線形:移動と拡大縮小だけ。新しい画像ファイルは作らない。2点でいい。
  ・ヘルマート:移動と拡大縮小と回転。ゆがめない。2点でいい
  ・多項式:さらに画像をゆがめる。3点以上。
 変換タイプは普通ヘルマートでいいが、多項式1なら間違いないか。
「ラスタを開く」をクリック。
変換時の座標参照系はプロジェクトと同じでないとだめかも。
「ポイントの追加」で、元と先で合わせる点を設定。あらかじめ両方とも拡大しておくといい。
「変換の設定」で、出力ファイルのファイル名を設定し、完了時にQGISにロードするにチェック。
「ジオリファレンスの開始」をクリック。
表示されれば成功。


区分線の入力

(範囲線を作る)
まずは範囲をポリゴンで作成して、ポリゴンをライン化するといい。
「プロセッシング」→「ツールボックス」→「QGISジオアルゴリズム」→「ベクタジオメトリツール」→「ポリゴンをラインへ」

(区分線を入力する)
「編集モード切替」をクリックして編集モードにする。
「地物の追加」をクリックする。
左クリックで点を書いていって、最後に右クリック。
1つ戻りたい時は「バックスペース」キーを押す。
書いている途中で画面をスクロールしたい時は「スペース」キーを押しながら、ドラッグする。
拡大縮小したい時はマウスのホイールを回す。
入力が終了したら「レイヤ編集内容の保存」をクリック。
「編集モード切替」をクリックして編集モードを終了する。

(区分線の微調整)
「ノードツール」をクリックすると、地物の屈曲点の移動ができるようになる。
「高度なデジタイジングツールバー」を表示させると、地物の細かな編集ができる。


ラベルの入力

ポイントで、記録していく。
あらかじめ入力するフィールドを作成する。
入力した値は、ラベルとして表示するように設定する。
入力する略号はローマ字が早くて便利(お好きにどうぞ)。
ポイントがダブっても大丈夫。

→このデータは最終的にいらなくなるが、引き出し線を引きたい時はこれを使うことになる。これを使えば便利。

※引き出し線について
ポリゴンからも引き出し線が引けるようですが、操作法がよくわからないので、とりあえずですが、引き出し線の基点にラベルのポイントを使います。ですので、後ほどラベル作成に引き出し線を使いたいのであれば、ラベル入力時のポイント位置も、ある程度気を遣う必要があると思います。


 ポリゴン化

ラインをポリゴン化する。
「プロセッシング」→「ツールボックス」→「QGISジオアルゴリズム」→「ベクタジオメトリツール」→「ポリゴン化」をダブルクリック
入力レイヤを選んで、「Run」

ある時、「'NoneType' object has no attribute 'isMultipart' See log for more details」というエラーメッセージに遭遇し、ポリゴン化できず。

ググって以下の記事にたどり着いた。
https://gis.stackexchange.com/questions/238637/polygonizer-error-nonetype-object-has-no-attribute-ismultipart-see-log-for

ここに出ている「Nullの長さがある」という部分をたよりに修正し、無事ポリゴン化に成功。

(修正作業手順)
属性テーブルを開く。
編集モードにする(えんぴつアイコンをクリック)。
フィールド計算機ボタンをクリック。
出力フィールド名を入力。
ジオメトリの中の「$length」をクリック。
詳しくは林業QGISの286ページを参照。
長さが「Null」の行を全部消して、保存。


属性の結合

ポリゴンにポイント情報を結合する。
「プロセッシング」→「ツールボックス」→「QGISジオアルゴリズム」→「ベクタ一般ツール」→「属性の結合」をダブルクリック、または、
「ベクタ」→「データマネジメントツール」→「属性の結合」をクリック
「対象ベクタレイヤ」にポリゴン、「ベクタレイヤを結合する」にポイントの指定。
「ジオメトリの述語」は「含む」
「属性値の概要」は普通「交差する全ての地物の属性を総合して利用する」にするが、エラーが起こる場合は「最初に位置する地物の属性をとる」にする。エラーの原因は未解決。
「Run」をクリック。


確認と修正

①ラベル抜け
ラベルがなかったものは抜けている。ラベルを追加する。
②区分線不良
色塗りしたものとラベルのポイントデータを表示させて、同一ポリゴン内に違う凡例が2つ以上ないか確認。線が切りきれてないことが多い。同一凡例が2つ以上あっても気にしなくていい。
③同一凡例が隣り合わせ
色塗りしたものを表示させて、同一凡例が隣り合っていないか確認。区分線を短くして、同一凡例にする。
④微小ポリゴン
微小ポリゴンが形成されている時は、線を修正する。

修正が終わったら、ポリゴン化から繰り返す。


属性テーブルの編集

(データが大量の場合)
属性テーブルを表示させ、全選択してctrl+C
エクセルのから表にペースト。
桐に変換
桐で編集
桐からCSV形式で書き出し(フィールド名もつける)
(""で囲まれていない。ただのカンマ区切り)
エクセルで編集して、エクセルからCSVに書き出しても同じ。
QGISに戻る
「レイヤ」→「レイヤの追加」→「デリミテッドテキストレイヤの追加」
エンコードを「system」にすれば文字化けしないはず。
CSVの表がレイヤパネルに追加される
(CSVからの読み込みだと全てのデータが文字列になるそうです)→うそです。数字は数値として認識されました。
対象のレイヤで→「プロパティ」→「結合」→「+」
画面どおり
リレーション(結合関係)が記憶される。なので、新たに入力しても結合される。結合元の表を消したり、修正すると、結合先でも消えたり、修正される。
照合項目のフィールドタイプが数値と文字列で違っていても、なんと結合されました。
最終的にはシェイプに書き出す。書き出し先ではリレーション(結合関係)はなくなり、結合した表のデータが埋め込まれる。

(データが少ない場合)
属性テーブルを表示させ、編集モードにする。
新たなフィールドを作成する。
現地凡例で並び替える。
ひたすら手入力する。
意外と早くて簡単。これで十分かも。


shapeに保存

最終的にできたものを、「名前をつけて保存する」で、shapeに書き出して保存する。
「保存エラー」が起こる時は、多分書き出しフォルダがおかしい
書き出したら、テンポラリーのレイヤーは消す。



図面の整形・印刷関係はこちら
GPSとのデータ連係はこちら
重要種位置図の作り方は後ほど


2019/1/11




1 件のコメント:

  1. とても参考になりました。ありがとうございました。
    「QGISで植生図」これはなかなかいいです。お薦めします。

    返信削除