Создание комплексных условных знаков в QGIS: "шлюз"

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
Эта страница опубликована в основном списке статей сайта
по адресу http://gis-lab.info/qa/qgis-symbol-gate.html


Пошаговый пример создания сложного условного знака


Новая символика в QGIS позволяет создавать очень сложные условные знаки. В версии 1.7 она будет ещё более развитой, чем прежде. Встроенными средствами можно добиться очень многого, главное знать с какой стороны подойти.

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

Вот пример сложного в исполнении условного знака - шлюз:

Условный знак шлюза

Может показаться, что построить его средствами QGIS просто невозможно, однако это не так. Вот так он выглядит после экспорта из компоновки карты:

Условный знак 'шлюз' в QGIS (река - отдельный полигональный слой)

Условный знак "шлюз" в QGIS (река - отдельный полигональный слой)

Как же создать такую красоту?

С этим знаком есть две большие проблемы: отгибающиеся по краям линии, и треугольник, режущий шлюз посередине. Первым делом надо решить, как поступить с самым сложным пунктом - треугольником посередине шлюза, две стороны которого обведены, а третья - нет; плюс он должен быть прозрачным. Следуем следующей логике - шлюз всегда располагается над водой, значит, треугольник не обязательно должен быть прозрачным, он должен быть цвета воды! Что касается отгибов линий, то среди предустановленных маркеров есть такие, которые подойдут для их имитации.

Приступим. Идём в "Настройки" → "Управление стилями" → "Line" → "Add". Нам понадобятся 6 линий: 4 маркерных (все маркеры входят в стандартный набор QGIS) и 2 простых (жмём 5 раз на зелёную кнопочку "+" под окном слоёв символов ("Symbol layers"), чтобы у нас стало 6 линий). Так они располагаются послойно сверху вниз:

  1. Маркерная линия - треугольник, цвета воды, маскирующий нижнее ребро треугольника.
  2. Маркерная линия - треугольник с чёрной обводкой и заливкой цвета воды.
  3. Простая белая линия.
  4. Простая чёрная линия - создаёт чёрную кайму по краям.
  5. Маркерная линия - закрывающий маркер (повёрнутая на бок галочка) - характерный элемент условных знаков переправ.
  6. Маркерная линия - открывающий маркер (повёрнутая на бок галочка) - характерный элемент условных знаков переправ.

Ниже приведены настройки использовавшиеся для его создания. Красным прямоугольником выделены настройки в которые вносились изменения. Для уменьшения количества рисунков настройки "Свойств слоя" ("Symbol layer properties") и "Свойств знака" ("Symbol properties") показаны на одном рисунке (только для маркерных линий).

Начнём разбор с самого нижнего слоя нашего условного знака и будем подниматься выше, пока не достигнем самого верхнего - так будет удобнее объяснять. В самом низу (6-й слой) расположим открывающий маркер:

  • Выделяем самую нижнюю линию и в поле ("Symbol layer type") "Тип слоя" (доступны опции: "простая линия", "маркерная линия", "обрамление линии") выбираем "маркерная линия" ("Marker line"). Чёрная дефолтная линия превращается в ряд красных кружочков.
  • В "Свойствах слоя" ("Symbol layer properties") выбираем "on first vertex only".
  • Далее нажимаем кнопку "Изменить" ("Change"). Открывается диалог "Свойства знака" ("Symbol properties").
  • Выбираем маркер в виде галочки.
  • Выставляем нужный "Цвет обводки" ("Border color") - чёрный (уже стоит по умолчанию).
  • "Размер" ("Size") - 2,0 (уже стоит по умолчанию).
  • "Угол" ("Angle") - 0,0 (уже стоит по умолчанию).
  • "Смещение по X" ("Offset X") - 0,2 (задаём самостоятельно).

Смещение задаётся для того, чтобы получить эффект загибающихся краёв, то есть значение подбирается таким образом, чтобы крылья галочки выходили из концов чёрных обрамляющих линий создаваемого условного знака. Обратите внимание, что в окошке предварительного просмотра ("Symbol preview") "Свойств слоя" (не "свойств знака") маркеры на краях линий обрезаются, так что параметры размера и смещения маркера в окне "Свойства знака" задаются на глаз и потом исправляются после применения стиля к конкретной линии.

