我正在尝试使用QGIS Atlas工具来构建学生的“散点图”。显示215所学校的学校和就读该学校的学生。

学校层是覆盖层,并且受SCHNUM(学校编号)值的驱动。这可以正常工作,也就是说可以正确驱动页面。

但是,如何仅显示来自其他层(在这种情况下是学生点层)的要素,这些要素与相应的SCHNUM值匹配覆盖层中的当前功能?

我还想将覆盖层(学校)切换为“隐藏”,并使用相同的技术仅从重复的学校层中显示当前学校。

那里是这里的演示文稿,暗示了通过$atlasfeatureid使用图层渲染规则设置,但我不知道它是如何工作的。

我还发现了这个Bug跟踪器页面,该页面显示了此工作原理,但同样,我无法使它适用于我的数据:

评论

即使有问题,也很抱歉将此作为答案发布。是否有为此推荐的视频教程?我试着跟进,总以某种方式总是迷路。有同样的问题。

#1 楼

确实,您需要使用基于规则的符号系统来实现您想要的。

您需要为要显示的内容创建一个规则,并为所有其他内容创建ELSE规则。



在ELSE规则中,取消选中符号复选框以使其不可见。



从coverage层隐藏其他功能

仅显示当前图集功能的规则如下:

$id  =  @atlas_featureid 




注意:相信@atlas_featureid变量是2.12语法。我认为在2.8.x中,您需要使用一个名为$ atlas_featureid的函数。

隐藏当前图集功能之外的功能

配方与以前相同,一个否则,规则将隐藏功能,一个将显示。

对于您的特定问题,您似乎拥有一个名为SCHNUM的共享属性。在这种情况下,规则可以是:

"Layers_field" = attribute (@atlas_feature, 'coverage_layer_field_name')


在您特定的情况下:

"SCHNUM"  =  attribute( @atlas_feature , 'SCHNUM')


注意区别在两个SCHNUM之间。第一个双引号表示存储学校代码的字段的每个当前图层要素的值。第二个用单引号引起来的字符串是存储学校代码的coverage层的名称。

注意:我再次认为@atlas_feature变量是2.8版中的“新”东西。 x您将需要使用函数$ atlas_feature



评论


与计算交叉点相比,Alexandre的解决方案非常有效。但是,我要显示的是一个分类图层(专题图)。在这种情况下如何应用您的解决方案?

–viniciovcl
20年6月27日在18:29

那是另一个问题。答案涉及几个步骤。询问并ping我,我将尝试提供答案。

–亚历山大·内托(Alexandre Neto)
20年6月27日在20:57