eyecatch

属性テーブルの列の追加と削除〜効率的な方法と注意点〜

投稿日: 最終更新日:
この記事はQGIS 3.40を使用しています。

この記事でわかること


  • QGISの属性テーブルに列を追加・削除する方法
  • フィールド計算機を用いた動的なデータの追加方法
  • 列のデータ型設定とその注意点

こんな人におすすめ


  • QGISでデータの属性情報を整理したい人
  • 列の追加や削除を効率よく行いたい人
  • 属性テーブルのデータ型設定に注意が必要な作業を行う人

はじめに

QGISで扱う地物では、地物に関連する情報を属性テーブルに記録することができますが、作業の途中で属性テーブルの列(フィールド)を増やしたり減らしたりしたい場合があるかもしれません。

この記事では、属性テーブルの列の追加・削除の方法、および、注意点について説明します。

属性テーブルに列を追加する

属性テーブルに列を追加する手順を説明していきます。

QGISでレイヤパネルで列を追加したいレイヤを右クリックし、[属性テーブルを開く]を選択します。

[属性テーブルを開く]を選択
[属性テーブルを開く]を選択

属性テーブルが表示されました。

対象レイヤの属性テーブル
対象レイヤの属性テーブル

では、例として今回使用しているデータに、日本語の国名を格納するために「NAME_JP」という列を追加していきます。

列を追加するためには、編集モードに変更する必要があります。まず、属性テーブルの左上にある[編集モードを切り替え]ボタンを押して編集モードにします。

編集モードを切り替え
編集モードを切り替え

編集モードに切り替わったら、グレーアウトされていてクリックできなかったボタンが押せるようになるので、[新規フィールド] ボタンを押します。

[新規フィールド] ボタンを押す
[新規フィールド] ボタンを押す

すると、[フィールドを追加]という画面が表示されます。

[フィールドを追加] のダイアログ
[フィールドを追加] のダイアログ

[フィールドを追加] ダイアログの項目名と説明は以下の通りです。

項目名

説明

名前

追加する列の名前を定義します。

追加する列のデータ型を定義します。以下の型から選択できます。

  • 整数(32ビット): integer
  • 整数(64ビット): integer64
  • 小数点付き数値(real): double
  • テキスト(string): string
  • 日付(Date): date

GeoPackage形式のファイルを使用している場合、以下の型も選択可能です。

  • JSON(string):string
  • 日付時刻(DateTime):datetime
  • バイナリオブジェクト(BLOB):blob
  • ブール値(boolean):boolean

長さ

列に格納する値の長さを設定します。

  • 整数の場合: 桁数
  • 小数点付き数値(real)の場合: 数値全体の桁数
  • テキスト(string)の場合: 文字数

精度

型で「小数点付き数値(real)」の指定時に表示されます。小数点部の有効桁数を定義します。

長さに10を指定し、精度に3を指定した場合、7桁が整数部、3桁が小数点部の有効桁数となります。

今回は、「NAME_JP」という名称の列に、日本語の国名を入力したいので、以下のように設定します。

  1. 名前:「NAME_JP」
  2. 型:「テキスト(string)」
  3. 長さ:「20」
[フィールドを追加] ダイアログの設定
[フィールドを追加] ダイアログの設定

設定が完了したら、[OK]ボタンを押すと、属性テーブルに列が追加されます。なお、属性テーブルの追加時の値は空(NULL)となっています。

属性が追加された
属性が追加された

属性テーブルが編集モードになっていると、追加した列に値を入力することができます。そのためには、編集したいセルを選択し、値を入力しましょう。

属性テーブルで直接セルに値を入力
属性テーブルで直接セルに値を入力

入力が完了したら、[編集モードを切り替え]アイコンを押して編集モードを終了すると、変更の保存の確認を求められます。[保存] ボタンクリックすると、編集した属性情報が保存されます。

編集を終了画面
編集を終了画面

フィールド計算機で列を追加する

上記では、[新規フィールド]ボタンから列を追加して、値を入力する手順を紹介しました。別の方法として、「フィールド計算機」を使用して列を追加し、エクセルの関数のような式をもとに列全体に自動で値を入力ですることができます。たとえば、人口と面積の値を使用して、人口密度の列を追加し、同時に計算といったことが可能です。

フィールド計算機を使用するには、属性テーブルの右上にある[フィールド計算機を開く]ボタンをクリックします。

[フィールド計算機を開く]を押す
[フィールド計算機を開く]を押す

「フィールド計算機」が表示されます。

フィールド計算機の画面は、以下のような構成になっています。

  1. 列の設定
  2. 式の入力
「フィールド計算機」画面
「フィールド計算機」画面

ここでは、既存の「POP_EST」列(各国の人口を表す属性)を使用して、人口密度を計算してみます。以下のように項目を設定します。

  1. 「新規フィールドを作成」をチェック
  2. 出力する属性(フィールド)の名前:「density」
  3. フィールド型:「小数点付き数値(real)」
  4. フィールド長:「10」、精度:「3」
  5. 式:「"POP_EST" / ($area / 1000000)」

