You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

QGIS中使用aggregate聚合函数为拼接字段值添加索引的实现方法

实现方案

可以通过aggregate结合数组处理函数实现需求,修改后的代码如下:

with_variable(
    'cable_arr',
    aggregate(
        layer:='cables',
        aggregate:='array_agg', 
        expression:= to_string(name), 
        filter:=within(geometry(@parent),buffer($geometry,0.2))
    ),
    array_to_string(
        array_foreach(
            generate_series(1, array_length(@cable_arr)),
            @element || ':' || @cable_arr[@element - 1]
        ),
        ','
    )
)

逻辑说明

  • 先将aggregate的聚合类型从concatenate改为array_agg,把符合条件的电缆ID存储为数组存入临时变量
  • 通过generate_series生成从1开始、和数组长度相等的序号序列
  • 遍历序号序列,拼接序号和对应位置的电缆ID,QGIS数组下标从0开始,因此取元素时需要减1
  • 最后将处理后的数组转为逗号分隔的字符串即可

自定义排序(可选)

如果需要按指定规则给电缆排序后再编序号,可以在aggregate函数中添加order_by参数:

aggregate(
    layer:='cables',
    aggregate:='array_agg', 
    expression:= to_string(name), 
    filter:=within(geometry(@parent),buffer($geometry,0.2)),
    order_by:=to_string(name) -- 可替换为其他需要排序的字段
)

内容的提问来源于stack exchange,提问作者franrvr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 06:09:03