Как установить прозрачность для каждого многоугольника в шейп-файле в QGIS?

13

Как установить прозрачность для каждого многоугольника в шейп-файле в QGIS?

Например:

полигон с полем «значение» = 1 должен быть полностью прозрачным, тогда как поле с полем «значение» = 0,4 должно иметь значение прозрачности 40%. Цвет полигонов должен зависеть от другого поля. Желательно, чтобы я делал это, используя один слой, но с двумя слоями в некоторых режимах смешивания тоже можно.

RutgerH
источник

Ответы:

17

Вы можете использовать данные определенные свойства для этого. Используйте вкладку стиля в свойствах слоя и нажмите кнопку выражения справа от цвета.

Там вы можете использовать функцию color_rgba( red, green, blue, alpha )для создания цвета. Все значения должны быть между 0 и 255.

Пример:

color_rgba( 255, 0, 0, ( 1 - "transparency" ) * 255 )

Это даст вам полностью красный стиль с альфа-каналом, определенным из поля «прозрачность» согласно вашей спецификации в вопросе.

В редакторе выражений вы найдете ряд других функций, связанных с цветом, которые могут лучше соответствовать вашим потребностям, просто изучите их и прочитайте их документацию непосредственно в редакторе выражений.

Другой пример номинальных (качественных) значений, которые вы обычно классифицируете, - это работа в пространстве hsv:

Есть функция color_hsva( hue, saturation, value, alpha )для создания цвета. Значения должны быть между

  • оттенок: 0-360 (значение см. ниже)
  • значение и насыщенность: 0-100
  • альфа: 0-255.

Пример:

color_hsva( 
  CASE 
    WHEN "classification" = 'red' THEN 0
    WHEN "classification" = 'blue' THEN 240
  END CASE, -- hue
  80,  -- saturation
  80,  -- value
  ( 1 - "transparency" ) * 255  -- alpha
)

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

Для QGIS> = 2.12 также рассмотрим ответ @ndawsons.

Матиас Кун
источник
Смотрите соответствующий ответ ниже для QGIS> = 2.12
ndawson
11

В ответ на ответ Матиаса, в QGIS> = 2.12 вы можете использовать определенный цвет заливки данных с выражением:

 set_color_part(@value, 'alpha', ( 1 - "transparency" ) * 255 )

Это выражение принимает исходный цвет многоугольника (@value) и заменяет альфа-канал (непрозрачность) значением, рассчитанным из поля). Это означает, что вы можете установить выражение цвета заливки, а затем успешно продолжить работу и использовать классифицированные или градуированные средства визуализации для автоматической установки базового цвета заливки, и правило непрозрачности будет по-прежнему соблюдаться. Не нужно жестко кодировать значения rgb таким образом!

ndawson
источник
1
Хороший и гибкий подход!
Матиас Кун
Похоже, это не работает в QGIS 3+. После того как я добавлю это выражение, все многоугольники приобретают один цвет с одинаковой непрозрачностью.
Роброк
3

Вы также можете установить эти значения в Свойства слоя слоя (щелкните правой кнопкой мыши -> Свойства).
Используйте Стиль -> Категоризованный, затем выберите столбец, который вы хотите использовать, например, «значение», выберите цвета в цветовой шкале и нажмите «Clasify».
Затем вы можете определить цвет каждого значения и его прозрачность.

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

Если вы добавляете новые значения в используемый слой, нажмите Clasify, чтобы добавить их в существующий стиль.

Мартин
источник
1
Это не позволит использовать разные поля для прозрачности и классификации, как указано в вопросе.
Матиас Кун