QGIS 3.0点簇渲染器,可以控制渲染顺序(z顺序)吗?


19

我一直在使用QGIS 3.0.2中的新点聚类渲染器,它很棒-比必须自己进行聚类要容易得多(而且更快)。

为了说明我的意思,这是一个使用STATS19数据和30m半径的爱丁堡道路交通事故的示例。

在此处输入图片说明

我不知道如何设置z顺序,以便在较小的群集前面绘制最大的群集。

我知道@cluster_size变量-这就是我用来缩放和着色符号的方式。为此,我使用了尺寸和颜色助手。我删除了字体标记以从每个群集中删除文本。

标记的大小定义如下:

coalesce(scale_exp(@cluster_size, 0, 50, 1, 200, 0.57), 0)

标记的颜色定义如下:

coalesce(ramp_color('custom ramp',scale_linear( @cluster_size, 0, 50, 0, 1), '#000000')

到目前为止,我已经尝试过:

  • 符号等级 -没有运气;无法选择变量名称。
  • 图层渲染>控制要素渲染顺序,然后选择@cluster_size作为排序。似乎没有效果。
  • 使用@cluster_size作为表达式的渐变样式无效

有谁知道这是否可行,或者这是此特定渲染器的限制吗?

我知道还有很多其他方法可以做到这一点(缓冲区/空间连接,插件),但是新的渲染器应该更快。还是我忽略了明显的东西?:)


它可能通过考虑属性表中的顺序来起作用。也许您将它们按升序排列,以使最大的显示为最新?如果没有功能“按属性排序功能”,则可以尝试MMQGIS插件(如果它可用于qgis 3)
Revo

谢谢@Revo。似乎可以对属性进行大小调整和排序(包括使用Cluster Point渲染器),但是只能在一个比例下使用。我尝试使用cluster_size,因为在使用群集点渲染器放大/缩小时,群集大小会动态变化。我将看一下MMQGIS(它可用于QGIS 3)
Steven Kay

Answers:


2

似乎点群集实现本身不允许这样做。

考虑点聚类渲染器 -它本质上是在渲染时分析和聚类点数据,从而创建一个新的伪层。用户无法访问该层。不能查询聚集点。不能在字段中计算@cluster_size属性。

点群集渲染器确实使用Control功能渲染顺序QgsFeatureRequest :: OrderByClause)从源继承了渲染顺序,这为使用属性和表达式进行某些巧妙的变通方法提供了可能性,但是,不能保证某些排序方案是一致的。

例如,考虑一个点图层,其渲染顺序按“纬度”属性升序排列。越北的点将显示在越南的点之上。点群集渲染器的新功能没有“纬度”属性,尽管它将从源继承该顺序的某种外观。在某些情况下,由于原始点的顺序,较南的群集会在较北的群集上渲染。


谢谢。这是一个非常清楚的解释,它也回答了我的问题,即是否有可能从聚类点(即与每个原始点关联的总体之和)计算属性。显然不是...。但是,这将是一个非常有用的功能。关于如何通过一些聪明的解决方法(尽管它不需要编码,因为我不是(还是,再次?)擅长于此),甚至以静态方式如何实现这一点的任何想法?我正在努力寻找一种类似于聚类渲染器进行聚类的工具
dorakiara,

一般而言,您可以通过使用属性来复制群集渲染器与“控制功能渲染顺序”功能的结合来实现此目的。粗略的第一步可能是缓冲点层,将缓冲的多边形中的点计数为点层中的属性。通过此属性升序控制渲染顺序。有点麻烦,不一定能在不同的规模上工作。
CrystallineEntity

我也鼓励您提出功能请求,这会将@cluster_size方法公开给“控件功能呈现顺序”功能。
CrystallineEntity
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.