3.3. Занятие: Классификация

Надписи - это хороший способ передать такую информацию, как названия отдельных мест, но их нельзя использовать для всего. Например, предположим, что кто-то хочет знать, для чего используется каждая местность Землепользования landuse. Используя надписи, вы получите следующее:

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

Это делает надписи на карте трудными для чтения и даже непреодолимыми, если на карте много различных участков землепользования.

Цель данного занятия: научиться эффективно классифицировать векторные данные.

3.3.1. basic Идем дальше: Классифицируем номинальные данные

  1. Откройте диалоговое окно Свойства слоя Layer Properties для слоя Землепользование landuse.

  2. Перейдите во вкладку Symbology.

  3. Кликните на раскрывающийся список с надписью Single Symbol и измените его на По категориям Categorized:

    ../../../_images/categorised_styles.png
  4. В новой панели измените Value на landuse и измените Цветовая шкала Color ramp на Случайный цвет Random colors.

  5. Кликните на кнопку Классифицировать Classify.

    ../../../_images/categorised_style_settings.png
  6. Кликните OK.

    Вы увидите примерно такое:

    ../../../_images/categorisation_result.png
  7. Кликните на стрелку (или знак плюса) рядом с landuse в панели Layers, вы увидите объяснение категорий:

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

    Теперь наши полигоны землепользования окрашены и классифицированы таким образом, что местности с одинаковым землепользованием имеют один цвет.

  8. При желании вы можете изменить символ каждой местности землепользования, дважды кликнув на соответствующий цветной блок на панели Layers или в диалоговом окне Свойства слоя Layer Properties:

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

Обратите внимание, что имеется одна категория, которая пуста:

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

Эта пустая категория используется для окраски любых объектов, для которых не определено значение землепользования или которые имеют значение NULL / НОЛЬ. Может быть полезно оставить эту пустую категорию, чтобы местности со значением NULL все еще отображались на карте. Вы можете изменить цвет, чтобы он более четко представлял пустое значение или значение NULL.

Не забудьте сохранить карту сейчас, чтобы не потерять все внесенные тяжелым трудом изменения!

3.3.2. basic Попробуйте сами: больше Классификации

Примените полученные выше знания, чтобы классифицировать слой Здания buildings. Установите категоризацию на поле building и используйте цветовую шкалу Спектральная Spectral.

Примечание

Не забудьте приблизить местность города, чтобы увидеть результаты.

3.3.3. moderate Идем дальше: Классификация соотношений

Существует четыре типа классификации: номинальная, порядковая, интервальная и соотношение.

В номинальной классификации категории, по которым классифицируются объекты, основаны на названиях; у них нет определенного порядка. Например, названия городов, коды районов и т.д. Символы, используемые для номинальных данных, не должны подразумевать порядок или величины.

  • Для точек мы можем использовать символы различной формы.

  • Для полигонов мы можем использовать различные типы штриховки или различные цвета (избегайте смешивания светлых и темных цветов).

  • Для линий мы можем использовать различные пунктирные узоры, различные цвета (избегая смешивания светлых и темных цветов) и различные символы вдоль линий.

В порядковой классификации категории расположены в определённом порядке. Например, городам мира присваивается ранг в зависимости от их значимости для мировой торговли, путешествий, культуры и т. д. Символы, используемые для порядковых данных, должны подразумевать порядок, но не величину.

  • Для точек мы можем использовать символы со светлыми и темными цветами.

  • Для полигонов мы можем использовать градуированные цвета (от светлого до темного).

  • Для линий мы можем использовать градуированные цвета (от светлого до темного).

В интервальной классификации, числа находятся в шкале с положительными, отрицательными и нулевыми значениями. Например, высота выше/ниже уровня моря, температура в градусах по Цельсию. Символы, используемые для данных интервала, должны подразумевать порядок и величину.

  • Для точек мы можем использовать символы с различным размером (от малого до большого).

  • Для полигонов мы можем использовать градуированные цвета (от светлого до темного) или добавлять диаграммы различного размера.

  • Для линий можно использовать толщину (от тонкой до толстой/широкой).

В классификации соотношения числа имеют шкалу только с положительными и нулевыми значениями. Например, температура выше абсолютного нуля (0 градусов по Кельвину), расстояние от точки, средний трафик по данной улице в месяц и т. д. Символы, используемые для данных «соотношения», должны подразумевать порядок и величину.

  • Для точек мы можем использовать символы с различным размером (от малого до большого).

  • Для полигонов мы можем использовать градуированные цвета (от светлого до темного) или добавлять диаграммы различного размера.

  • Для линий можно использовать толщину (от тонкой до толстой/широкой).

В приведенном выше примере мы использовали номинальную классификацию для окрашивания каждой записи в слое landuse на основе ее атрибута landuse. Теперь мы будем применять классификацию соотношения, чтобы классифицировать записи по местностям.

Мы собираемся переклассифицировать слой таким образом, что существующие классы будут утеряны, если их не сохранить. Чтобы сохранить текущую классификацию необходимо:

  1. Открыть диалоговое окно Свойств слоя.

  2. Кликнуть на кнопку Сохранить стиль…  Save Style … в раскрывающемся меню Стиль Style.

  3. Выбрать Переименовать текущий…  Rename Current…, войти в land usage и кликнуть OK.

    Категории и их символы теперь сохранены в свойствах слоя.

  4. Теперь необходимо кликнуть на кнопку Добавить…  Add… в раскрывающемся меню Style и создать новый стиль с именем Соотношение ratio. Таким образом будет сохранена новая классификация.

  5. Закрыть диалоговое окно Свойства слоя Layer Properties.

