6.3. Lesson: フォーム

デジタイズで新しいデータを追加する場合、その地物の属性を入力するダイアログが表示されます。ただし、このダイアログボックスは既定ではあまり見た目がよくありません。これは特に大規模なデータセットを作成する場合や他の人にデジタイズを手伝って貰うときに既定のフォームではわかりにくい場合に、ユーザビリティ上の問題を引き起こす可能性があります。

幸いにも、QGISではレイヤに独自のカスタムダイアログを作成することができます。このレッスンではその方法について説明します。

このレッスンの目標: レイヤのフォームを作成します。

6.3.1. basic Follow Along: QGISのフォームデザイン機能の使用

  • レイヤリストroads レイヤを選択します。

  • 前のように 編集モード にします。

  • 属性テーブル を開きます。

  • テーブル内の任意のセルを右クリックします。 フォームのオープン エントリのある短いメニューが表示されます。

  • それをクリックするとQGISがこのレイヤのために生成したフォームが表示されます。

明らかに、毎回 属性テーブル で特定の街路を検索するのではなく、地図を見ながらこれを行うことができるといいですね。

  • 設定 ‣ オプション に移動します。

  • 表示されるダイアログで マップツール タブを選択します。

  • 単一の地物が確認された場合地物フォームを開く チェックボックスをチェックします:

../../../_images/open_feature_form.png
  • Ok をクリックします。

  • レイヤリストroads レイヤを選択します。

  • 地物情報表示 ツールを使って地図上の任意の街路をクリックします。

    mActionIdentify

通常の 地物情報 ダイアログの代わりに、今ではおなじみのフォームが表示されます:

../../../_images/roads_form.png

6.3.2. basic Try Yourself フォームを使った値の編集

編集モードの場合は、このフォームを使用して地物の属性を編集することができます。

  • 編集モードをアクティブにします (まだアクティブになっていない場合)。

  • 地物情報表示 ツールを使用して Swellendam を通り抜けるメインストリートをクリックします:

../../../_images/main_street_selected.png
  • highway の値を変更して secondary にします。

  • 編集内容を保存します。

  • 編集モードを終了します。

  • 属性テーブル を開いて、属性テーブルの値が更新されていること、すなわちソースデータが更新されていることに注意して下さい。

ノート

デフォルトのデータセットを使用している場合は、地図には Voortrek Street と呼ばれる道が複数あることがわかります。

6.3.3. moderate Follow Along: フォームのフィールドタイプの設定

フォームを使用して編集するのはよいのですが、まだ何もかも手で入力しなければいけません。幸いにも、フォームには様々な方法でデータの編集ができる様々な種類の、いわゆる ウィジェット を持ちます。

  • roads レイヤの レイヤプロパティ を開きます。

  • フィールド タブに切り替えます。次が表示されます:

../../../_images/fields_panel.png
  • man_made と同じ行の 行編集 ボタンをクリックしてダイアログを開きます。

  • オプションのリストから チェックボックス を選択します:

../../../_images/checkbox_selected.png
  • OK をクリックします。

  • 編集モードにします (roads レイヤが編集モードではない場合)。

  • 地物情報表示 ツールをクリックします。

  • 前に選択した同じ道路をクリックします。

man_made 属性の隣にチェックボックスが表示されます。チェックされている場合は True 、チェックされていない場合は False を意味します。

6.3.4. hard Try Yourself

highway フィールドに、より適切なフォームウィジェットを設定します。

結果をチェックする

6.3.5. hard Try Yourself テストデータの作成

まったくのゼロから独自のカスタム フォームを設計することもできます。

  • test-data という名前で2つの属性を持つ単純なポイントレイヤを作成します:

    • 名前 (テキスト)

    • 年齢 (テキスト)

../../../_images/new_point_layer.png
  • デジタイズツールを使用して新しいレイヤ上にいくつかのポイントを追加してテスト用データを作成します。新しいポイントをキャプチャするたびにQGISの既定の属性フォームが表示されます。

ノート

以前の作業の時からスナップを有効にしたままの場合、スナップを無効にする必要があります。

