Важно

Перевод - это работа сообщества : ссылка:Вы можете присоединиться. Эта страница в настоящее время переводится |прогресс перевода|.

2.4. Урок: Символика

Слой символа - это его внешний вид на карте. Основное преимущество GIS перед другими способами представления данных с пространственными аспектами заключается в том, что с помощью GIS у вас есть динамическое визуальное представление данных, с которыми вы работаете.

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

Другими словами, иметь правильную символику - это не роскошь и не просто хорошо, что она есть. Фактически, для вас очень важно правильно использовать GIS и создавать карты и информацию, которые люди смогут использовать.

Цель данного занятия: иметь возможность создавать любую символику для любого векторного слоя.

2.4.1. ★☆☆ Следуй за мной: Изменение цвета

Чтобы изменить символику слоя, откройте его Свойства слоя. Начнем с изменения цвета слоя Землепользование.

  1. Щелкните правой кнопкой мыши на слое землепользование в списке слоев.

  2. В открывшемся меню выберите пункт Свойства… / Properties….

    Примечание

    Вы также можете получить доступ к свойствам слоя по умолчанию, дважды кликнув на слой в списке Слоев.

    Совет

    Кнопка symbology в верхней части панели Layers открывает панель Стили слоя Layer Styling. Вы можете использовать эту панель для изменения некоторых свойств слоя: по умолчанию, изменения вступают в силу немедленно!

  3. Выберите, вкладку Символика symbology Symbology tab: в окошке Свойства слоя Layer Properties.

    ../../../_images/layer_properties_style.png
  4. Кликните на кнопку выбора цвета рядом с ярлыком Color. Появится стандартное диалоговое окно цвета.

  5. Выберите серый цвет и нажмите OK.

  6. Еще раз нажмите OK в окне Свойства слоя Layer Properties, и вы увидите, что изменение цвета применяется к слою.

2.4.2. ★☆☆ Попробуй себя:

Измените цвет слоя вода на светло-голубой. Попробуйте использовать панель Стилизация слоя вместо меню Свойства слоя.

2.4.3. ★☆☆ Следуй за мной: Изменение структуры символов

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

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

    Под вкладкой symbology Symbology, вы увидите похожее диалоговое окно, которое вы видели ранее. Однако, на этот раз вы делаете больше, чем просто быстро меняете цвет.

  2. В слоях символа откройте раскрывающийся список Заливка Fill и выберите параметр Простая заливка Simple fill.

  3. Кликните раскрывающийся список Стиль обводки Stroke style. На данный момент он должен показывать короткую линию и слова Сплошная линия Solid Line.

  4. Измените это на Нет строки.

    ../../../_images/simple_fill_selected.png
  5. Кликните на кнопку OK.

Теперь на слое Землепользование не будет линий между областями.

2.4.4. ★☆☆ Попробуй себя:

  • Снова измените символы слоя Вода, чтобы он имел более темный синий контур.

  • Измените симбологию слоя Воды на разумное представление водных путей.

Помните: вы можете использовать кнопку Открыть панель стилей слоя symbology Open the Layer Styling panel и увидеть все изменения сразу. Данная панель также позволяет вам отменять отдельные изменения при использовании символизирования слоя.

2.4.5. ★★☆ Следуй за мной: Видимость на основе масштаба

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

В нашем случае мы можем решить скрыть здания от просмотра в небольших масштабах. Например, эта карта…

../../../_images/buildings_small_scale.png

… не очень удобная. Здания трудно различить в таком масштабе.

Чтобы запустить визуализацию на основе масштаба:

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

  2. Активируйте вкладку Rendering.

  3. Запустите визуализацию на основе масштаба, кликнув на флажок под названием Видимость в зависимости от масштаба Scale dependent visibility:

  4. Измените минимальное значение Minimum на 1:10000.

    ../../../_images/scale_dependent_visibility.png
  5. Кликните на кнопку OK.

Проверьте эффект от этого, увеличивая и уменьшая масштаб карты, отмечая, когда слой зданий исчезает и появляется вновь.

