デジタイズで新しいデータを追加する場合、その地物の属性を入力するダイアログが表示されます。ただし、このダイアログボックスは既定ではあまり見た目がよくありません。これは特に大規模なデータセットを作成する場合や他の人にデジタイズを手伝って貰うときに既定のフォームではわかりにくい場合に、ユーザビリティ上の問題を引き起こす可能性があります。
幸いにも、QGISではレイヤーに独自のカスタムダイアログを作成できます。このレッスンではその方法について説明します。
このレッスンの目標: レイヤーのフォームを作成します。
前のように 編集モード にします。
属性テーブル を開きます。
テーブル内の任意のセルを右クリックします。 フォームを開く エントリのある短いメニューが表示されます。
それをクリックするとQGISがこのレイヤーのために生成したフォームが表示されます。
明らかに、毎回 属性テーブル で特定の街路を検索するのではなく、地図を見ながらこれを行うことができるといいですね。
Select the roads layer in the Layers list.
地物情報表示 ツールを使って地図上の任意の街路をクリックします。
結果を識別 パネルが開き、ツリービューに クリックされた地物についてのフィールド値および他の一般的情報が表示されます。
パネル下部で フォームを自動で開く チェックボックスをチェックしてください。
さて、地図内のどれかの街路をもう一度クリックします。前の 結果を識別 ダイアログに沿って今やおなじみのフォームが表示されます。
識別 ツールで単一の地物をクリックするたびに、 フォームを自動で開く は未チェックでない限り、そのフォームがポップアップします。
編集モードの場合は、このフォームを使用して地物の属性を編集できます。
編集モードをアクティブにします (まだアクティブになっていない場合)。
地物情報表示 ツールを使用して Swellendam を通り抜けるメインストリートをクリックします:
highway の値を変更して secondary にします。
編集内容を保存します。
編集モードを終了します。
属性テーブル を開いて、属性テーブルの値が更新されていること、すなわちソースデータが更新されていることに注意して下さい。
ノート
デフォルトのデータセットを使用している場合は、地図には Voortrek Street と呼ばれる道が複数あることがわかります。
フォームを使用して編集するのはよいのですが、まだ何もかも手で入力しなければいけません。幸いにも、フォームには様々な方法でデータの編集ができる様々な種類の、いわゆる ウィジェット を持ちます。
roads レイヤーの レイヤーのプロパティ を開きます。
フィールド タブに切り替えます。次が表示されます:
man_made と同じ行の 行編集 ボタンをクリックしてダイアログを開きます。
オプションのリストから チェックボックス を選択します:
OK をクリックします。
編集モードにします (roads レイヤーが編集モードではない場合)。
地物情報表示 ツールをクリックします。
前に選択した同じ道路をクリックします。
man_made 属性の隣にチェックボックスが表示されます。チェックされている場合は True 、チェックされていない場合は False を意味します。
まったくのゼロから独自のカスタム フォームを設計することもできます。
test-data という名前で2つの属性を持つ単純なポイントレイヤーを作成します:
名前 (テキスト)
年齢 (テキスト)
デジタイズツールを使用して新しいレイヤー上にいくつかのポイントを追加してテスト用データを作成します。新しいポイントをキャプチャするたびにQGISの既定の属性フォームが表示されます。
ノート
以前の作業の時からスナップを有効にしたままの場合、スナップを無効にする必要があります。
では、属性データのキャプチャ段階のための独自のカスタムフォームを作成したいと思います。これには Qt4 Designer がインストールされている必要があります(フォームを作成する人だけに必要です)。Windowsを使用している場合はコース教材の一部として提供されているはずです。他のOSを使用している場合はそれを求める必要があります。Ubuntuではターミナルで次の操作を行います:
ノート
執筆時点ではQt5は利用可能な最新バージョンです。しかし、このプロセスは具体的にQt4を必要とし、必ずしもQt5と互換性がありません。
sudo apt-get install qt4-designer
... とすれば自動的にインストールされるはずです。そうでなければ ソフトウェアセンター で探します。
Windowsの スタートメニュー を開き(またはお使いのOSに適切なアプローチで)、 デザイナ を開始します。
表示されるダイアログで新しいダイアログボックスを作成します:
画面の左側(デフォルト)にある ウィジェットボックス で Line Edit アイテムを探します。
このアイテムをクリックしてフォームにドラッグします。フォーム上に新しい Line Edit が作成されます。
Line Edit要素を選択すると、その プロパティ が画面の片側に沿って表示されます(デフォルトで右側):
名前を Name に設定します。
同様にして新しいSpin Boxを作成し、名前を Age に設定します。
新しい人の追加 というテキストで Label を追加します。フォントは太字にします(設定項目はオブジェクト プロパティ で見つけます)。あるいは(ラベルを追加する代わりに)ダイアログ自体のタイトルを設定することもできます。
ダイアログの任意の場所をクリックします。
垂直に並べる ボタンを見つけます(デフォルトでは画面の上端に沿うツールバーにあります)。これはダイアログを自動的にレイアウトします。
プロパティでダイアログの最大サイズを 200 (幅) x 100 (高さ)に設定します。
exercise_data/forms/add_people.ui として新しいフォームを保存します。
保存が完了したら Qt4デザイナ プログラムを閉じます。
QGISに戻ります。
凡例で test-data レイヤーをダブルクリックしてプロパティにアクセスします。
レイヤプロパティ ダイアログの フィールド タブをクリックします。
属性エディタレイアウト ドロップダウンボックスで ui-ファイルを提供する を選択します。
省略記号ボタンをクリックして、作成した add_people.ui を選択します:
レイヤプロパティ ダイアログの OK をクリックします。
編集モードに切り替えて、新しいポイントを追加します。
そうするとカスタムダイアログが表示されます(QGISが通常作成するものの代わりに)。
地物情報表示 ツールを使ってポイントの1つをクリックした場合、地物情報ウィンドウで右クリックしてコンテキストメニューから 地物フォームを見る を選択するとフォームを起動することができます。
このレイヤが編集モードの場合はコンテキストメニューには代わりに 地物編集フォーム が表示されます。キャプチャ後でもフォームで属性の調整ができます。
フォームを使用すればデータの編集や作成がもっと楽になります。ウィジェットの種類を編集するか全くのゼロから新しいフォームを作成することで、新しいデータをデジタイズをする人のエクスペリエンスをコントロールできます。それによって誤解や不必要なエラーを最小限に押さえることができます。
上記の高度なセクションを完了し、Pythonについて知っていれば、 このブログエントリ Pythonロジックを使ってカスタム地物フォームを作成すると、データ検証、オートコンプリートなどの高度な機能が可能になります。
地物フォームを開くことはQGISができる標準的な操作の1つです。一方で、自ら定義したカスタムアクションを実行させることもできます。これは次のレッスンのテーマです。