../../../_images/new_point_entry.png

6.3.6. hard Follow Along: 新しいフォームの作成

では、属性データのキャプチャ段階のための独自のカスタムフォームを作成したいと思います。これには Qt4 Designer がインストールされている必要があります(フォームを作成する人だけに必要です)。Windowsを使用している場合はコース教材の一部として提供されているはずです。他のOSを使用している場合はそれを求める必要があります。Ubuntuではターミナルで次の操作を行います:

ノート

執筆時点ではQt5は利用可能な最新バージョンです。しかし、このプロセスは具体的にQt4を必要とし、必ずしもQt5と互換性がありません。

sudo apt-get install qt4-designer

... とすれば自動的にインストールされるはずです。そうでなければ ソフトウェアセンター で探します。

  • Windowsの スタートメニュー を開き(またはお使いのOSに適切なアプローチで)、 デザイナ を開始します。

  • 表示されるダイアログで新しいダイアログボックスを作成します:

../../../_images/qt4_new_dialog.png
  • 画面の左側(デフォルト)にある ウィジェットボックスLine Edit アイテムを探します。

  • このアイテムをクリックしてフォームにドラッグします。フォーム上に新しい Line Edit が作成されます。

  • Line Edit要素を選択すると、その プロパティ が画面の片側に沿って表示されます(デフォルトで右側):

../../../_images/qt4_line_edit.png
  • 名前を Name に設定します。

  • 同様にして新しいSpin Boxを作成し、名前を Age に設定します。

  • 新しい人の追加 というテキストで Label を追加します。フォントは太字にします(設定項目はオブジェクト プロパティ で見つけます)。あるいは(ラベルを追加する代わりに)ダイアログ自体のタイトルを設定することもできます。

  • ダイアログの任意の場所をクリックします。

  • 垂直に並べる ボタンを見つけます(デフォルトでは画面の上端に沿うツールバーにあります)。これはダイアログを自動的にレイアウトします。

  • プロパティでダイアログの最大サイズを 200 (width) x 100 (height)に設定します。

  • exercise_data/forms/add_people.ui として新しいフォームを保存します。

  • 保存が完了したら Qt4デザイナ プログラムを閉じます。

6.3.7. hard Follow Along: レイヤをフォームに関連付ける

  • QGISに戻ります。

  • 凡例で test-data レイヤをダブルクリックしてプロパティにアクセスします。

  • レイヤプロパティ ダイアログの フィールド タブをクリックします。

  • 属性エディタレイアウト ドロップダウンボックスで ui-ファイルを提供する を選択します。

  • 省略記号ボタンをクリックして、作成した add_people.ui を選択します:

../../../_images/provide_ui_file.png
  • レイヤプロパティ ダイアログの OK をクリックします。

  • 編集モードに切り替えて、新しいポイントを追加します。

  • そうするとカスタムダイアログが表示されます(QGISが通常作成するものの代わりに)。

  • 地物情報表示 ツールを使ってポイントの1つをクリックした場合、地物情報ウィンドウで右クリックしてコンテキストメニューから 地物フォームを見る を選択するとフォームを起動することができます。

  • このレイヤが編集モードの場合はコンテキストメニューには代わりに 地物編集フォーム が表示されます。キャプチャ後でもフォームで属性の調整ができます。

6.3.8. In Conclusion

フォームを使用すればデータの編集や作成がもっと楽になります。ウィジェットの種類を編集するか全くのゼロから新しいフォームを作成することで、新しいデータをデジタイズをする人のエクスペリエンスをコントロールできます。それによって誤解や不必要なエラーを最小限に押さえることができます。

6.3.9. Further Reading

もし上の高度なセクションを完了して、Pythonの知識がある場合には このブログエントリ をチェックしてみて下さい。Pythonロジックを用いたカスタム地物フォームの作成についての記事で、データ検証や自動補完などの高度な機能を可能にしています。

6.3.10. What’s Next?

地物フォームを開くことはQGISができる標準的な操作の1つです。一方で、あなたが定義したカスタムアクションを実行させることもできます。これは次のレッスンのテーマです。