14.2. 符号选择器

符号选择器是设计符号的主对话框。可以创建或编辑标记、线或填充符号。

../../../_images/symbolselector.png

图 14.10 设计线符号

符号选择器对话框由两个主要组件构成:

  • 符号树,显示组合后形状新全局符号的符号图层

  • 以及用于配置树中所选符号图层的设置。

14.2.1. 符号图层树

符号可以由多个 符号图层 组成。符号树显示了这些符号图层的叠加层次,并被组合形成新的全局符号。此外,一旦符号属性发生更改,就会更新动态符号表示。

根据在符号树条目中选择的级别,提供了各种工具来帮助您管理树:

  • symbologyAdd 添加新符号图层: 可以根据需要堆栈任意数量的符号

  • symbologyRemove 移除所选符号图层

  • 锁定符号图层颜色: 当用户在全局 (或更高级) 符号级别更改颜色时, locked 锁定的颜色保持不变

  • duplicateLayer 复制 (一组) 符号图层

  • 向上或向下移动符号图层

14.2.2. 配置符号

在QGIS中,配置符号分为两步:符号然后是符号图层。

14.2.2.1. 符号

在树的顶层,取决于图层几何图形,可以是 标记线填充 类型。每个符号可以嵌入一个或多个符号 (包括任何其他类型的符号) 或符号图层。

您可以设置一些应用于全局符号的参数:

  • 单位: 可以是 毫米像素比例米地图单位英寸 (更多信息请参阅 Unit Selector )

  • 不透明度

  • 颜色: 当用户更改此参数时,其值将覆盖所有未锁定的子符号颜色

  • 大小旋转 用于标记符号

  • 宽度 用于线符号

    小技巧

    在符号级别使用 大小 (用于标记符号) 或 宽度 (用于线符号) 属性按比例调整其所有嵌入 符号图层 的尺寸。

    备注

    在样式管理器对话框设置符号时,宽度、大小或旋转参数旁边的 覆盖自定义数据 按钮处于非活动状态。当符号连接到地图图层时,此按钮可帮助您创建 比例或多变量分析 渲染。

  • 符号库 进行过滤。还可以使用 styleManager 样式管理器 按钮更新符号列表,然后打开同名对话框。在那里,可以使用 矢量样式管理器 部件中显示的任何功能。

    符号显示为:

    • 在图标列表中 (带有缩略图、名称和相关标签),使用框架下方的 openTable 列表视图 按钮;

    • 或者使用 iconView 图标视图 按钮作为图标预览。

  • 点击 保存符号 按钮将正在编辑的符号添加到符号库。

  • 使用 高级 selectString 选项,您可以:

    • 对于线和填充符号, 按画布范围裁剪要素

    • 对于填充符号, 强制右手定则朝向: 允许强制渲染的填充符号遵循环方向的标准 "右手定则" (即外部环为顺时针方向,内部环均为逆时针方向的多边形)。

      仅在渲染时应用方向固定,并且原始要素几何图形保持不变。无论渲染的数据集和单个要素的环方向如何,这允许创建具有一致外观的填充符号。

    • 根据符号所应用图层的 符号化高级 菜单提供了其他设置:

14.2.2.2. 符号图层

在树的较低层级,可以自定义符号图层。可用的符号图层类型取决于上面的符号类型。可以在符号图层应用 paintEffects 绘制效果 以增强其渲染效果。

因为无法描述所有符号图层类型的所有选项,所以下面仅提及特定且重要的选项。

常用参数

一些常用选项和控件可用于构建符号图层,无论是标记、线还是填充子类型:

  • 颜色选择器 控件可简化颜色操作

  • 单位: 可以是 毫米像素比例米地图单位英寸 (更多信息请参阅 Unit Selector )

  • dataDefine 数据定义覆盖 控件几乎接近所有选项,扩展了自定义每个符号的功能 (更多信息请参阅 Data defined override setup )

  • checkbox 启用符号图层 选项控制符号图层的可见性。渲染符号时不会绘制禁用的符号图层,而是将其保存在符号中。在寻找符号的最佳设计时,能够隐藏符号图层很方便,因为无需为测试而移除任何符号图层。然后,通过数据定义重写,可以基于表达式 (例如,使用要素属性) 隐藏或显示不同的符号图层。

  • 用于 效果渲染checkbox 绘制效果 按钮。