Примечание

Вы можете использовать колёсико мыши для постепенного приближения, или использовать инструменты масштабирования, чтобы приблизить окно:

zoomIn zoomOut

2.4.6. ★★☆ Следуйте за ним: Добавление слоев символов

Теперь, когда вы знаете, как изменить простую символику слоев, следующим шагом будет создание более сложной символики. QGIS позволяет делать это с помощью слоев символа.

  1. Вернитесь на панель свойств символов слоя землепользование (нажав на :guilabel:Простая заливка в дереве слоев символов).

    В этом примере текущий символ не имеет контура (т.е. использует стиль границы Не линия).

    ../../../_images/simple_fill_selected.png
  2. Выберите Fill на дереве и кликните на кнопку Добавить слой символа symbologyAdd Add symbol layer. Диалоговое окно изменится с добавлением нового слоя символа, и будет выглядеть примерно так:

    ../../../_images/new_symbol_layer.png

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

Теперь есть второй слой символа. Поскольку здесь сплошной цвет, он, конечно же, полностью скроет предыдущий вид символа. Кроме того, у него есть стиль границы Сплошная линия Solid Line, который нам не нужен. Очевидно, что данный символ необходимо изменить.

Примечание

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

Выбрав новый слой символа Простая заливка Simple Fill:

  1. Установите стиль границы на Не линия, как и раньше.

  2. Измените стиль заливки на любой, кроме Сплошная Solid или Без кисти No brush. Например:

    ../../../_images/new_fill_settings.png
  3. Кликните на кнопку OK.

Теперь вы можете видеть свои результаты и при необходимости поправлять их. Вы даже можете добавить несколько дополнительных слоев символов и таким образом создать своего рода текстуру для своего слоя.

../../../_images/multiple_symbol_layers.png

Это весело! Но, вероятно, слишком много цветов, чтобы применять к реальной карте…

2.4.7. ★★★☆ Попробуйте себя:

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

2.4.8. ★★☆ Следуйте за ним: Упорядочивание уровней символов

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

  1. Придайте слою дороги дополнительный символьный слой (используя метод добавления символьных слоев, продемонстрированный выше).

  2. Задайте для базовой линии Ширину штриха Stroke width of 1.5 и черный цвет.

  3. Задайте новому верхнему слою толщину 0.8 и белый цвет.

Вы заметите, следующее:

../../../_images/bad_roads_symbology.png

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

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

Чтобы изменить порядок слоев символов:

  1. Выберите самый верхний слой Линия Line на дереве слоев символов.

  2. Кликните Advanced ► Symbol levels… в правом нижнем углу окна.

    ../../../_images/symbol_levels_main_dialog.png

    Это откроет диалоговое окно:

    ../../../_images/symbol_levels_dialog.png
  3. Проверьте checkbox Включены ли уровни символа Enable symbol levels. Затем вы можете установить порядок слоев каждого символа, введя соответствующий номер уровня. Ноль (0) - нижний слой.

    В нашем случае, мы просто хотим активировать следующую опцию:

    ../../../_images/correct_symbol_layers.png

    Это отобразит белую линию над границами толстой черной линии:

  4. Дважды кликните OK, чтобы вернуться к карте.

    Карта теперь будет выглядеть так:

    ../../../_images/better_roads_symbology.png

Когда вы закончите, не забудьте сохранить сам символ, чтобы не потерять работу, если вы снова будете менять символ. Вы можете сохранить текущий стиль символа, нажав кнопку Сохранить стиль… Save Style… в нижней части диалогового окна Свойства слоя Layer Properties. Мы будем применять формат QGIS QML Style File.

Сохраните свой стиль в папке solution/styles/better_roads.qml. Вы можете загрузить ранее сохраненный стиль в любое время, кликнув на кнопку Load Style…. Прежде чем менять стиль, имейте в виду, что любой несохраненный стиль, который вы меняете, будет утерян.

2.4.9. ★★★☆ Попробуйте себя:

