Выбираете только одну контурную линию для маркировки в QGIS?

12

Можно ли выбрать только одну контурную линию для маркировки?

У меня есть многочисленные ярлыки для каждой строки, и я предпочитаю маркировать только основные, такие как 1000 mи1500 m

catindri
источник
Не уверен, что это дубликат, но вы можете взглянуть на 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, не уверен насчет шейп-файлов.

nhopton
источник
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, возражай, чтобы проверить ответ ..
Кей
3

Другим удобным выражением является "ELEV" LIKE '%00'(шаг 100 м) или "ELEV" LIKE '%00' OR "ELEV" LIKE '%50'(шаг 50 м) или "ELEV" LIKE '%0'(шаг 10 м) и т. Д., Где «ELEV» - это мое поле повышения данных. Второй вариант работает, только если 50 кратен интервалу (10 м или 5 м ...).

Антонис
источник