QGIS - 按表达式选择 - 如何根据条件选择最小多边形

问题描述 投票:0回答:1

我有一个非常奇怪的多边形数据集,如下所示:

id 文字
1 A
2 B
2 B
3 C

当id和文本相同时,我想通过表达式选择最小的多边形。

我尝试了 IF 表达式,但没有成功

expression qgis
1个回答
0
投票

这个表达式可能有效(使用换行符是可选的):

$area = aggregate( 'test',
'min',
$area, 
count(1, "id" || '_' || "text") > 1 
  and "id" = attribute(@parent, 'id') 
  and "text" = attribute(@parent, 'text')
)

说明:

  • 将表名“test”(一次)和字段名“id”和“text”(各三次)替换为您自己的
  • 使用聚合检查当前记录中的几何图形面积
  • 聚合函数的第一个参数是要从中收集数据的图层名称,即当前图层“test”本身
  • 合计为“最小值”(选择最小值)
  • 应计算最小值的表达式是引用表中的几何面积(指定为聚合函数中的第一个参数)
  • 所引用的表格已被过滤,分为三个部分:
  • [1] 字段“id”和“text”的串联应该有重复项:计数必须产生大于 1 的数字
  • [2] 引用表中的字段“id”应与当前记录中的字段“id”相同(其中当前表记录是通过@parent 访问的)
  • [3] 引用表中的字段“text”应与当前记录中的字段“id”相同

但是,如果表达式应选择所有非重复特征加上仅重复特征中的最小几何特征,则删除“计数”过滤器。

© www.soinside.com 2019 - 2024. All rights reserved.