Можно ли выбрать только одну контурную линию для маркировки?
У меня есть многочисленные ярлыки для каждой строки, и я предпочитаю маркировать только основные, такие как 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