Прямі лінії від мітки до функції QGIS?


11

Я намагаюся зробити це позначити ряд точкових особливостей, але через щільність особливостей точок мені доведеться перемістити мітки від точкових функцій. Потім я хочу використовувати просту пряму (не стрілку), щоб показати, яка мітка відноситься до якої точки.

Я використовував плагін "Легкі спеціальні мітки", щоб генерувати мітки та переміщувати їх туди, куди я їх хочу. Але я не можу зробити це створити просту тонку пряму лінію між точкою та таблицею.

Найкраще, що я досяг, - це змінити тип шару символів (шар міток> властивості> стиль) на «стрілка», зняти прапорці «зігнуті стрілки» та зняти галочку «повторити стрілку на кожному сегменті». А потім зробіть довжину та товщину голови 0 та зробіть “ширину стрілки” та “ширину стрілки на старті” якомога більше. Але це все-таки створює чітку лінію. Дивіться зображення А.

Я спробував встановити "символ пізніше" на "просту лінію", але це призводить до рядків з перегинами / вершинами / кутами в них. Дивіться зображення B.

В ідеалі, я б хотів, щоб прямі лінії між мітками та функцією (наприклад, на зображенні A) були такою ж шириною, як і на зображенні B.

Приклади двох типів маркування

Відповіді:


11

Ви можете використовувати вираз для створення лінії між міткою та геометрією

введіть тут опис зображення

Вираз:

CASE 
 WHEN (label_x IS NOT NULL AND label_y IS NOT NULL) THEN
  make_line(centroid($geometry),make_point(label_x -2,label_y), make_point(label_x ,label_y))
ELSE
  NULL
END

І це повинен мати результат:

введіть тут опис зображення


Просто сторонне позначення, якщо мітки переміщуються вручну за допомогою панелі інструментів властивостей маркування, а позиція зберігається в проекті, змінні label_x, y змінюються на поля, які називаються "auxiliary_storage_labeling_positionx" та "auxiliary_storage_labeling_positiony".
Габріель К.

1
Якщо make_point(label_x -2,label_y)розмістити середню точку 2 одиниці на захід, як ви робите тут , ярлики на західному узбережжі будуть виглядати смішно. Також робота в іншому масштабі зробить це марним. Було б краще встановити цю точку щодо відстані до мітки та відносного положення від центру.
Альберт

2

Відповідь Карлоса робить горизонтально вирівняним лідером на кінці етикетки, хоча лише одна менша точка в генераторі геометрії дає прямі лінії. У своєму прикладі я перемістив мітки вручну, використовуючи панель інструментів для маркування в QGIS 3.0.3. Зауважте, що техніку можна знайти у питанні 232709 .

Єдині зміни, які мені потрібно було внести, - це значення x, y у моєму виразі:

CASE
   WHEN ("auxiliary_storage_labeling_positionx" IS NOT NULL AND "auxiliary_storage_labeling_positiony" IS NOT NULL) THEN
        make_line(centroid($geometry),make_point("auxiliary_storage_labeling_positionx","auxiliary_storage_labeling_positiony"))
   ELSE
      NULL
END

Що стосується самих лідерів лідерів, дерево символів виглядає так:

  • Заливка
    • Генератор геометрії
      • Лінія
        • Маркерна лінія
          • Маркер
            • Простий маркер
          • Проста лінія

Щоб переконатися, що лідери закінчуються в центрі міток, просто відредагуйте значення в даних, визначених вирівнюванням міток, на "Центр" для горизонталі та "Половина" для вертикалі. Для стилізації лінії до всього, що вам потрібно, використовуйте просту лінію, вкладену в маркерну лінію.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.