国土数値情報の河川データをダウンロードして SQL Server 2008 R2 にアップロードできなかった話や,国土数値情報の河川データの属性テーブルを編集してみたでは,国土数値情報のデータファイル自体に問題がありそうだと指摘した.
今回は QGIS で属性テーブルの構造を変更する方法を記述する.
誤った方法
最初に間違いの方法を述べておく.
レイヤを右クリックして「属性テーブルを開く」
レイヤを右クリックして「属性テーブルを開く」.
![レイヤを右クリックして「属性テーブルを開く」](https://www.muscle-hypertrophy.com/wp-content/uploads/2021/02/01-1.png)
属性テーブルの列名を右クリックして「列の整理…」と進む.
![属性テーブルの列名を右クリックして「列の整理...」](https://www.muscle-hypertrophy.com/wp-content/uploads/2021/02/00-1.png)
ドラッグ・アンド・ドロップで列の順序を変更
ドラッグ・アンド・ドロップで列の順序を変更できるのだが,これはレイヤの元になったファイルのフィールドの順序を入れ替えているのではなく,テーブルの見た目の順序を変更しているだけである.
また,列名をダブルクリックしたり右クリックしたりしても,列名を編集することはできない.
![ドラッグ・アンド・ドロップで列の順序を変更](https://www.muscle-hypertrophy.com/wp-content/uploads/2021/02/02-1.png)
正しい方法は「プロセシング」「ツールボックス」にある
「プロセシング」メニューから「ツールボックス」と進む.
![「プロセシング」メニューから「ツールボックス」](https://www.muscle-hypertrophy.com/wp-content/uploads/2021/02/03-1.png)
「ベクタテーブル」「属性のリファクタリング」
「ベクタテーブル」の「属性のリファクタリング」と進む.ダブルクリックすると次のダイアログが開く.
![「ベクタテーブル」「属性のリファクタリング」](https://www.muscle-hypertrophy.com/wp-content/uploads/2021/02/04-1.png)
「属性のリファクタリング」ダイアログ
「属性のリファクタリング」ダイアログが開く.「入力ラスタ」に目的とするレイヤ名が表示されていることを確認する.目的のレイヤでなければ,クリックして選択し直す.ちなみに,このメニュー名は「入力ベクタ」か「入力レイヤ」が正しい名称だと思う.
![「属性のリファクタリング」ダイアログ](https://www.muscle-hypertrophy.com/wp-content/uploads/2021/02/05-1.png)
順序を入れ替えるには目的の列名をクリックして「選択属性を下へ」ボタンをクリックする.
![順序を入れ替えるには目的の列名をクリックして「選択属性を下へ」ボタンをクリック](https://www.muscle-hypertrophy.com/wp-content/uploads/2021/02/06-1.png)
列名をダブルクリックすると編集できるようになる.河川のコード体系は W05 で始まる 7 桁の 10 個の列名である.W05_001 からはじめて W05_010 までキーボードで入力する.
![列名を編集するにはダブルクリック](https://www.muscle-hypertrophy.com/wp-content/uploads/2021/02/07-1.png)
ログ
「実行」をクリックすると編集した内容がログに出力される.
![「実行」をクリックすると編集した内容がログに出力される](https://www.muscle-hypertrophy.com/wp-content/uploads/2021/02/08-1.png)
リファクタリングの結果は「再構成レイヤ」
リファクタリングの結果は「再構成レイヤ」として表示される.これはメモリ上にのみ存在するレイヤであり,アプリケーションを終了すると失われるため,「エクスポート」してシェープファイルに保存する必要がある.
![リファクタリングの結果は「再構成レイヤ」](https://www.muscle-hypertrophy.com/wp-content/uploads/2021/02/09-1.png)
レイヤのプロパティ
レイヤのプロパティを確認すると,編集したとおりになっている.「_河川名」と「_WaterSyst」の列名は,別項で示すが,csv ファイルを結合したテーブルのフィールドである.列名が 10 文字で切れているのは シェープファイルの仕様である.
![レイヤのプロパティ](https://www.muscle-hypertrophy.com/wp-content/uploads/2021/02/10-1.png)
まとめ
QGIS においてレイヤの属性テーブルの構造を変更する方法について述べた.
プロセシングツールボックスのベクタテーブルから属性のリファクタリングを行うことで可能となる.
結果は再構成レイヤに出力される.