Снова измените внешний вид слоя дороги.

Сделайте дороги узкими и желтыми, с тонким бледно-серым контуром и тонкой черной линией посередине. Помните, что вам может потребоваться изменить порядок слоев визуализации в диалоговом окне Advanced ► Symbol levels….

../../../_images/target_road_symbology.png

2.4.10. ★★★ Попробуй себя:

Уровни символов также работают для классифицированных слоев (т.е. слоев, содержащих несколько символов). Поскольку мы еще не рассмотрели классификацию, вы будете работать с некоторыми элементарными предварительно классифицированными данными.

  1. Создайте новый проект и добавьте в него только набор данных дороги.

  2. Примените к слою файл стилей advanced_levels_demo.qml, предоставленный в exercise_data/styles. Это можно сделать с помощью комбобокса Стиль ► Загрузить стиль… в нижней части диалога Свойства слоя.

  3. Приблизите местность города СвеллендамSwellendam Swellendam.

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

    ../../../_images/correct_advanced_levels.png

2.4.11. ★★☆ Следуйте за ним: Типы слоев символов

Помимо установки цветов заливки и использования предустановленных шаблонов, вы можете использовать абсолютно различные типы слоев символов. До сих пор мы использовали только тип Простой заливки Simple Fill. Более продвинутые типы слоев символов позволяют еще больше настраивать символы под вас.

Каждый тип вектора (точка, линия и полигон) имеет свой собственный набор типов слоев символов. Сначала мы рассмотрим типы, которые существуют для точек.

Типы Точечных слоев символа

  1. Снимите флажки со всех слоев, кроме места.

  2. Измените свойства символа для слоя места:

    ../../../_images/places_layer_properties.png
  3. Вы можете получить доступ к различным типам слоев символов, выбрав слой Простой маркер Simple marker на дереве слоев символов, а затем кликните на раскрывающееся меню Symbol layer type:

    ../../../_images/marker_type_dropdown.png
  4. Изучите различные доступные вам варианты и выберите символ со стилем, который вы считаете подходящим.

  5. В случае сомнений используйте круглый Простой маркер Simple marker с белой рамкой и бледно-зеленой заливкой, с размером Size в 3.00 и шириной штриха Stroke width в 0.5.

Типы слоев линейных символов

