Страница 1 из 1

Создание сложных типов линий (с использованием маркера)

Добавлено: 11 окт 2021, 23:12
Nikolya2048
Всем добрый день! Есть вопрос по созданию сложных типов линий в QGIS. Сделал в SVG маркер, который должен повторяться через каждые 50 мм на листе. Вычислил, что со всеми отступами линия должна быть длиной 44 мм. Начал составлять линию, которая в итоге выглядет не так как нужно. Во вложении пример того, что не получается. По идее рыбка должна занять место в разрыве линии. Как реализовать?

Re: Создание сложных типов линий (с использованием маркера)

Добавлено: 12 окт 2021, 00:53
Ivor
Никак. Это баг QGis с масштабированием и округлением. Всё не соберусь им багрепорт написать по этому поводу.

Re: Создание сложных типов линий (с использованием маркера)

Добавлено: 12 окт 2021, 11:09
Nikolya2048
Ivor, и это никак не решить? Может это можно как-то обойти, но что бы линии были как надо

Re: Создание сложных типов линий (с использованием маркера)

Добавлено: 12 окт 2021, 14:11
konst555
В вашем случае обойти проблему иногда можно при помощи маркера-подложки.
Выглядеть это должно так:
-Line
- Marker Line
- SVG Marker
- Simple Marker (или второй SVG маркер-маска подложка фонового цвета)
- Simple Line

Если фон однотонный, то это вполне работает.

Re: Создание сложных типов линий (с использованием маркера)

Добавлено: 12 окт 2021, 15:16
Nikolya2048
konst555, спасибо за подсказку, попробую)

Re: Создание сложных типов линий (с использованием маркера)

Добавлено: 13 окт 2021, 14:52
Nikolya2048
konst555, да, так работает. Когда используется непрерывная линия можно использовать маску под определнным маркером, тогда все хорошо. При чем маркеры он расставляет правильно, а вот линию разрывает не точно

Re: Создание сложных типов линий (с использованием маркера)

Добавлено: 14 окт 2021, 08:58
konst555
symbol_line.png
symbol_line.png (78.56 КБ) 2619 просмотров
symbol_line.png
symbol_line.png (78.56 КБ) 2619 просмотров

Re: Создание сложных типов линий (с использованием маркера)

Добавлено: 14 окт 2021, 09:30
konst555
Извините, случайно дублировал картинку.
Есть еще один способ делать такие линии. Лично мне он очень сильно не нравится, но широко используется в других ГИС програмах.

На картинке показана сама идея - наложение на линию символа из символьных шрифтов.
В функцию char() подставляется десятичное значение, а в таблице символов - шестнадцатеричное. Имейте это ввиду. Если лень считать, то воспользуйтесь калькулятором для перевода.
Задаем выравнивание на линию, устанавливаем промежуток повторения.
Назначаем размер маски, указываем какой объект маскировать (нашу линию).
Устанавливаем цвет, размер для линии и символа.
Готово.

Какие есть недостатки у этого метода.
- Отрисовка линии и символов (подписей) не идет одновременно. Поэтому, если выше будет объект, то символы будут проступать на нем. Возможно, это можно упорядочить. Не пробовал.
- Нужно наличие шрифта, символов. Мы знаем сколько таскает с собой символьных шрифтов ArcGIS, MapInfo и др. Конечно проще использовать SVG картинки, но подписи - это текстовый объект. Даже добавленный HTML не поддерживает SVG (может начнет когда нибудь ?)
- Символ не будет отображаться в легенде. Это можно обойти, если тупо нарисовать картинку легенды как патч один раз и использовать его. Тогда внешний вид будет как надо, а цвет будет соответствовать цвету линии.

Главное достоинство: нет никаких лишних контуров, нижние слои могут быть любые.

Удачи!
Спасибо за вопрос. Давно хотел вернуться к этой проблеме, но не было необходимости в таких линиях.