Мы хотим классифицировать местности землепользования по размеру, но есть проблема: у них нет поля размера, поэтому придется создать таковое.

  1. Откройте таблицу Атрибуты для слоя landuse.

  2. Войдите в режим редактирования, кликнув на кнопку Переключить редактирование toggleEditing Toggle editing.

  3. Добавьте новый столбец десятичного типа под названием Местность AREA с помощью кнопки Новое поле newAttribute New field:

    ../../../_images/add_area_column.png
  4. Кликните OK.

    Будет добавлено новое поле (в крайнем правом углу таблицы, вам может потребоваться прокрутить по горизонтали, чтобы его увидеть). Однако на данный момент оно не заполнено, в нем просто много значений NULL.

    Чтобы решить эту проблему, нам потребуется рассчитать местности.

    1. Откройте калькулятор поля с кнопкой calculateField.

      Вы получите такое диалоговое окно:

      ../../../_images/calculate_field_dialog.png
    2. Установите флажок checkbox 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. Кликните saveEdits, чтобы сохранить изменения и выйти из режима редактирования с помощью кнопки Переключить редактирование toggleEditing Toggle editing.

  6. Закройте список атрибутов.

Теперь, когда у нас есть данные, давайте воспользуемся ими для визуализации слоя landuse.

  1. Откройте вкладку  Layer properties в диалоговом окне Symbology для слоя landuse.

  2. Измените стиль классификации с По категориям Categorized на Величина Graduated

  3. Измените Value на AREA.

  4. В разделе Цветовая шкала Color ramp`выберите параметр Создать новую цветовую шкалу… :guilabel:`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. Кликните на Classify

    Теперь у вас будет что-то подобное:

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

    Оставьте все остальное как есть.

  10. Кликните OK:

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

3.3.4. moderate Попробуйте сами: Точно определить Классификацию

  • Измените значения Режимы Mode и Классы Classes, пока не получите логичную классификацию.

3.3.5. hard Идем дальше: Классификация на основе правил

Часто бывает полезно комбинировать несколько критериев для классификации, но, к сожалению, обычная классификация учитывает только один атрибут. Вот здесь и пригодится классификация на основе правил.

На этом занятии мы представим слой landuse таким образом, чтобы можно было легко отличить город |Свеллендам| от других жилых территорий и других типов землепользования (на основе их территории).

  1. Откройте диалоговое окно Свойства слоя Layer Properties для слоя Землепользование landuse.

  2. Перейдите во вкладку Symbology.

  3. Переключите стиль классификации на Rule-based.

    QGIS автоматически покажет правила, которые представляют текущую классификацию, выполненные для данного слоя. Например, после выполнения вышеупомянутого упражнения вы должны увидеть что-то вроде этого:

    ../../../_images/rule_based_classification.png
  4. Кликните и перетащите мышку, чтобы выбрать все правила.

  5. Используйте кнопку Удалить выбранные правила symbologyRemove Remove selected rules, чтобы удалить все существующие правила.

Давайте теперь добавим наши собственные правила.

  1. Кликните на кнопку Добавить правило symbologyAdd Add rule.

  2. Появится диалоговое окно Редактировать правило Edit rule.

  3. Введите Город Свеллендам Swellendam city как Label.

  4. Кликните кнопку expression рядом с текстовой областью Фильтр Filter, чтобы открыть Конструктор строки выражений Expression String Builder.

  5. Введите критерий "name" = 'Swellendam' и подтвердите.

    ../../../_images/query_builder_example.png
  6. Back to the Edit rule dialog, assign it a darker grey-blue color in order to indicate the town’s importance in the region and remove the border

    ../../../_images/rule_style_result.png
  7. Кликните OK.

  8. Повторите вышеуказанные шаги, чтобы добавить следующие правила:

    1. Надпись Другие жилые с критерием "landuse" = 'residential' AND "name" <> 'Swellendam' (или "landuse" = 'residential' AND "name" != 'Swellendam'). Выберите бледный сине-серый цвет заливки в Fill color.

    2. Надпись Большие нежилые местности с критерием "landuse" <> 'residential' AND "AREA" >= 605000. Выберите средне-зеленый цвет.

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

      Данные фильтры являются эксклюзивными, поскольку они исключают местности на карте (нежилые районы размером менее 605000 (квадратных метров) не включены ни в одно из правил).

    3. Мы «догоним» оставшиеся функции, используя новое правило с надписью Небольшие нежилые местности. Вместо выражения фильтра проверьте radioButtonOn Else. Придайте этой категории подходящий бледно-зеленый цвет.

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

    Ваши правила теперь выглядят следующим образом:

    ../../../_images/criterion_refined_list.png
  9. Примените данную символику.

Ваша карта будет выглядеть примерно так:

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

Теперь у вас есть карта, на которой Свеллендам Swellendam – самая известная жилая местность, а другие нежилые местности, окрашены в соответствии с их размером.

3.3.6. В заключении

Символика позволяет нам представить атрибуты слоя в удобной для чтения форме. Это позволяет нам, а также читателю карты понять значение функций, используя любой выбранный нами соответствующий атрибут. В зависимости от проблем, с которыми вы сталкиваетесь, вы будете применять различные методы классификации для их решения.

3.3.7. Что дальше?

Теперь у нас есть красивая карта, но как мы собираемся вывести ее из QGIS в формат, который мы можем распечатать или преобразовать в изображение или PDF? Это тема следующего занятия!