Чтобы увидеть различные параметры, доступные для линейных данных необходимо:

  1. Измените значение Тип слоя символов для самого верхнего слоя символов слоя дороги на Маркерная линия`:

    ../../../_images/change_to_marker_line.png
  2. Выбрать слой Simple marker на дереве слоев символа. Измените свойства символа в соответствии с данным диалоговым окном:

    ../../../_images/simple_marker_line_properties.png
  3. Выбрать слой Marker line и изменить интервал на 1.00:

    ../../../_images/marker_line_interval.png
  4. Убедиться, что уровни символа указаны верно (при помощи диалогового окна Advanced ► Symbol levels, которые мы использовали ранее) пред тем, как задать стиль.

После того, как вы задали стиль, проверьте ваши результаты на карте. Как видите, эти символы меняют направление вместе с дорогой, но не всегда изгибаются вместе с ней. Это удобно для некоторых целей, но не для всех. При желании вы можете изменить слой символа, о котором идет речь, на тот, который был ранее.

Типы слоев символа полигона

Чтобы увидеть различные параметры, доступные для данных полигона необходимо:

  1. Измените Тип слоя-символа для слоя вода, как и для других слоев.

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

  3. Выбрать один из вариантов, который вам подходит.

  4. Если вы сомневаетесь, то можно применить Заливку точечным узором Point pattern fill, со следующими параметрами:

    ../../../_images/pattern_fill_size.png
    ../../../_images/pattern_fill_distances.png
  5. Добавить новый слой символа с обычным режимом Простой заливки Simple fill.

  6. Сделать его таким же светло-голубым с темно-синей рамкой.

  7. Переместить его под слой символа Заливка точечным узором с помощью кнопки Переместить вниз Move down:

    ../../../_images/simple_fill_move_down.png

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

2.4.13. ★★★ Следуйте за ним: Символика генератора геометрии

Вы можете использовать символику генератора геометрии со всеми типами слоев (точки, линии и полигоны). Полученный символ напрямую зависит от типа слоя.

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

Более того, у вас есть все возможности стилизации для изменения внешнего вида получившегося символа.

Давайте попробуем!

  1. Выберите слой вода.

  2. Кликните по Simple fill и измените  Symbol layer type на Geometry generator.

    ../../../_images/geometry_generator.png
  3. Перед тем, как приступить к написанию пространственного запроса, мы должны выбрать Тип геометрии на выходе, в результатах. В этом примере мы собираемся создать центроиды для каждого объекта, поэтому измените Тип геометрии на  Point / Multipoint.

  4. Теперь давайте напишем запрос на панели запросов:

    centroid($geometry)
    
    ../../../_images/geometry_generator_query.png
  5. Когда вы нажмете на OK, вы увидите, что слой вода отображается как слой точек! Мы только что выполнили пространственную операцию в самой симбологии слоя, разве это не удивительно?

    ../../../_images/geometry_generator_result.png

Благодаря символике генератора геометрии вы действительно можете выйти за рамки обычной символики.

★★★ Попробуй себя:

Генератор геометрии - это еще один уровень символа. Попробуйте добавить еще один Simple fill под Geometry generator.

Измените также внешний вид Простого маркера символики Генератора геометрии.

Окончательный результат должен выглядеть следующим образом:

../../../_images/geometry_generator_preview.png

2.4.14. ★★★ Следуйте за ним: Создание пользовательской SVG-заливки

Примечание

Для выполнения данного упражнения вам потребуется установить бесплатную программу для редактирования векторных изображений `Inkscape `_.

  1. Запустите программу Inkscape. Вы увидите следующий интерфейс:

    ../../../_images/inkscape_default.png

    Вам это должно быть знакомо, если вы использовали другие программы для редактирования векторных изображений, такие как Corel.

    Сначала мы изменим размер полотна карты на размер, подходящий для небольшой текстуры.

  2. Кликните на элемент меню  File ► Document Properties. Откроется диалоговое окно Document Properties.

  3. Измените Единицы Units на Пиксели px.

  4. Измените Ширину Width и Высоту Height на 100.

  5. Закройте диалоговое окно по завершении.

  6. Кликните на элемент меню View ► Zoom ► Page, чтобы просмотреть страницу, с которой вы работаете.

  7. Выберите инструмент Круг Circle:

    ../../../_images/inkscape_circle_tool.png
  8. Кликните и тащите по странице, чтобы нарисовать эллипс. Чтобы превратить эллипс в круг удерживайте кнопку Ctrl, чтобы эллипс превратился в круг, пока вы его рисуете.

  9. Кликните правой кнопкой мыши на только что созданный круг и откройте его параметры Заливка и Обводка Fill and Stroke. Вы можете изменить его визуализацию, например:

    1. Изменить цвет Заливки :guilabel:`Fill`на бледно-серо-голубой,

    2. Задать более темный цвет рамки на вкладке Мазки Stroke paint,

    3. Нарисуйте линию при помощи инструмента Ручка Stroke style.

    ../../../_images/inkscape_stroke_fill.png
  10. Нарисуйте линию при помощи инструмента Ручка Pencil:

    1. Кликните один раз, чтобы начать линию. Удерживайте Ctrl чтобы сделать привязку к приращению в 15 градусов.

    2. Переместите указатель по горизонтали и поставьте точку простым нажатием на клик.

    3. Кликните и привяжите к вершине линии и проведите вертикальную линию, заканчивающуюся простым кликом.

    4. Теперь соедините две конечные вершины.

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

    ../../../_images/inkscape_final_symbol.png
  11. Если полученный символ вас устраивает, сохраните его как landuse_symbol в директории, в которой находится курс, в каталоге exercise_data/symbols`, как SVG-файл.