Вот так выглядят наши настройки для 6-го слоя:

Настройки открывающего маркера (6-й слой)

Настройки открывающего маркера (6-й слой)

Аналогично поступаем с закрывающим маркером (5-й слой), только отмечаем строку "on last vertex only" в "Свойствах слоя", а в "Свойствах знака", выбрав тот же маркер, что и в прошлый раз, задаём ему те же параметры, что и предыдущему, корме значения угла - выставляем ему значение 180,00. Вот так выглядят эти настройки:

Настройки закрывающего маркера (5-й слой)

Настройки закрывающего маркера (5-й слой)

Над открывающим и закрывающим маркерами мы расположим два слоя из простых линий. Чтобы получить эффект обрамления белой линии двумя чёрными, создадим толстую (толщина задаётся опцией "Толщина линии" ("Pen width")) чёрную линию и расположим над ней белую линию потоньше. Параметры для чёрной толстой линии (4-й слой) показаны на рисунке внизу. Обратите внимание, что выбран "Плоский" ("Flat") стиль "Концов" ("Cap style"). Объяснение будет дано ниже.

Настройки простой чёрной линии (4-й слой)

Настройки простой чёрной линии (4-й слой)

Теперь над чёрной толстой линией разместим белую линию потоньше (3-й слой). Для неё выберем стиль концов "Квадратные" ("Square"). Настройки показаны на этом рисунке:

Настройки простой белой линии (3-й слой)

Настройки простой белой линии (3-й слой)

Здесь используется один нюанс, который полезно запомнить: в новой символике линия не обрывается на последнем узле - после конечного узла идёт этот самый (пусть и совсем крохотный) "конец", который бывает трёх видов: квадратный, плоский и круглый. "Плоский" - короче остальных. Мы используем более короткий "конец" для чёрной линии внизу и более длинный - для белой линии наверху, чтобы чёрная линия не образовывала прямоугольник вокруг белой. Вот так будет выглядеть наш условный знак, если для чёрной линии в 4-м слое тоже выбрать квадратный конец:

Для чёрной линии в 4-ом слое выбраны квадратные концы

Для чёрной линии в 4-ом слое выбраны квадратные концы

Теперь создадим треугольную "прорезь" в середине нашего условного знака. Для этого нам понадобится 2 практически одинаковых маркерных слоя. Один (нижний) будет создавать треугольную "прорезь", а второй - маскировать нижнюю грань первого. Настройки для нижнего слоя (2-й слой) представлены на рисунке внизу. Для маркера выбрано положение "on central point" и "Смещение" ("Line offset") "-0,30" (чтобы нижняя грань треугольника была на одном уровне с нижним краем простой чёрной линии 4-го слоя). Для обводки треугольника выбран чёрный цвет, а цвет заливки соответствует используемому цвету воды (этот цвет используется для водных объектов в проекте по составлению условных знаков).

Настройки маркерной линии (2-й слой)

Настройки маркерной линии (2-й слой)

Наконец, в самом верхнем слое (1-й слой) выбираем маркерную линию, помещаем маркер в центральную точку знака. Отличия от предыдущего слоя заключаются в том, что на этот раз цвет обводки треугольника совпадает с цветом заливки (цвет водного объекта); треугольник имеет чуть меньший размер, чтобы не перекрывать треугольник из предыдущего слоя там где не надо и не вылезать за пределы нижней кромки условного знака; "смещение" не выставляется (то есть данный треугольник оказывается чуть ниже предыдущего):

Настройки маркерной линии (2-й слой)

Настройки маркерной линии (первый слой)

Теперь сохраняем условный знак, проверяем как он выглядит в деле, и, по результатам, корректируем настройки для маркерных линий в 5-ом и 6-ом слоях. На этом конкретном примере была продемонстрирована мощь редактора условных знаков QGIS "новая символика". Используя несколько нехитрых приёмов, описанных выше можно создавать очень сложные и красивые условные знаки для ваших проектов.