Предотвращение наложения текстовых меток на другие маркеры в QGIS?

14

Есть ли в QGIS способ предотвратить перекрытие текстовых меток значками, используемыми для маркировки точечного слоя?

В приведенном ниже примере карты есть два слоя:

  1. Слой дорог, который маркируется с использованием нового механизма маркировки.
  2. Точечный слой, который использует иконки SVG для отображения щитов шоссе.

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

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

  1. Добавление столбца в файл dbf точечного слоя.
  2. Заполнение добавленного столбца пустым или пробелом.
  3. Включение надписи [новый стиль] QGIS для добавленного столбца.

Это путь или есть лучший метод?

Образец карты

Информация QGIS: Я использую версии 1.7.4 и недавно скомпилированную версию 1.8 в Mac OS 10.7.4. Версии для Linux и Windows также доступны для меня.


Обновление прогресса : метод, который я описал выше, работает, хотя требуется две модификации процесса.

  1. Вместо использования пробела или пустого значения необходимо использовать неразрывный пробел . Во время тестирования я обнаружил, что поля с нулевым значением не отображаются, а поля, содержащие только пробелы, преобразуются в нулевое значение . (См. Эту страницу Википедии для получения информации о том, как печатать неразрывный пробел .)
  2. При установке слоя Этикетировочных Настроек, на вкладке Дополнительно установите Размещение в Over - Пойнт . Также установите приоритет так , чтобы он был выше, чем у любых других помеченных слоев.

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

Образец карты 2

Протестировано с QGIS 1.7 и недавно скомпилированной версией 1.8 на Mac OS 10.7.4.

DMan
источник
1
Вы также можете ответить на свои вопросы. Я хотел бы проголосовать за ваше решение.
Подземье
Вы можете сделать конкатенацию, как я: здесь
JSSTA

Ответы:

8

Лучшее последовательное решение, которое у меня есть до сих пор, соответствует тому, что я изложил выше. Предполагая, что файл SHP используется, шаги:

  1. Откройте файл dbf с помощью приложения для работы с электронными таблицами, такого как LibreOffice, Excel или подключаемого модуля QGIS Table Manager.
  2. Добавьте столбец в таблицу. Если требуется тип данных, используйте строку.
  3. Заполните ячейки неразрывным пробелом . После завершения сохраните изменения. (См. Эту страницу Википедии для получения информации о том, как печатать неразрывный пробел.)
  4. Откройте Настройки маркировки слоя для точечного слоя. На вкладке «Дополнительно» установите для «Места размещения» значение «Точка» и установите приоритет так, чтобы он был выше, чем у любых других помеченных слоев.
DMan
источник
2
В 2.14 вам даже не нужно добавлять новый столбец, просто поставьте «» в качестве метки
Raphael
3

Я знаю, что это старый файл, но вы можете добавить столбцы «Координата X» и «Координата Y» (двойная точность) в таблицу, содержащую эту информацию, а затем перейти на вкладку «Параметры, определенные в данных» в разделе Метки в свойствах слоя и изменить Координата X и Y координата соответственно. Сделав это, вы можете переместить метку от руки, используя кнопку перемещения метки.

Джефф Камерон
источник
1

Я только что отправил другой ответ на подобную проблему. Подход использует символы svg вместо слоев и использует данные, определенные переопределением, чтобы установить путь к отдельному символу svg для каждого значения атрибута, cp. мой ответ на символы над метками на карте QGIS

Йохен Шварце
источник
0

Вы можете поэкспериментировать со смещением метки.

Я считаю, что это позволяет позиционировать этикетки более динамично, если я установлю их на 2 мм или около того.

Уилли
источник
Нет, я не пытался это сделать. Основная причина, по которой я не изменил расположение меток, заключается в том, что на других участках карты (не изображенных) дорожная сеть значительно плотнее. В приведенном выше примере перемещение значка примерно на 2 мм (в любом направлении) решит проблему. Однако в других частях карты он, вероятно, будет толкать значок глубже в другой ярлык.
DMan
Попробуйте, этикетка, скорее всего, переместится в новую динамическую позицию. Может быть, не то, что вы хотите, но единственный способ узнать это попробовать. Опция, которую я использую, находится на вкладке «Дополнительно» нового инструмента надписей (который находится на панели инструментов, а не в диалоговом окне свойств слоя).
Вилли