3.3. Lesson: 分类

标签是一种很好的信息交流方式,比如个别地点的名称,但它们不能用于一切。例如,假设有人想知道每个 landuse 面积用于。使用标签,您将获得以下内容:

../../../_images/bad_landuse_labels.png

这使得地图的标签很难阅读,如果地图上有许多不同的土地使用区,甚至会令人不知所措。

The goal for this lesson: 学习如何有效地对矢量数据进行分类。

3.3.1. 基本信息 Follow Along: Classifying Nominal Data

  1. 打开 Layer Properties 对话框中的 landuse 图层

  2. 转到 Symbology 选项卡

  3. 单击显示以下内容的下拉列表 Single Symbol 并将其更改为 Categorized

    ../../../_images/categorised_styles.png
  4. 在新面板中,更改 Valuelanduse 以及 Color rampRandom colors

  5. 单击标记为 Classify

    ../../../_images/categorised_style_settings.png
  6. 单击 OK

    您将看到类似以下内容:

    ../../../_images/categorisation_result.png
  7. 单击旁边的箭头(或加号 landuseLayers 面板中,您将看到解释的类别:

    ../../../_images/categories_explained.png

    现在,我们的土地利用多边形是彩色的,并进行了分类,以便相同土地利用的地区具有相同的颜色。

  8. 如果您愿意,可以通过双击中的相关颜色块更改每个土地使用区域的符号 Layers 面板或在 Layer Properties 对话框:

    ../../../_images/change_layer_color.png

请注意,有一个类别为空:

../../../_images/empty_category.png

此空类别用于为未定义土地使用值或具有土地使用值的任何对象着色 NULL 价值。保留此空类别可能很有用,这样具有 NULL 价值仍在地图上表示。您可能希望更改颜色以更明显地表示空白或 NULL 价值。

记住现在保存您的地图,这样您就不会丢失所有来之不易的更改!

3.3.2. 基本信息 Try Yourself More Classification

使用您在上面学到的知识对 buildings 一层。将分类设置为 building 字段,并使用 Spectral 色带。

备注

记住要放大到城市区域才能看到结果。

3.3.3. 适度 Follow Along: Ratio Classification

有四种类型的分类: nominalordinalintervalratio

在……里面 nominal 分类,对象被分类到的类别是基于名称的;它们没有顺序。例如:城镇名称、区号等。用于名义数据的符号不应暗示任何顺序或大小。

  • 对于点,我们可以使用不同形状的符号。

  • 对于多边形,我们可以使用不同类型的阴影或不同的颜色(避免混合浅色和深色)。

  • 对于线条,我们可以沿线使用不同的虚线图案、不同的颜色(避免混合浅色和深色)和不同的符号。

在……里面 ordinal 分类,类别是按照一定的顺序排列的。例如,世界城市的排名取决于它们对世界贸易、旅游、文化等的重要性。用于序号数据的符号应该暗示顺序,而不是大小。

  • 对于点,我们可以使用浅色到深色的符号。

  • 对于多边形,我们可以使用渐变颜色(从浅到暗)。

  • 对于线条,我们可以使用渐变颜色(从浅到深)。

在……里面 interval 在分类中,这些数字以正值、负值和零值为标度。例如:海平面以上/低于海平面的高度,以摄氏度为单位的温度。用于间隔数据的符号应隐含顺序和大小。

  • 对于点,我们可以使用不同大小(从小到大)的符号。

  • 对于多边形,我们可以使用渐变颜色(从浅到深)或添加不同大小的图表。

  • 对于线条,我们可以使用粗细(从细到粗)。

在……里面 ratio 在分类中,数字的范围只有正值和零值。例如:绝对零度以上的温度(开尔文0度)、到一点的距离、给定街道上每月的平均交通量等。用于比率数据的符号应该暗示顺序和大小。

  • 对于点,我们可以使用不同大小(从小到大)的符号。

  • 对于多边形,我们可以使用渐变颜色(从浅到深)或添加不同大小的图表。

  • 对于线条,我们可以使用粗细(从细到粗)。

在上面的示例中,我们使用名义分类为 landuse 基于ITS的层 landuse 属性。现在我们将使用比率分类来按区域对记录进行分类。

我们将对层进行重新分类,因此如果不保存现有类将会丢失。要存储当前分类,请执行以下操作:

  1. 打开图层的属性对话框

  2. 单击 Save Style ... 按钮中的 Style 下拉菜单。

  3. 选择 Rename Current... ,输入 land usage 并按下 OK

    现在,类别及其符号保存在该层的属性中。

  4. 现在单击 Add... 录入 Style 下拉菜单,并创建名为 ratio 。这将存储新的分类。

  5. 关闭 Layer Properties 对话框

我们想要按大小对土地使用区进行分类,但有一个问题:它们没有大小字段,所以我们必须创建一个大小字段。

  1. 打开的属性表 landuse 一层。

  2. Enter edit mode by clicking the ToggleEditing Toggle editing button

  3. 添加名为DECIMAL类型的新列 AREA ,使用 新属性 New field 按钮:

    ../../../_images/add_area_column.png
  4. 单击 OK

    将添加新字段(在表的最右侧;您可能需要水平滚动才能看到它)。然而,目前它没有人口,只是有很多 NULL 价值观。

    要解决这个问题,我们需要计算面积。

    1. 使用打开字段计算器 计算字段 纽扣。

      您将看到此对话框:

      ../../../_images/calculate_field_dialog.png
    2. 查看 复选框 Update existing fields

    3. 选择 AREA 在字段下拉菜单中

      ../../../_images/field_calculator_top.png
    4. 在.之下 Expression 选项卡中,展开 Geometry 函数在列表中分组并查找 $area

    5. 双击它,使其显示在 Expression 字段

      ../../../_images/geometry_area_select.png
    6. 单击 OK

    7. 滚动到 AREA 属性表中的字段,您会注意到它填充了值(您可能需要单击列标题来刷新数据)。

    备注

    这些面积遵循项目的面积单位设置,因此它们可以以平方米或平方度为单位。

  5. 新闻发布会 保存编辑 要保存编辑并退出编辑模式,请执行以下操作 ToggleEditing Toggle editing

  6. 关闭属性表

现在我们有了数据,让我们使用它们来呈现 landuse 一层。

  1. 打开 Layer properties 对话框的 Symbology 选项卡,用于 landuse 图层

  2. 将分类样式从 CategorizedGraduated

  3. 更改 ValueAREA

  4. 在……下面 Color ramp ,选择该选项 Create New Color Ramp...

    ../../../_images/area_gradient_select.png
  5. Gradient (如果尚未选中),然后单击 OK 。您将看到以下内容:

    ../../../_images/gradient_color_select.png

    您将使用它来表示面积,其中的小面积如下 Color 1 和大片区域,如 Color 2

  6. 选择合适的颜色

    在该示例中,结果如下所示:

    ../../../_images/gradient_color_example.png
  7. 单击 OK

  8. 您可以通过选择保存色带 Save Color Ramp...Color ramp 标签。为色带选择合适的名称,然后单击 Save 。现在,您可以在下面的菜单中轻松选择相同的色带 All Color Ramps

  9. 在……下面 Mode 选择 相等计数 Equal Count (Quantile)

  10. 单击 Classify

    现在,您将拥有类似如下的内容:

    ../../../_images/landuse_gradient_selected.png

    让其他一切都保持原样。

  11. 单击 OK

../../../_images/gradient_result_map.png

3.3.4. 适度 Try Yourself Refine the Classification

  • 更改的值 ModeClasses 直到你得到一个有意义的分类。

3.3.5. 硬的 Follow Along: Rule-based Classification

组合多个标准进行分类通常很有用,但遗憾的是,正常的分类只考虑一个属性。这就是基于规则的分类派上用场的地方。

在本课中,我们将表示 landuse 层以一种易于识别的方式 Swellendam 城市不同于其他居民区,不同于其他类型的土地利用(基于其面积)。

  1. 打开 Layer Properties 对话框中的 landuse 图层

  2. 切换到 Symbology 选项卡

  3. 将分类样式切换为 Rule-based

    QGIS将自动显示表示为该层实现的当前分类的规则。例如,完成上面的练习后,您可能会看到如下所示:

    ../../../_images/rule_based_classification.png
  4. 单击并拖动以选择所有规则

  5. 使用 符号系统移除 Remove selected rules 按钮以删除所有现有规则

现在,让我们添加自定义规则。

  1. 单击 符号系统添加 Add rule 按钮

  2. 这个 Edit rule 然后会出现一个对话框

  3. 请输入 Swellendam city AS Label

  4. 单击 表达式 按钮旁边的 Filter 文本区域以打开 Expression String Builder

  5. 输入标准 "name" = 'Swellendam' 并验证

    ../../../_images/query_builder_example.png
  6. 回到过去的 Edit rule 对话框中,将其指定为较深的灰蓝色,以指示该镇在该区域中的重要性并移除边界

    ../../../_images/rule_style_result.png
  7. 新闻发布会 OK

  8. 重复上述步骤以添加以下规则:

    1. Other residential 用标准来标注 "landuse" = 'residential' AND "name" <> 'Swellendam' 。选择浅蓝灰色的 Fill color

    2. Big non residential areas 用标准来标注 "landuse" <> 'residential' AND "AREA" >= 605000 。选择中绿色。

      ../../../_images/criterion_refined_midway.png

      这些过滤器是排他性的,因为它们排除了地图上的区域(小于605000(平方米)的非住宅区域不包括在任何规则中)。

    3. 我们将使用名为 Small non residential areas 。不是筛选器表达式,而是选中 单选按钮打开 Else 。给这个类别一个合适的淡绿色。

      ../../../_images/criterion_else.png

    您的规则现在应该如下所示:

    ../../../_images/criterion_refined_list.png
  9. 应用此符号系统

您的地图将如下所示:

../../../_images/rule_based_map_result.png

现在你有了一张地图,上面有 Swellendam 最突出的住宅区和其他非住宅区根据其大小进行着色。

3.3.6. In Conclusion

符号系统允许我们以一种易于阅读的方式表示层的属性。它允许我们以及地图阅读器使用我们选择的任何相关属性来了解要素的重要性。根据您面临的问题,您将应用不同的分类技术来解决它们。

3.3.7. What's Next?

现在我们有了一张漂亮的地图,但我们如何才能将它从QGIS中提取出来,并转化为我们可以打印出来的格式,或者制作成图像或PDF?这就是下一课的主题!