备注

虽然以下描述假设符号图层类型绑定到要素几何图形,但请记住,可以将符号图层嵌入到其他图层。在这种情况下,较低层级的符号图层参数 (放置、偏移等) 可能绑定到较高层级的符号,而不是绑定到要素几何图形本身。

标记符号

标记符号具有多种 符号图层类型 ,适用于点几何图形要素:

  • 简单标记 (默认)

    ../../../_images/simpleMarkerSymbol.png

    图 14.11 设计简单标记符号

    简单标记符号图层类型具有以下属性:

    • 在各种支持单位中的 大小

    • 填充颜色

    • 预定义列表和 描边大小 中的 描边颜色描边样式

    • 连接样式: 可以是 斜角尖角圆角

    • 端点样式: 可以是 方角扁平圆角

    • 旋转角度

    • 从要素沿 XY 方向 偏移

    • 锚点: 将符号的象限点定义为放置原点。这是应用 偏移 的点。

  • 椭圆标记: 简单标记符号图层,具有可自定义的宽度和高度

  • 实心标记: 类似于简单标记符号图层,不同之处在于使用 填充子符号 渲染标记。这允许使用所有现有的QGIS填充 (和描边) 样式渲染标记,例如梯度或形状突发填充。

  • 文字符号标记: 类似于简单标记符号图层,只是使用已安装的字体渲染标记。其附加属性为:

    • 字体族

    • 字体样式

    • 字符, 表示要显示为符号的文本。可以在字体字符集控件中键入或选择,您可以使用所选设置实时 预览

  • 几何图形生成器 (请参阅 几何图形生成器)

  • 掩膜: 其子符号定义了掩膜形状,颜色属性将被忽略,并且仅使用不透明度。当标注或其他颜色相近的标记符号重叠时辨认困难,这很方便。更多信息请访问 Masks Properties

  • 栅格图像标记: 使用图像 (PNGJPGBMP ...) 作为标记符号。图像可以是磁盘上的文件、远程URL、嵌入样式数据库 (更多信息) ,也可以是编码为base64的字符串。图像的宽度和高度可以单独设置,也可以使用 lockedGray 锁定纵横比 。可以使用任何 常用单位 设置大小,也可以设置图像为原始大小的百分比 (按宽度缩放)。

  • 矢量字段标记 (请参阅 矢量字段标记)

  • SVG标记: 为您提供来自SVG路径的图像 (在 设置 ► 选项... ► 系统 菜单中设置) 渲染为标记符号。符号的宽度和高度可以单独设置,也可以使用 lockedGray 锁定纵横比 。每个SVG文件的颜色和描边可以进行调整。图像可以是磁盘上的文件、远程URL、嵌入样式数据库 (更多信息) ,也可以是编码为base64的字符串。

    该符号也可以使用 动态SVG参数 进行设置。请参阅 参数化SVG 章节的参数化SVG符号。

    备注

    SVG版本要求

    QGIS渲染是遵循 SVG Tiny 1.2 配置 的SVG文件,旨在从手机和PDA到笔记本和台式机等一系列设备范围实现相同的效果,因此包括 SVG 1.1 Full 中包含的功能子集,以及扩展SVG功能的新功能。

    这些规范中未包含的某些功能可能无法在QGIS正确渲染。

线符号