$areaは地物のジオメトリの面積を平方メートル単位で計算する関数です。1000000で割ることで、1㎢あたりの人口密度を計算するようにしています。

[フィールド計算機]の設定
[フィールド計算機]の設定

[OK]ボタンを押すと、属性テーブルに「density」列が追加され、人口密度が自動的に計算されていることがわかります。

人口密度が計算された
人口密度が計算された

編集が完了したら、上記と同様の手順で、レイヤを保存しましょう。

このように、フィールド計算機では、新しい列を追加や既存の列の値を計算・更新したりするために使用することができ、属性情報の処理や分析に欠かせない機能です。

属性テーブルから列を削除する

次に、属性テーブルから列を削除する手順を説明していきます。

上記と同様にレイヤを編集モードにして、[フィールド削除]のボタンを押します。

[フィールド削除]のボタンを押す
[フィールド削除]のボタンを押す

「属性を削除」という画面が表示されます。

ここから削除したい列を選択し、[OK]ボタンをクリックします。

「属性を削除」ダイアログ
「属性を削除」ダイアログ

すると、属性テーブルから指定した列が削除されます。

指定した列が削除された
指定した列が削除された

編集モードを終了し、保存すると属性情報が保存されます。

列の追加・削除の際の注意点

属性テーブルに列を追加したり、削除する際、以下の点に注意が必要です。

削除した列を元に戻すことはできない

属性テーブルから列を削除した後に編集を保存してしまうと、元の状態に戻すことができません。保存されたファイルから読み込みをおこなったレイヤの属性テーブルの場合、列を削除した途端、ファイルにも反映されます。誤って削除してしまった場合は、編集を保存せずに編集モードを終了することで元の状態に戻すことができます。

このため、列の追加・削除を試行錯誤する場合はファイルのバックアップを行ってから作業を行うようにしてください。

データ型を間違えると型が異なるデータが格納できない

列を追加した際、格納するデータの型を指定することができます。このとき、整数型を設定すると、その列には文字列が格納ができなくなります

また、整数型に小数を含む値を格納した場合、小数部が切り捨てられて整数部だけ格納されます。整数と小数どちらも列に格納したい場合は、「実数型(real)」を指定してください。

人口密度の値で小数部が切り捨てられている
人口密度の値で小数部が切り捨てられている

データ型が文字列の場合、数値を入力することはできますが、その値は「文字」として扱われます。属性テーブルでは、文字列は左寄せで表示され、数値は右寄せで表示されるため、データが文字列として認識されていることが一目でわかります。

「densitytxt」列では値が左寄せ表示され、人口密度が文字列として保存されている
「densitytxt」列では値が左寄せ表示され、人口密度が文字列として保存されている

文字列型として入力された数値については、フィールド計算機での数値計算や、シンボロジにおける「連続値による定義」など定義で、数値としての処理ができなくなってしまいます。数値データを使用した処理が必要な場合は、整数型や実数型の列を使用するようにしましょう。

シンボロジにおける「連続値による定義」では数値型の列のみが対応している
シンボロジにおける「連続値による定義」では数値型の列のみが対応している

列長の設定には注意

属性テーブルの列長は、最終的に保存するデータソースのデータフォーマット仕様に依存します。

例えば文字列の場合、QGISの属性テーブルでは列長を1000と指定できます。ただ、そのレイヤがシェープファイルの場合、シェープファイルの仕様により、入力した文字数は255文字に切り捨てられます。(シェープファイルでは、属性名の長さ(文字数)に制限があります。英数字は10文字まで、日本語は文字コードによって3〜5文字程度までしか使えないことがあります。)

シェープファイルの属性名は10文字までに制限されている
シェープファイルの属性名は10文字までに制限されている

一時レイヤの属性を操作した場合、保存忘れに注意

地物の加工等を行って生成された一時レイヤの属性テーブルも編集することが可能です。

ただ、一時レイヤ自体が作業しているPCのメモリ上に存在しているだけで、QGISを終了したときレイヤ情報と属性テーブル情報は失われます

これを防ぐにはQGISを終了する前にレイヤをエクスポートするなどファイルに保存を行ってください。

レイヤのエクスポートについて、より詳しい情報はこの記事をご覧ください。

おわりに

QGISの属性テーブルの列を追加・削除する方法、および、注意点について紹介しました。列を追加するには、フィールド計算機を用いたり、テーブル結合を使って追加したり、ベクタの空間演算を行うことで追加することもできます。

この記事を書いた人
QGIS LAB編集部
QGIS LAB編集部

QGIS LABは、オープンソースのGISソフトウェア「QGIS」に関する総合情報メディアです。「位置から、価値へ。」をコンセプトに、位置情報で世界を拓くための知識と技術をお届けします。

関連する記事