Отображать только прописные буквы в виде меток в QGIS?

15

Используя QGIS 2.14 и посмотрите, что теперь есть маркировка на основе правил. Я хочу показать метки городов с заглавными буквами (например, CRAWLEY) и не показывать метки городов с строчными буквами (например, Faygate)

Таблица атрибутов не отличает разные города от их названия. Есть ли способ сделать это?

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

Пол Г
источник

Ответы:

20

Для этого вам не нужен стиль, основанный на правилах.

  1. Выберите параметр « Показать метки для этого слоя» (или, если хотите, на основе правил), щелкните значок « Выражение» и перейдите в редактор функций, как показано ниже.

    Редактор функций

  2. Создайте новый файл (или отредактируйте существующий) и введите следующее:

    from qgis.core import *
    from qgis.gui import *
    
    @qgsfunction(args='auto', group='Custom')
    def func(value, feature, parent):
        if value.isupper():
            return value
    
  3. Нажмите « Загрузить», затем перейдите на вкладку « Выражение » и введите следующее:

    func("fieldName")
    
  4. Затем примените все изменения. Ваши ярлыки теперь должны содержать только те, которые являются заглавными буквами.


Пример :

Перед запуском функции:

Перед функцией

После запуска функции:

После функции

Джозеф
источник
8
Вместо использования здесь пользовательской функции python вы также можете использовать встроенное выражение"fieldName"=upper("fieldName")
ndawson
3
@ndawson - Ну, это очень удобная функция, спасибо! Хотя ваше выражение возвращает только логическое значение, вы можете вместо этого использовать if("fieldName" = upper("fieldName"), "fieldName", ''). В любом случае, я думаю, вы должны опубликовать это как ответ ;)
Джозеф