仅显示大写文本作为QGIS中的标签?


15

使用QGIS 2.14,现在可以看到基于规则的标签。我希望显示带有大写字母的城镇的标签(例如CRAWLEY),而不显示带有小写字母的城镇的标签(例如Faygate)

该属性表不区分其名称之外的不同城镇。有办法吗?

在此处输入图片说明

Answers:


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", '')。无论哪种方式,我认为您都应该将其发布为答案 ;)
约瑟夫(Joseph
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.