适用于线几何图形要素的线符号具有以下符号图层类型:

  • 简单线 (默认)

    ../../../_images/simpleLineSymbol.png

    图 14.12 设计简单线符号

    简单线符号图层类型具有许多与 简单标记符号 相同的属性,此外:

    • checkbox 使用自定义虚线图型: 使用自定义虚线代替 描边样式 设置。您需要以选定的单位定义整形模型的连续虚线和空格的长度。图型的总长度显示在对话框的底部。

    • 图型偏移: 线中虚线/空格的位置可以调整,这样就可以放置在更好的位置,以解释线中的转角 (也可能用于 "对齐" 邻接的虚线图型边界)

    • checkbox 将虚线图型与线长对齐: 将调整虚线图型的长度,使线以完整的虚线元素结束,而不是有间隙。

    • checkbox 调节尖拐角的虚线图型: 动态调整虚线图型的布置,以便尖拐角由进出尖拐角的完整虚线元素表示。这依赖于 将虚线图型与线长对齐

    • 起点 和/或 终点 裁剪线: 允许线渲染在绘制线时从实际线串裁剪开始 x 毫米和结束 y 毫米。它支持一系列 单位 ,包括总线长度的百分比,并且可以为附加控制而定义的数据。例如,当创建复杂符号时,可以使用开始/结束裁剪距离,其中线图层不应与放置在线起点和终点的标记符号图层重叠。

  • 箭头: 将线绘制为具有可配置 (和数据定义) 的单头或双头的弯曲 (或非) 箭头:

    • 头部类型

    • 箭头类型

    • 箭头宽度

    • 箭头起点宽度

    • 箭头头部长度

    • 箭头头部厚度

    • 偏移量

    可以创建 checkbox 弯曲箭头 (线要素必须至少有三个顶点) 和 checkbox 每条线段重复箭头 。还可以使用 填充符号 (如梯度或形状突发填充) 渲染箭头主体。结合几何图形生成器,这种图层符号的类型可帮助表示流型图。

  • 几何图形生成器 (请参阅 几何图形生成器)

  • 内插线: 允许渲染的 描边宽度 和/或 颜色 可以不变 (给定 固定宽度单色 参数) 或沿几何图形变化的线。当改变时,必要的输入是:

    • 起始值最终值: 用于在要素几何图形的末端进行插值的值,可以是固定值、要素的属性或基于表达式。

    • 最小值最大值: 在其间执行插值的值。按 refresh 加载 按钮可根据应用于图层的最小和最大起始/最终值自动填充。

    • 仅适用于描边选项:

      • 最小宽度最大宽度: 定义可变宽度的范围。 最小宽度 指定给 最小值最大宽度 指定给 最大值 。可以关联 单位

      • checkbox 使用绝对值: 仅考虑插值的绝对值 (负值用作正值)。

      • checkbox 忽略超出范围: 默认情况下,当要素的 [起始值 - 最终值] 范围不包含在 [最小值 - 最大值] 的范围内时,要素的几何图形界外部分将以最小或最大宽度渲染。勾选此选项则完全不渲染。

    • 对于可变颜色,可以使用 颜色渐变类别 的任何插值方法

    ../../../_images/interpolatedLineSymbol.png

    图 14.13 插值线示例

  • 标记线: 在线长度之上重复 标记符号

    • 标记位置 可以使用规则间隔设置 (从第一个顶点开始) 和/或线几何图形 (在第一个或最后一个顶点、内部顶点、线或每条线段的中心点或每条曲线点上) 进行设置。

    • 启用第一个或最后一个顶点放置时, checkbox 放置在每个部件末端 选项将使标记也在多部件几何图形的每个部件的第一个或最后一个顶点处渲染。

    • 沿线偏移: 标记的放置也可以在您选择的 单位 中沿线给出偏移量 (毫米、点、地图单位、比例米、百分比等):

      • 正值将使标记符号在线方向 (使用 在第一个顶点上间隔分布 放置) 和向后 (使用 在最后一个顶点上 放置) 偏移。

      • 非闭合线的负值将导致符号没有偏移 (对于 在第一个顶点上在最后一个顶点上 的放置) 或向后偏移 (从最后一个顶点开始)。

      • 对于闭合环,QGIS将偏移视为继续绕环循环 (向前或向后)。例如,将偏移设置为 150% (分别为 -10% 或 -110%) 将导致偏移被视为闭合环长度的 50% (分别为 90%)。

    • checkbox 旋转标记以遵循线方向 选项设置每个标记符号的方向是否应相对于线方向定向。

      因为线通常是由一系列不同方向的线段组成,所以标记的旋转是通过沿该线对指定距离取平均值来计算的。例如,将 超过平均角度 属性设置为 4mm 意味着沿线在符号位置前后 2mm 的两个点用于计算该标记符号的线角度。这样可以平滑 (或消除) 与整个线方向的任何微小局部偏差,从而使标记线符号具有更好的视觉方向。

    • 线偏移: 标记符号也可以从线要素偏移。

  • 散列线: 在线符号的长度上重复线段 (散列),并使用线子符号渲染每条单独的线段。也就是说,散列线类似于标记线,其中标记符号被线段取代。因此,散列线与标记线符号具有 相同的属性 ,以及:

    • 散列线长度

    • 散列线旋转

    ../../../_images/hashedLineSymbol.png

    图 14.14 散列线示例

  • 栅格线: 按照线要素形状的长度渲染并重复栅格图像。可以调整 描边宽度偏移量连接样式端点样式不透明度

    ../../../_images/rasterLineSymbol.png

    图 14.15 栅格线示例

  • 线突发: 沿线宽渲染渐变。可以在 双色颜色渐变描边宽度 之间进行选择,并且可以调整 描边宽度偏移量连接样式端点样式

    ../../../_images/lineburstSymbol.png

    图 14.16 线突发示例

