Чи можливо вибрати лише одну лінію контуру для маркування?
У мене є чимало міток для кожного рядка, і я вважаю за краще маркувати лише основні, такі як 1000 m
і1500 m
Чи можливо вибрати лише одну лінію контуру для маркування?
У мене є чимало міток для кожного рядка, і я вважаю за краще маркувати лише основні, такі як 1000 m
і1500 m
Відповіді:
У QGIS 2.6 (можливо, і більш ранні версії, я не знаю) ви можете це зробити у розділі Властивості шару, Labels
вкладка, Rendering
розділ. Приблизно на половині списку параметрів візуалізації є кнопка, яка дозволить вам написати вираз, який визначатиме список функцій, які насправді будуть позначені міткою. Твій вираз буде щось на кшталт "Elevation" IN (1000, 1500)
. Ось кнопка (жовтого кольору), у мене цей набір призначений лише для контурів мітки зі значенням висоти 32:
Одним із підходів було б завантаження контурного шару та стилювання його. Потім знову завантажте той же шар і застосуйте фільтр (клацніть правою кнопкою миші на шарі та перейдіть до пункту «Фільтр ..»). Використовуйте вираз фільтра, подібний до зображеного на малюнку. У моєму випадку я хотів великих контурів з вертикальними інтервалами 50 метрів, а поле, що містить значення висоти, називалося "prop_value".
Коли відфільтрований шар, що показує основні контури, завантажився, нанесіть контурні мітки та (якщо потрібно) зміцніть стиль лінії, як показано.
Вираз фільтра:
("prop_value" % 50) = 0
також підбере контури з вертикальними інтервалами 50 метрів. Працює з базами даних Spatialite, не впевнені у форматі файлів.
Я використовую такий підхід, який робить маркування та відображення контурів за умовами досить простим.
Я використовую "Властивості, визначені даними" ширини символу лінії та кольорів контурів із виразом (див. Скріншот 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