Выполните следующее в QGIS:

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

  2. На вкладке symbology Символика измените структуру символа, изменив Тип слоя символа на SVG Заливка, как показано ниже.

  3. Кликните кнопку и затем Выбрать файл Select File…, чтобы выбрать картинку SVG.

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

    ../../../_images/svg_symbol_settings.png

После подтверждения диалога объекты в слое землепользование теперь должны быть покрыты набором символов, отображающих текстуру, как на следующей карте. Если текстуры не видны, возможно, вам нужно увеличить масштаб холста карты или задать в свойствах слоя большее значение Ширина текстуры.

../../../_images/svg_symbol_result.png

2.4.15. ★★☆ Следуйте за ним: Маскировка

Функция маскирования позволяет замаскировать некоторый слой символов с помощью другого слоя символов или метки.

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

  1. Загрузите файл selective_masking.qgs из набора данных в директории exercise_data/masking.

  2. Откройте окно Свойства слоя для слоя полис.

    На вкладке labelingSingle Метки вы увидите, что labelingSingle Одиночные метки уже определены.

  3. На вкладке Метки выберите labelmask Маска (а не Маски в общем списке категорий)

  4. Включите маску этикетки, установив флажок unchecked Enable mask

    Появится сообщение о том, что определенную форму маски метки можно впоследствии выбрать в качестве источника маски для маскирования других слоев символов. Давайте сделаем это.

  5. Кликните OK.

  6. Откройте окно Свойства слоя для слоя Линии.

  7. Перейдите на вкладку labelmask :guilabel:`Маски

  8. Установите флажок «Черная часть линий» на слоях с маскирующими символами

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

  9. Нажмите на флажок полис :guilabel:Маска этикетки

    Сообщение исчезнет, и вы сможете безопасно сохранить конфигурацию.

    ../../../_images/mask_selection.png
  10. Кликните OK.

Теперь вы видите, что ярлыки маскируют черную часть линий, оставляя только желтую.

../../../_images/label_masking.png

2.4.16. ★★☆ Следуй за мной: Маскировка с помощью символов точек

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

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

    На вкладке symbology Символика вы увидите, что рендер categorizedSymbol Категоризированный был определен с 3 различными символами в зависимости от значения поля Класс.

  2. Дважды щелкните на значке самолета B52 в колонке :guilabel:Символ

    ../../../_images/plane_symbology.png
  3. Нажмите кнопку symbologyAdd Добавить символьный слой и выберите Маска Тип символьного слоя`

    Под корневым символом Маркер (слой символов) > Маркер (слой символов) > Простой маркер (слой символов) появляется новая иерархия Маска (слой символов).

    ../../../_images/mask_hierarchy.png

    Теперь давайте определим маску, которая будет идентична нашему маркеру плоскости, но немного больше.

  4. Выберите только что созданный слой символов Простой маркер и измените его :guilabel:Тип слоя символов на SVG маркер

  5. Задайте путь к SVG-файлу такой же, как у уже существующего SVG-маркера, а размер - побольше (24 миллиметра - вполне подходящий вариант для данного случая использования).

    Цвет маски здесь не имеет значения, при маскировании используется только форма. Порядок слоев символов также не имеет значения в этой ситуации.

    Вы должны получить что-то подобное:

    ../../../_images/point_masking.png
  6. Повторите те же операции с символом Jet.

  7. Кликните OK.

  8. Откройте окно Свойства слоя для слоя Линии.

  9. Перейдите на вкладку labelmask Маски.

    Флажок «Черная часть линий из слоев с маскированными символами» уже установлен в предыдущей конфигурации.

  10. Снимите флажок Маска символа полиса и установите флажки B52 и Jet Маска символа слоя`

  11. Кликните OK.

Теперь вы видите, что черные плоскости маскируют черную часть линий, и видна только желтая часть.

../../../_images/points_masking.png

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

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

2.4.18. Дальнейшее чтение

Примеры красивых карт Examples of Beautiful Maps

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

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

Примечание

Вы не забыли сохранить вашу карту недавно?