QGIS表达式过滤器异常:num_etude字段特征计数始终错误
QGIS统计相同
num_etude值特征数量的问题解决 问题原因分析
你当前的表达式存在两个核心问题:
- 过滤条件逻辑错误:所有filter条件都没有针对「当前特征的
num_etude值」做匹配,而是做了无意义的自我比较(如"num_etude" = "num_etude")或仅过滤非空值,导致统计结果不是相同值的特征数量,要么是全图层非空值总数,要么仅匹配当前特征返回1。 - 计数表达式不合理:用
"num_etude"作为count的expression,会在字段值为null时跳过计数,而你需要的是匹配特征的数量,用固定值1更可靠。
正确表达式
要统计图层中与当前新建特征num_etude值相同的特征数量,使用以下表达式:
aggregate( layer:= 'ZONE_ETUDE', aggregate:='count', expression:= 1, filter:= "num_etude" = @current_feature.num_etude AND "num_etude" IS NOT NULL )
表达式说明
expression:=1:只要filter条件满足,就计1次,确保每个匹配的特征都被正确计数,不受num_etude字段值的影响。filter:= "num_etude" = @current_feature.num_etude:明确指定目标图层ZONE_ETUDE中num_etude字段的值等于当前正在编辑的特征的num_etude值,精准匹配相同值的特征。AND "num_etude" IS NOT NULL:可选,用于排除num_etude为空的特征,避免空值干扰统计结果。
结果验证
- 当图层中没有与当前输入
num_etude值匹配的特征时,返回0; - 仅有1个匹配特征时返回
1; - 存在多个匹配特征时返回对应数量。
内容的提问来源于stack exchange,提问作者Giene
相关产品推荐
相关产品推荐