填充符号

适用于多边形几何图形要素,填充符号也有几种符号图层类型:

  • 简单填充 (默认): 用相同颜色填充多边形

    ../../../_images/simpleFillSymbol.png

    图 14.17 设计简单填充符号

  • 质心填充: 在可见要素的质心处放置 标记符号 。标记的位置可能不是要素的真实质心,因为计算会考虑裁剪到地图画布中可见区域的多边形进行渲染,并忽略孔。如果需要精确的质心,请使用 几何图形生成器符号

    您可以:

    • 强制在多边形内放置标记

    • 在多部件要素的每个部件绘制标记 或仅将点放在其最大的部件中

    • 显示全部或部件标记符号,保持部件与当前要素几何图形 (将标记裁剪到多边形边界) 或符号所属几何图形部件重叠 (将标记仅裁剪到当前部件边界)

  • 几何图形生成器 (请参阅 几何图形生成器)

  • 渐变填充: 基于简单的两个颜色渐变或预定义 梯度颜色渐变 ,使用放射、线性或锥形渐变填充多边形。梯度可以在单个要素的基础上或整个地图范围内旋转和应用,也可以通过坐标或使用 (要素或地图的) 质心设置起点和终点。可以定义数据定义的偏移量。

  • 线图案填充: 使用 线符号图层 的阴影图案填充多边形。您可以设置:

    • 对齐: 定义图案相对于要素的定位方式:

      • 对齐图案到要素: 在每个要素中渲染线

      • 对齐图案到地图范围: 图案在整个地图范围内渲染,允许线在要素之间完美对齐

    • 线的 旋转 为逆时针方向

    • 间距: 连续线之间的距离

    • 线与要素边界的 偏移 距离

    • 裁剪: 允许控制如何将填充中的线裁剪为多边形形状。选项包括:

      • 仅在渲染期间裁剪: 将创建覆盖要素的整个边界框的线,然后在绘制时进行剪裁。线末端 (起点和终点) 将不可见。

      • 渲染前裁剪线: 在渲染之前,线被剪裁为多边形的准确形状。线末端 (包括端点样式、起点/终点标记线对象等) 将可见,有时可能会延伸到多边形之外 (取决于线符号设置)。

      • 无裁剪: 不进行剪裁 - 线将覆盖要素的整个边界框

  • 点图案填充: 用 标记符号 的网格图案填充多边形。您可以设置:

    • 对齐: 定义图案相对于要素的定位方式:

      • 对齐图案到要素: 标记线在每个要素内渲染

      • 对齐图案到地图范围: 图案在整个地图范围内渲染,允许标记在要素之间完美对齐

        ../../../_images/pointPatternAlignment.png

        图 14.18 将点图案与要素 (左) 和地图范围 (右) 对齐

    • 距离: 连续标记之间的 水平垂直 距离

    • 位移: 一列 (或一行) 中的连续标记之间对齐的 水平 (或 垂直) 偏移

    • 偏移: 距要素边界的 水平垂直 距离

    • 裁剪: 允许控制如何将填充中的标记裁剪为多边形形状。选项包括:

      • 裁剪到形状: 标记被剪裁,以便仅显示多边形内的部分

      • 形状内标记质心: 只绘制标记中心位于多边形内的标记,但这些标记不会剪裁到多边形外部

      • 标记完全在形状内: 仅显示完全位于多边形内的标记

      • 无裁剪: 任何与多边形相交的标记都将被完全渲染 (严格地说,它 "与标记的边界框相交")

        ../../../_images/clipPointPatternFill.png

        图 14.19 裁剪填充中的标记 - 从左到右:裁剪到形状、形状内标记质心、标记完全在形状内、无裁剪

    • 整个图案顺时针方向 旋转

    • 随机图案 组设置允许点图案填充中的每个点在 水平垂直 方向随机移动到指定的最大距离。可以以任何支持的单位指定最大偏移,例如毫米、点、地图单位,甚至 "百分比" (其中百分比是相对于图案的宽度或高度)。

      可以设置一个可选的随机数种子,避免符号图案在地图刷新时 "跳跃" 。还支持数据定义的覆写。

      备注

      随机图案随机标记填充 符号类型之间的主要区别在于,点图案的随机偏移允许标记准 "规则" 放置 – 因为图案中的点被有效地约束在网格中,这允许创建没有空白区域或重叠标记的半随机填充。(与随机标记填充相反,总是完全随机地放置点… 有时会导致点的视觉聚类或不需要空白区域)。

  • 随机标记填充: 使用放置在多边形边界内随机位置的 标记符号 填充多边形。可以设置:

    • 计算方法: 要渲染的标记符号数量被视为绝对计数还是基于密度

    • 点计数: 要渲染的标记符号的数量,

    • 可选的随机数 种子 ,以提供一致的位置

    • 密度面积: 在基于密度的计数方法的情况下,确保每当刷新地图时,标记的填充密度在不同比例/缩放级别的标记保持不变 (还允许随机放置与 QGIS Server 和基于瓦片的渲染配合使用)

    • 将标记裁剪到多边形边界: 在多边形边缘附近渲染的标记是否应剪裁到多边形边界

  • 栅格图像填充: 使用栅格图像 (PNG JPG, BMP ...) 中的瓦片填充多边形。图像可以是磁盘上的文件、远程URL或编码为字符串的嵌入式文件 (更多信息) 。选项包括 (数据定义的) 不透明度、图像宽度、坐标模式 (对象或视口)、旋转和偏移。图像宽度可以使用任何 常用单位 或原始大小的百分比进行设置。

  • SVG填充: 使用给定大小 (纹理宽度) 的 SVG标记 填充多边形。

  • 形状突发填充: 缓冲梯度填充,其中梯度从多边形的边界向多边形的中心绘制。可配置的参数包括从边界到阴影的距离、使用颜色渐变或简单的双色梯度、可选填充和偏移模糊处理。

  • 轮廓: 箭头: 使用线 箭头符号 图层表示多边形边界。轮廓箭头的设置与箭头线符号的设置相同。

  • 轮廓: 散列线: 使用 散列线符号 图层表示多边形边界 () ,可以是仅内环、仅外环或所有环。轮廓散列线的其他设置与散列线符号的设置相同。

  • 轮廓: 标记线: 使用 标记线符号 图层表示多边形边界 () ,可以是仅内环、仅外环或所有环。轮廓标记线的其他设置与标记线符号的设置相同。

  • 轮廓: 简单线: 使用 简单线符号 图层表示多边形边界 () ,可以是仅内环、仅外环或所有环)。 仅在多边形内部绘制线 选项显示多边形内部的多边形边界,可用于清晰表示邻接多边形边界。轮廓简单线的其他设置与简单线符号的设置相同。

