国土数値情報の河川データをダウンロードして SQL Server 2008 R2 にアップロードできなかった話や,国土数値情報の河川データの属性テーブルを編集してみたでは,国土数値情報のデータファイル自体に問題がありそうだと指摘した.
今回は QGIS で属性テーブルの構造を変更する方法を記述する.
誤った方法
最初に間違いの方法を述べておく.
レイヤを右クリックして「属性テーブルを開く」
レイヤを右クリックして「属性テーブルを開く」.

属性テーブルの列名を右クリックして「列の整理…」と進む.

ドラッグ・アンド・ドロップで列の順序を変更
ドラッグ・アンド・ドロップで列の順序を変更できるのだが,これはレイヤの元になったファイルのフィールドの順序を入れ替えているのではなく,テーブルの見た目の順序を変更しているだけである.
また,列名をダブルクリックしたり右クリックしたりしても,列名を編集することはできない.

正しい方法は「プロセシング」「ツールボックス」にある
「プロセシング」メニューから「ツールボックス」と進む.

「ベクタテーブル」「属性のリファクタリング」
「ベクタテーブル」の「属性のリファクタリング」と進む.ダブルクリックすると次のダイアログが開く.

「属性のリファクタリング」ダイアログ
「属性のリファクタリング」ダイアログが開く.「入力ラスタ」に目的とするレイヤ名が表示されていることを確認する.目的のレイヤでなければ,クリックして選択し直す.ちなみに,このメニュー名は「入力ベクタ」か「入力レイヤ」が正しい名称だと思う.

順序を入れ替えるには目的の列名をクリックして「選択属性を下へ」ボタンをクリックする.

列名をダブルクリックすると編集できるようになる.河川のコード体系は W05 で始まる 7 桁の 10 個の列名である.W05_001 からはじめて W05_010 までキーボードで入力する.

ログ
「実行」をクリックすると編集した内容がログに出力される.

リファクタリングの結果は「再構成レイヤ」
リファクタリングの結果は「再構成レイヤ」として表示される.これはメモリ上にのみ存在するレイヤであり,アプリケーションを終了すると失われるため,「エクスポート」してシェープファイルに保存する必要がある.

レイヤのプロパティ
レイヤのプロパティを確認すると,編集したとおりになっている.「_河川名」と「_WaterSyst」の列名は,別項で示すが,csv ファイルを結合したテーブルのフィールドである.列名が 10 文字で切れているのは シェープファイルの仕様である.

まとめ
QGIS においてレイヤの属性テーブルの構造を変更する方法について述べた.
プロセシングツールボックスのベクタテーブルから属性のリファクタリングを行うことで可能となる.
結果は再構成レイヤに出力される.