【问题标题】:QGIS 3.22 Aggregate elements from the same layerQGIS 3.22从同一层聚合元素
【发布时间】:2021-12-27 08:39:14
【问题描述】:

我有一个图层代表多个土地覆盖类别,每个类别都通过代码进行识别。 我想汇总每个类别对于代码子集的对象数量(即从 111:113 我有多少对象,从 114:222 我有多少对象?等等) 我怎样才能从属性表中做到这一点? 我想到了字段计算器,并添加了以下功能:

有人可以帮忙吗?

【问题讨论】:

    标签: qgis


    【解决方案1】:

    要使用的表达式是:

    count ("code_90", group_by:= "code_90" in (111,112,113))
    

    这会计算字段 code_90 中包含值 111、112 或 113 的特征。


    要自动创建一系列值(例如从 114 到 222),请使用以下表达式:

    count ("code_90", group_by:= array_contains (generate_series (114,222), "code_90" ))
    

    这会计算包含 114 到 222 值的特征。


    要一次计算多个范围的数量,请使用CASE 条件:

    case 
    when array_contains (generate_series (111,113), "code_90" ) then count ("code_90", group_by:= array_contains (generate_series (111,113), "code_90" ))
    when array_contains (generate_series (114,122), "code_90" ) then count ("code_90", group_by:= array_contains (generate_series (114,122), "code_90" ))
    when array_contains (generate_series (123,133), "code_90" ) then count ("code_90", group_by:= array_contains (generate_series (123,133), "code_90" ))
    when array_contains (generate_series (134,144), "code_90" ) then count ("code_90", group_by:= array_contains (generate_series (134,144), "code_90" ))
    end
    

    计算以下 4 个范围的特征:111 到 113、114 到 122、123 到 133 和 134 到 144。


    相同,但无需为每个范围手动定义一行。在括号内的第 4 行中定义一次范围(这里有 4 个范围:111 到 113 / 114 到 122 / 123 到 133 / 134 到 144),然后获得所有范围的正确计数:

    array_max(
        with_variable (
            'list',
            'map(111,113,114,122,123,133,134,144)',
            array_foreach(
                map_akeys( eval(@list)),
                case
                    when array_contains (generate_series (@element,map_get( eval(@list),@element)), "code_90" ) 
                    then count ("code_90", group_by:= array_contains (generate_series (@element,map_get( eval(@list),@element)), "code_90" ))
                end
            )
        )
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-24
      • 1970-01-01
      • 2016-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多