备注

当几何图形类型为多边形时,可以选择禁用线/多边形自动裁剪到画布范围。在某些情况下,这种裁剪会导致不适宜的符号 (例如质心填充,其中质心必须始终是实际要素的质心)。

参数化SVG

可以更改 SVG标记 的颜色。您必须添加填充颜色的占位符 param(fill) 、描边颜色的 param(outline) 和描边宽度的 param(outline-width) 。这些占位符可以选择后跟默认值,例如:

<svg width="100%" height="100%">
<rect fill="param(fill) #ff0000" stroke="param(outline) #00ff00" stroke-width="param(outline-width) 10" width="100" height="100">
</rect>
</svg>

一般来说,SVG可以使用 param(param_name) 自由参数化。此参数可以用作属性值或节点文本:

<g stroke-width=".265" text-anchor="middle" alignment-baseline="param(align)">
  <text x="98" y="147.5" font-size="6px">param(text1)</text>
  <text x="98" y="156.3" font-size="4.5px">param(text2)</text>
</g>

然后可以将参数定义为 动态SVG参数 表中的表达式。

../../../_images/svg_parameters.png

图 14.20 动态SVG参数表

几何图形生成器

几何图形生成器 符号图层可用于所有类型的符号,允许在渲染过程中使用 表达式语法 动态生成几何图形。生成的几何图形不必与原始 几何图形类型 匹配,并且可以在彼此之上添加多个经过不同修改的符号图层。

