Вибір лише однієї лінії контуру для маркування в QGIS?


12

Чи можливо вибрати лише одну лінію контуру для маркування?

У мене є чимало міток для кожного рядка, і я вважаю за краще маркувати лише основні, такі як 1000 mі1500 m


Не впевнений, чи це дублікат, але чи можете ви подивитися на gis.stackexchange.com/q/89501/1297 та gis.stackexchange.com/q/59778/1297, щоб дізнатись, чи наближають вас до того, що ви шукаю? І тоді я думаю, що це допоможе вашому питанню, якби ви вказали детальну інформацію про те, що ви спробували, і, можливо, куди йде не так.
SaultDon

Відповіді:


13

У QGIS 2.6 (можливо, і більш ранні версії, я не знаю) ви можете це зробити у розділі Властивості шару, Labelsвкладка, Renderingрозділ. Приблизно на половині списку параметрів візуалізації є кнопка, яка дозволить вам написати вираз, який визначатиме список функцій, які насправді будуть позначені міткою. Твій вираз буде щось на кшталт "Elevation" IN (1000, 1500). Ось кнопка (жовтого кольору), у мене цей набір призначений лише для контурів мітки зі значенням висоти 32:

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


11

Одним із підходів було б завантаження контурного шару та стилювання його. Потім знову завантажте той же шар і застосуйте фільтр (клацніть правою кнопкою миші на шарі та перейдіть до пункту «Фільтр ..»). Використовуйте вираз фільтра, подібний до зображеного на малюнку. У моєму випадку я хотів великих контурів з вертикальними інтервалами 50 метрів, а поле, що містить значення висоти, називалося "prop_value".

Коли відфільтрований шар, що показує основні контури, завантажився, нанесіть контурні мітки та (якщо потрібно) зміцніть стиль лінії, як показано.

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

Вираз фільтра:

("prop_value" % 50) = 0

також підбере контури з вертикальними інтервалами 50 метрів. Працює з базами даних Spatialite, не впевнені у форматі файлів.


6

Я використовую такий підхід, який робить маркування та відображення контурів за умовами досить простим.

Я використовую "Властивості, визначені даними" ширини символу лінії та кольорів контурів із виразом (див. Скріншот 1), за допомогою якого ви можете застосовувати різні ширини рядків на основі спеціальних умов та подібного виразу для маркування (див. Скріншот 2).

Просто введіть потрібні значення до виразів і це все.

Тобто, якщо ви хочете приховати контури, відмінні від 500 м, ви можете використовувати цей вираз для визначених даними властивостей символу рядка:

CASE WHEN Elevation / 500 - floor(Elevation / 500) =  0 then 
   color_rgba(255,255,255,100) 
else 
    color_rgba(255,255,255,0) 
end

тобто для маркування лише інтервалів 500 м використовуйте цей вираз для:

CASE WHEN Elevation /500 - floor(Elevation / 500) = 0 THEN Elevation || ' m' END

тобто для застосування різної ширини рядка використовуйте такий вираз для визначених даними властивостей:

CASE WHEN Elevation / 100 - floor(Elevation / 100) = 0 THEN 
    0.25 
WHEN Elevation / 50 - floor(Elevation / 50) = 0 THEN 
    0.15 
ELSE 
    0.1 
END

скріншот 1 скріншот 2


@catindri, Розум, щоб перевірити відповідь ..
Kay

3

Іншим зручним виразом є "ELEV" LIKE '%00'(крок 100м) або "ELEV" LIKE '%00' OR "ELEV" LIKE '%50'(крок 50м) або "ELEV" LIKE '%0'(крок 10м) тощо, де "ELEV" - це поле моїх даних. Другий варіант працює лише у тому випадку, якщо 50 є кратним інтервалу (10м або 5м ...).

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