5.3. Lesson: 表格

当您通过数字化添加新数据时,将显示一个对话框供您填写该要素的属性。但是,默认情况下,此对话框的外观不是很好。这可能会导致可用性问题,特别是当您有大型数据集要创建时,或者如果您希望其他人帮助您数字化,而他们发现默认表单令人困惑。

幸运的是,QGIS允许您为层创建自己的自定义对话框。这一课告诉你如何做到这一点。

The goal for this lesson: 若要为层创建表单,请执行以下操作。

5.3.1. 基本信息 Follow Along: Using QGIS' Form Design Functionality

  1. 选择 roads 中的层 Layers 嵌板

  2. 请输入 Edit Mode 和以前一样

  3. 打开 roads 层的属性表

  4. 右键单击表中的任何单元格。将出现一个简短的菜单,其中包括 Open form 进入。

  5. 单击它以查看QGIS为该图层生成的表格

显然,能够在查看地图时执行此操作将是件好事,而不是需要在 Attribute Table 一直。

  1. 选择 roads 中的层 Layers 嵌板

  2. 使用 识别 Identify Features 工具,点击地图上的任何街道。

  3. 这个 Identify Results 面板将打开,并以树状视图显示有关所单击功能的字段值和其他常规信息。

  4. 在面板顶部,选中 Auto open form for single feature results 复选框中的 选项 Identify Settings 菜单。

  5. 现在,再次点击地图上的任何街道。沿上一条路线 Identify Results 对话框中,您将看到现在熟悉的形式:

    ../../../_images/roads_form.png
  6. 每次使用单击单个要素时 Identify 工具,其形式将弹出 Auto open form 已选中。

5.3.2. 基本信息 Try Yourself Using the Form to Edit Values

如果处于编辑模式,则可以使用此表单编辑要素的属性。

  1. 激活编辑模式(如果尚未激活)。

  2. 使用 识别 Identify Features 工具,点击贯穿的主要街道 Swellendam :

    ../../../_images/main_street_selected.png
  3. 编辑ITS highway 价值应为 secondary

  4. 退出编辑模式并保存编辑内容

  5. 打开 Attribute Table 请注意,属性表中的值已更新,因此在源数据中也已更新

5.3.3. 适度 Follow Along: Setting Form Field Types

使用表单编辑东西很好,但您仍然需要手动输入所有内容。幸运的是,表单有不同类型的所谓 widgets 允许您以各种不同的方式编辑数据。

  1. 打开 roads 层的 Properties...

  2. 切换到 Fields 标签。您将看到以下内容:

    ../../../_images/fields_panel.png
  3. 切换到 Attributes Form 标签。您将看到以下内容:

    ../../../_images/attributes_form.png
  4. 按下 oneway 行并选择 Checkbox AS Widget Type 在选项列表中:

    ../../../_images/checkbox_selected.png
  5. 单击 OK

  6. 进入编辑模式(如果 roads 层尚未处于编辑模式)

  7. 按下 识别 Identify Features 工具

  8. 点击您先前选择的同一条主干道

现在您将看到, oneway 属性旁边有一个复选框表示 True (选中)或 False (未选中)。

5.3.4. 硬的 Try Yourself

为设置更合适的表单微件 highway 菲尔德。

5.3.5. 硬的 Try Yourself Creating Test Data

您还可以完全从头开始设计您自己的自定义表单。

  1. 创建名为的简单点图层 test-data 具有两个属性:

    • 名称(文本)

    • 年龄(整数)

    ../../../_images/new_point_layer.png
  2. 使用数字化工具捕获新图层上的几个点,以便您有一些数据可用。每次捕获新的点时,您都应该看到默认的QGIS生成的属性捕获表单。

    备注

    如果在早期任务中仍启用捕捉,则可能需要禁用捕捉。

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

5.3.6. 硬的 Follow Along: Creating a New Form

现在,我们希望为属性数据捕获阶段创建我们自己的定制表单。要做到这一点,您需要 QT Designer 已安装(仅创建表单的人员需要)。

  1. 开始 QT Designer

  2. 在出现的对话框中,创建一个新对话框:

    ../../../_images/qt_new_dialog.png
  3. 寻找 Widget Box 在屏幕的左侧(默认)。它包含一个名为 Line Edit

  4. 单击此项目并将其拖到您的表单中。这将创建一个新的 Line Edit 在表格中。

  5. 选择新行编辑元素后,您将看到其 properties 在屏幕的一侧(默认情况下在右侧):

    ../../../_images/qt_line_edit.png
  6. 将其名称设置为 name

  7. 使用相同的方法,创建一个新的 Spin Box 并将其名称设置为 age

  8. 添加 Label 与文本一起 Add a New Person 粗体(在对象中查看 properties 以了解如何设置此设置)。或者,您可能希望设置对话框本身的标题(而不是添加标签)。

  9. 添加 Label 为了你的 Line Edit 而你的 Spin Box

  10. 按照你自己的意愿安排元素。

  11. 在对话框中的任意位置单击。

  12. 找到 Lay Out in a Form Layout 按钮(默认情况下位于屏幕顶部边缘的工具栏中)。这将自动布局您的对话框。

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

  14. 您的表单现在应该类似如下所示:

    ../../../_images/qt_example_form.png
  15. 将新表单另存为 exercise_data/forms/add_people.ui

  16. 保存完成后,您可以关闭 Qt Designer

5.3.7. 硬的 Follow Along: Associating the Form with Your Layer

  1. 返回QGIS

  2. 双击 test-data 图例中的层以访问其属性。

  3. 按下 Attributes Form 选项卡中的 Layer Properties 对话框

  4. Attribute editor layout 下拉列表,选择 Provide ui-file

  5. 单击省略号按钮,然后选择 add_people.ui 您刚刚创建的文件:

    ../../../_images/provide_ui_file.png
  6. 单击 OKLayer Properties 对话框

  7. 进入编辑模式并捕获新点

  8. 当您这样做时,您将看到您的自定义对话框(而不是QGIS通常创建的通用对话框)。

  9. 如果您使用 识别 Identify Features 工具,您现在可以通过在识别结果窗口中单击鼠标右键并选择 View Feature Form 从上下文菜单中。

  10. 如果您处于该层编辑模式,则会显示上下文菜单 Edit Feature Form 相反,即使在初始捕获之后,您也可以调整新表单中的属性。

5.3.8. In Conclusion

使用表单,您可以在编辑或创建数据时使自己的工作更轻松。通过编辑小部件类型或从头开始创建一个全新的表单,您可以控制为该层数字化新数据的人员的体验,从而将误解和不必要的错误降至最低。

5.3.9. Further Reading

如果您完成了上面的高级部分并了解Python,您可能会想要查看 this blog entry 关于使用Python逻辑创建自定义功能表单,该逻辑允许数据验证、自动完成等高级功能。

5.3.10. What's Next?

打开识别功能的表单是QGIS可以执行的标准操作之一。但是,您也可以指示它执行您定义的自定义操作。这是下一课的主题。