可以设置 单位 属性:当几何图形生成器符号未应用于图层时 (例如,用于布局项),这允许对生成的输出进行更多控制。

一些例子:

-- render the centroid of a feature
centroid( $geometry )

-- visually overlap features within a 100 map units distance from a point
-- feature, i.e generate a 100m buffer around the point
buffer( $geometry, 100 )

-- Given polygon layer1( id1, layer2_id, ...) and layer2( id2, fieldn...)
-- render layer1 with a line joining centroids of both where layer2_id = id2
make_line( centroid( $geometry ),
           centroid( geometry( get_feature( 'layer2', 'id2', attribute(
               $currentfeature, 'layer2_id') ) )
         )

-- Create a nice radial effect of points surrounding the central feature
-- point when used as a MultiPoint geometry generator
collect_geometries(
  array_foreach(
    generate_series( 0, 330, 30 ),
      project( $geometry, .2, radians( @element ) )
  )
)

矢量字段标记

矢量字段标记用于显示矢量字段数据,例如地球变形、潮汐流等。它将矢量显示为线 (最好是箭头),这些线根据数据点的选定属性进行缩放和定向。只能用于渲染点数据,线和多边形图层不是由该符号绘制的。

矢量字段由数据中的属性定义,这些属性可以通过以下方式表示字段:

  • 笛卡尔坐标 分量 (字段的分量 xy )

  • 坐标:在此情况下,属性定义 长度角度 。角度可以从北开始顺时针方向测量,也可以从东逆时针方向测量,并且可以以度或弧度为单位。

  • 或作为 仅高度 数据,显示使用数据的属性缩放的垂直箭头。例如,这适用于显示变形的垂直分量。

字段的大小可以放大或缩小到适合的尺寸以查看字段。