5.3. Lesson: フォーム

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

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

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

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

  1. Select the roads layer in the Layers panel

  2. Enter Edit Mode as before

  3. Open the roads layer's attribute table

  4. Right-click on any cell in the table. A short menu will appear, that includes the Open form entry.

  5. Click on it to see the form that QGIS generates for this layer

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

  1. Select the roads layer in the Layers panel

  2. Using the identify Identify Features tool, click on any street in the map.

  3. The Identify Results panel opens and shows a tree view of the fields values and other general information about the clicked feature.

  4. At the top of the panel, check the Auto open form for single feature results checkbox in the options sup:Identify Settings menu.

  5. さて、地図内のどれかの街路をもう一度クリックします。前の 結果を識別 ダイアログに沿って今やおなじみのフォームが表示されます。

    ../../../_images/roads_form.png
  6. Each time you click on a single feature with the Identify tool, its form pops up as long as the Auto open form is checked.

5.3.2. basic Try Yourself フォームを使用して値を編集する

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

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

  2. Using the identify Identify Features tool, click on the main street running through Swellendam:

    ../../../_images/main_street_selected.png
  3. Edit its highway value to be secondary

  4. Exit edit mode and save your edits

  5. Open the Attribute Table and note that the value has been updated in the attributes table and therefore in the source data

5.3.3. moderate Follow Along: フォームのフィールドタイプを設定する

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

  1. Open the roads layer's Properties...

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

    ../../../_images/fields_panel.png
  3. Switch to the Attributes Form tab. You'll see this:

    ../../../_images/attributes_form.png
  4. Click on the oneway row and choose Checkbox as Widget Type in the list of options:

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

  6. Enter edit mode (if the roads layer is not already in edit mode)

  7. Click on the identify Identify Features tool

  8. Click on the same main road you chose earlier

You will now see that the oneway attribute has a checkbox next to it denoting True (checked) or False (unchecked).

5.3.4. hard Try Yourself

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

結果をチェックする

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

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

  1. Create a simple point layer named test-data with two attributes:

    • name (text)

    • age (integer)

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

    注釈

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

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

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

Now we want to create our own custom form for the attribute data capture phase. To do this, you need to have QT Designer installed (only needed for the person who creates the forms).

  1. Start QT Designer.

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

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

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

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

    ../../../_images/qt_line_edit.png
  6. Set its name to name.

  7. Using the same approach, create a new Spin Box and set its name to age.

  8. Add a Label with the text Add a New Person in a bold font (look in the object properties to find out how to set this). Alternatively, you may want to set the title of the dialog itself (rather than adding a label).

  9. Add a Label for your Line Edit and your Spin Box.

  10. Arrange the elements to your own desire.

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

  12. Find the Lay Out in a Form Layout button (in a toolbar along the top edge of the screen, by default). This lays out your dialog automatically.

  13. Set the dialog's maximum size (in its properties) to 200 (width) by 150 (height).

  14. Your form should now look similar to this:

    ../../../_images/qt_example_form.png
  15. Save your new form as exercise_data/forms/add_people.ui

  16. When it's done saving, you can close Qt Designer

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

  1. Go back to QGIS

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

  3. Click on the Attributes Form tab in the Layer Properties dialog

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

  5. Click the ellipsis button and choose the add_people.ui file you just created:

    ../../../_images/provide_ui_file.png
  6. Click OK on the Layer Properties dialog

  7. Enter edit mode and capture a new point

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

  9. If you click on one of your points using the identify Identify Features tool, you can now bring up the form by right clicking in the identify results window and choosing View Feature Form from the context menu.

  10. If you are in edit mode for this layer, that context menu will show Edit Feature Form instead, and you can then adjust the attributes in the new form even after initial capture.

5.3.8. In Conclusion

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

5.3.9. Further Reading

If you completed the advanced section above and have knowledge of Python, you may want to check out this blog entry about creating custom feature forms with Python logic, which allows advanced functions including data validation, autocompletion, etc.

5.3.10. What's Next?

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