14.2. 符号选择器

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

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

图 14.10 设计线条符号

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

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

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

14.2.1. 符号层树

一个符号可以由几个 Symbol layers 。符号树显示了这些符号层的覆盖,这些符号层随后被组合以形成新的全局符号。此外,一旦符号属性改变,动态符号表示就会被更新。

根据在符号树项目中选择的级别,可以使用各种工具来帮助您管理树:

  • 符号系统添加 添加新的符号层:您可以堆叠任意数量的符号

  • 符号系统移除 移除所选符号图层

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

  • 复制层 复制一个(组)符号图层(S)

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

14.2.2. 配置符号

在QGIS中,符号的配置分两步完成:符号和符号层。

14.2.2.1. 这个符号

在树的顶层,它取决于层几何,可以是 MarkerLineFill 打字。每个符号可以嵌入一个或多个符号(包括任何其他类型的符号)或符号层。

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

  • Unit :它可以是 MillimetersPointsPixelsMeters at ScaleMap unitsInches (见 单位选择器 了解更多详细信息)

  • Opacity

  • Color :当用户更改此参数时,其值将回显到所有解锁的子符号颜色

  • SizeRotation 对于标记符号

  • Width 对于线条符号

    小技巧

    使用 Size (用于标记符号)或 Width (对于线符号)属性可按比例调整嵌入的所有 symbol layers 尺寸。

    备注

    这个 Data-defined override 从样式管理器对话框中设置符号时,宽度、大小或旋转参数旁边的按钮处于非活动状态。当符号连接到地图图层时,此按钮可帮助您创建 proportional or multivariate analysis 渲染。

  • 预览版 symbols library :显示相同类型的符号,并可通过上方的可编辑下拉列表按自由格式文本或按 categories 。属性更新符号列表。 样式管理器 Style Manager 按钮,并打开同义词对话框。在那里,您可以使用中公开的任何功能 样式管理器 一节。

    符号显示为以下任一种:

    • 在图标列表(带有缩略图、名称和关联的标记)中使用 OpenTable List View 框架下方的按钮;

    • 或作为图标预览,使用 图标视图 Icon View 纽扣。

  • 按下按钮 Save Symbol 按钮将正在编辑的符号添加到符号库中。

  • With the Advanced 选择字符串 option, you can:

    • 对于线条符号和填充符号, Clip features to canvas extent

    • 对于填充符号, Force right-hand rule orientation :允许强制渲染的填充符号遵循环形方向的标准“右手规则”(即,外部环形为顺时针方向,而内部环形均为逆时针方向的多边形)。

      仅在渲染时应用方向修复,原始特征几何图形不变。这允许创建外观一致的填充符号,而不考虑要渲染的数据集和各个特征的环形方向。

    • 取决于 symbology 要将符号应用到的图层,其他设置可在 Advanced 菜单:

14.2.2.2. 符号层

在树的较低级别,您可以自定义符号层。可用的符号层类型取决于上面的符号类型。您可以在符号图层上应用 画作效果 paint effects 以增强其渲染效果。

因为描述所有符号层类型的所有选项是不可能的,所以下面仅提及特定和重要的选项。

公共参数

可以使用一些常用选项和小工具来构建符号层,而不管它是标记、线条还是填充子类型:

  • 这个 color selector 用于简化颜色操作的小部件

  • Units :它可以是 MillimetersPointsPixelsMeters at ScaleMap unitsInches (见 单位选择器 了解更多详细信息)

  • 这个 数据定义 Data-defined override 几乎所有选项都有小部件,扩展了自定义每个符号的功能(请参见 数据定义的覆盖设置 了解更多信息)

  • 这个 复选框 Enable symbol layer 选项控制符号层的可见性。渲染符号时不会绘制禁用的符号层,但会将其保存在符号中。在寻找符号的最佳设计时,能够隐藏符号层是很方便的,因为您不需要删除任何符号以进行测试。然后,数据定义的替代使得可以基于表达式(例如使用要素属性)隐藏或显示不同的符号层。

  • 这个 复选框 Draw effects 按钮用于 effects rendering

备注

虽然下面的描述假定符号图层类型已绑定到要素几何图形,但请记住,您可以在彼此之间嵌入符号图层。在这种情况下,较低级别的符号层参数(放置、偏移...)可能绑定到上层符号,而不是要素几何图形本身。

标记符号

适用于点几何要素的标记符号有几个 Symbol layer types

  • Simple marker (违约)

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

    图 14.11 设计简单的标记符号

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

    • Size 在各种支持的单位中

    • Fill color

    • Stroke color, Stroke style from a predefined list and Stroke size

    • Join style :它可以是 BevelMiterRound

    • Cap style :它可以是 SquareFlatRound

    • Rotation

    • Offset 在……里面 XY 来自要素的方向

    • Anchor point :定义符号上的象限点作为放置原点。这就是这一点 Offset 应用于。

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

  • Filled marker :类似于简单标记符号层,不同之处在于它使用 fill sub symbol 来渲染标记。这允许使用所有现有的QGIS填充(和笔划)样式来呈现标记,例如渐变或形状猝发填充。

  • Font marker :类似于简单的标记符号层,不同之处在于它使用已安装的字体来渲染标记。它的其他属性包括:

    • Font family

    • Font style

    • Character(s) ,表示要显示为符号的文本。您可以输入或从字体字符收集小部件中选择它们,然后您就可以 Preview 它们使用选定的设置。

  • Geometry generator (见 几何图形生成器 )

  • Mask :其子符号定义其颜色属性将被忽略且仅使用不透明度的遮罩形状。当标记符号与标签或颜色相近的其他符号重叠时,这很方便,从而使其难以破译。更多详细信息请访问 遮罩属性

  • Raster image marker :使用图像 (PNGJPGBMP .)作为标记符号。图像可以是磁盘上的文件,也可以是嵌入到样式数据库中的远程URL (more details )或者可以将其编码为Base64字符串。图像的宽度和高度可以单独设置,也可以使用 锁定的灰色 Lock aspect ratio 。大小可以使用以下任一 common units 或图像原始大小的百分比(按宽度缩放)。

  • Vector Field marker (见 向量场标记 )

  • SVG marker :为您提供SVG路径中的图像(设置在 Settings ► Options... ► System 菜单)以呈现为标记符号。符号的宽度和高度可以单独设置,也可以使用 锁定的灰色 Lock aspect ratio 。还可以调整每个SVG文件的颜色和笔触。图像可以是磁盘上的文件,也可以是嵌入到样式数据库中的远程URL (more details )或者可以将其编码为Base64字符串。

    该符号也可以使用设置 Dynamic SVG parameters 。看见 可参数化的SVG 部分将SVG符号参数化。

    备注

    SVG版本要求

    QGIS会呈现跟随在 SVG Tiny 1.2 profile 计划在从手机和PDA到笔记本电脑和台式计算机的一系列设备上实施,因此包括SVG 1.1 Full中包含的功能子集,以及扩展SVG功能的新功能。

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

线条符号

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

  • Simple line (违约)

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

    图 14.12 设计简单的线条符号

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

    • 复选框 Use custom dash pattern :覆盖 Stroke style 使用自定义破折号设置。您需要以所选单位定义塑造模型的连续虚线和空格的长度。图案的总长度显示在对话框底部。

    • Pattern offset :可以调整线条中的虚线/空格的位置,以便将它们放置在更好的位置,以考虑线条中的角点(也可以用来对齐相邻的虚线图案边框)

    • 复选框 Align dash pattern to line length :虚线图案长度将进行调整,以使直线以完整的虚线元素结束,而不是以间隙结束。

    • 复选框 Tweak dash pattern at sharp corners :动态调整虚线图案放置,以使尖角由进出尖角的完整虚线元素表示。依赖于 Align dash pattern to line length

    • Trim lines 从… Start 和/或 End :允许线渲染在绘制线条时从实际线串中修剪第一个x mm和最后一个y mm。它支持一系列 units ,包括整个线路长度的百分比,并且可以是为额外控制而定义的数据。例如,在创建复杂符号时,可以使用起点/终点修剪距离,其中线条层不应与放置在线条起点和终点的标记符号层重叠。

  • Arrow :使用可配置(和数据定义)的单头或双头将线绘制为弯曲(或不弯曲)箭头:

    • Head type

    • Arrow type

    • Arrow width

    • Arrow width at start

    • Head length

    • Head thickness

    • Offset

    有可能创造出 复选框 Curved arrows (线要素必须至少有三个折点)和 复选框 Repeat arrow on each segment 。它还使用 fill symbol 例如渐变或形状猝发来呈现箭头体。与几何图形生成器相结合,这种类型的层符号可帮助您表示流程图。

  • Geometry generator (见 几何图形生成器 )

  • Interpolated line :允许呈现行,该行的 Stroke width 和/或 Color 可以是恒定的(给定 Fixed widthSingle color 参数)或沿几何体变化。在变化时,必要的输入为:

    • Start valueEnd value :将用于在要素几何图形末端进行内插的值。它们可以是固定值、要素的属性或基于表达式。

    • Min. valueMax. value :在其间执行内插的值。按下按钮 刷新 Load 按钮根据应用于该层的最小和最大开始/结束值自动填充它们。

    • 仅适用于笔划选项:

      • Min. widthMax. width :定义可变宽度的范围。 Min. width 被分配给 Min. valueMax. width 发送到 Max. value 。一个 unit 可以关联。

      • 复选框 Use absolute value :仅考虑绝对值进行插补(负值用作正值)。

      • 复选框 Ignore out of range :默认情况下,当 [start value - end value] 功能的范围不包括在 [min. value - max. value] 范围内,要素几何图形的边界外部分将使用最小或最大宽度进行渲染。选中此选项将根本不渲染它们。

    • 对于不同的颜色,可以使用的任何内插方法 color ramp classification

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

    图 14.13 内插线的示例

  • Marker line :重复 marker symbol 超过一条线的长度。

    • 这个 Marker placement 可以使用常规间隔设置(从第一个顶点开始)和/或直线几何图形特性(在第一个或最后一个顶点、内部顶点、直线或每段的中心点,或在每个曲线点上)进行设置。

    • 启用第一个或最后一个顶点放置时, 复选框 Place on every part extremity 选项将使标记也在多部分几何体的每个部分的第一个或最后一个顶点进行渲染。

    • Offset along line :标记位置还可以在您选择的ref:`UNIT<UNIT_SELECTOR>`中沿线指定偏移量(毫米、点、地图单位、比例尺米、百分比等):

      • 正值沿线方向偏移标记符号(使用 On first vertexWith interval 放置)和向后(带有 On last vertex 放置)。

      • 未闭合的线上的负值将不会导致偏移(对于 On first vertexOn last vertex 放置)或符号的向后偏移(从最后一个顶点)。

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

    • 这个 复选框 Rotate marker to follow line direction 选项设置每个标记符号是否应相对于线方向进行定向。

      因为一条线通常是一系列不同方向的线段,所以标记的旋转是通过沿这条线在指定距离上求平均来计算的。例如,设置 Average angle over 属性设置为 4mm 意味着这条线上的两个点 2mm 符号放置之前和之后用于计算该标记符号的线角度。这具有平滑(或消除)与整个线方向的任何微小局部偏差的效果,从而产生更好的标记线符号的视觉方向。

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

  • Hashed line :在线条符号的长度上重复线段(哈希),并使用线子符号来渲染每个单独的线段。换句话说,散列线就像是一条标记线,其中的标记符号被段替换。因此,散列的行具有 same properties 作为标记线符号,以及:

    • Hash length

    • Hash rotation

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

    图 14.14 散列行的示例

  • Raster line :按照线要素形状的长度渲染和重复栅格图像。这个 Stroke widthOffsetJoin styleCap styleOpacity 可以调整。

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

    图 14.15 栅格线的示例

  • Lineburst :沿线宽渲染渐变。你可以在以下两种中选择 Two colorColor ramp 以及 Stroke widthOffsetJoin styleCap style 可以调整。

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

    图 14.16 线串线的示例

填充符号

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

  • Simple fill (默认):用统一颜色填充多边形

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

    图 14.17 设计简单的填充符号

  • Centroid fill :放置 marker symbol 在可见特征的质心处。标记的位置可能不是要素的真实质心,因为计算时会考虑剪裁到地图画布中可见区域的多边形(S)进行渲染,并忽略洞。使用 geometry generator symbol 如果你想要精确的质心。

    你可以:

    • Force placement of markers inside polygons

    • Draw markers on every part of multi-part features 或者只把点放在它最大的部分

    • 全部或部分显示标记符号(S),保持部分与当前要素几何重叠 (Clip markers to polygon boundary )或符号所属的几何图形部分 (Clip markers to current part boundary only )

  • Geometry generator (见 几何图形生成器 )

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

  • Line pattern fill :用填充图案填充多边形 line symbol layer 。您可以设置:

    • Alignment :定义阵列相对于特征的定位方式(S):

      • Align pattern to feature :线在每个要素中进行渲染

      • Align pattern to map extent :在整个地图范围内渲染图案,从而使线条可以跨要素很好地对齐

    • Rotation 行中,逆时针

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

    • Offset 线到要素边界的距离

    • Clipping :用于控制填充中的线条应如何剪裁到多边形形状。选项包括:

      • Clip During Render Only :创建覆盖整个要素边界框的线,然后在绘制时进行剪裁。线条末端(起点和终点)将不可见。

      • Clip Lines Before Render :在渲染之前,线被剪裁成与多边形完全相同的形状。线条末端(包括封口样式、起点/终点标记线对象等)将可见,有时可能延伸到多边形外部(取决于线符号设置)。

      • No Clipping :根本不进行裁剪-线条将覆盖要素的整个边界框

  • Point pattern fill :使用栅格图案填充多边形 marker symbol 。您可以设置:

    • Alignment :定义阵列相对于特征的定位方式(S):

      • Align pattern to feature :在每个要素内渲染标记线

      • Align pattern to map extent :在整个地图范围内渲染图案,使标记能够在要素之间很好地对齐

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

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

    • DistanceHorizontalVertical 连续标记之间的距离

    • Displacement :A Horizontal (请回复。 Vertical )列中连续标记之间对齐的偏移量(分别为连续)

    • OffsetHorizontalVertical 与要素边界的距离

    • Clipping :用于控制填充中的标记应如何剪裁到多边形形状。选项包括:

      • Clip to shape :标记被剪裁,因此只有面内部的部分可见

      • Marker centroid within shape :仅绘制标记中心位于面内部的标记,但不会将这些标记裁剪到面的外部

      • Marker completely within shape :仅显示完全落在多边形内的标记

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

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

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

    • Rotation 整个图案,顺时针方向

    • 这个 Randomize pattern 组设置允许点图案填充中的每个点随机移动到指定的最大距离 HorizontallyVertically 。您可以使用任何受支持的单位指定最大偏移量,例如毫米、磅、贴图单位,甚至是“百分比”(其中百分比是相对于图案宽度或高度的)。

      您可以设置一个可选的随机数种子,以避免符号模式在地图刷新之间“跳跃”。还支持数据定义的覆盖。

      备注

      两者之间的主要区别是 Randomize pattern 以及 random marker fill 符号类型是,点图案的随机偏移量允许标记的准“规则”放置-因为图案中的点被有效地约束到网格,这允许创建没有空白区域或重叠标记的半随机填充。(与随机标记填充相反,随机标记填充将始终完全随机地放置点…有时导致点的视觉群集或不想要的空白区域)。

  • Random marker fill :在多边形中填充 marker symbol 放置在多边形边界内的随机位置。您可以设置:

    • Count method :要渲染的标记符号的数量是视为绝对计数还是基于密度

    • Point count :要渲染的标记符号的数量,

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

    • Density area :在基于密度的计数方法的情况下,确保在刷新地图时标记的不同比例/缩放级别上标记的填充密度保持相同(还允许随机放置与QGIS服务器和基于切片的渲染配合良好)

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

  • Raster image fill :使用栅格图像中的平铺填充多边形 (PNG JPGBMP ...)。图像可以是磁盘上的文件、远程URL或编码为字符串的嵌入式文件 (more details )。选项包括(定义的数据)不透明度、图像宽度、坐标模式(对象或视区)、旋转和偏移。图像宽度可以使用任何 common units 或作为原始大小的百分比。

  • SVG fill :使用填充多边形 SVG markers 给定大小的 (Texture width )。

  • Shapeburst fill :缓冲渐变填充,其中从多边形的边界向多边形的中心绘制渐变。可配置的参数包括从边界到阴影的距离、使用色带或简单的两种颜色渐变、填充和偏移的可选模糊。

  • Outline: Arrow :使用一行 arrow symbol 表示多边形边界的层。轮廓箭头的设置与箭头线符号的设置相同。

  • Outline: Hashed line :使用 hash line symbol 表示面边界的层 (Rings 其可以是仅内环、仅外环或所有环)。轮廓散列线的其他设置与散列线符号的设置相同。

  • Outline: Marker line :使用 marker line symbol 表示面边界的层 (Rings 其可以是仅内环、仅外环或所有环)。轮廓标记线的其他设置与标记线符号的设置相同。

  • Outline: simple line :使用 simple line symbol 表示面边界的层 (Rings 其可以是仅内环、仅外环或所有环)。这个 Draw line only inside polygon 选项显示多边形内部的多边形边界,可用于清楚地表示相邻的多边形边界。轮廓简单线的其他设置与简单线符号的设置相同。

备注

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

可参数化的SVG

您可以更改 SVG marker 。您必须添加占位符 param(fill) 对于填充颜色, param(fill-opacity) 对于填充不透明度, param(outline)param(outline-opacity) 分别用于笔触颜色和不透明度,以及 param(outline-width) 作为笔划宽度。这些占位符后面可以有选择地跟一个缺省值,例如:

<svg width="100%" height="100%">
<rect fill="param(fill) #ff0000" fill-opacity="param(fill-opacity) 1" stroke="param(outline) #00ff00" stroke-opacity="param(outline-opacity) 1" 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>

然后,可以将参数定义为 Dynamic SVG parameters 桌子。

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

图 14.20 动态SVG参数表

几何图形生成器

可用于所有类型的符号, geometry generator 符号层允许使用 expression syntax 在渲染过程中动态生成几何体。生成的几何不必与原始几何匹配 Geometry type 您可以在彼此的顶部添加几个经过不同修改的符号层。

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

下面是一些示例:

  • 将符号渲染为要素的质心

    centroid( $geometry )
    
  • 在距离点要素100个地图单位的范围内以视觉方式重叠要素,即在点周围生成100米缓冲区

    buffer( $geometry, 100 )
    
  • 用作多点几何生成器时,创建中心要素点周围的点的径向效果

    collect_geometries(
     array_foreach(
      generate_series( 0, 330, 30 ),
      project( $geometry, 3, radians( @element ) )
     )
    )
    
    ../../../_images/radial_symbols.png
  • 创建中心特征点周围的点的径向效果。点数因字段而异。

    with_variable(
     'symbol_numbers',
     ceil(fid/10),
     collect_geometries(
      array_foreach(
       generate_series( 0, 360, 360/@symbol_numbers ),
       project( $geometry, 2, radians( @element ) )
      )
     )
    )
    
    ../../../_images/radial_symbols_datadefined.png
  • 创建一条连接两个图层要素的曲线箭头线 relation

    collect_geometries(
     with_variable(
      'destination_points',
      relation_aggregate(
       'the_relation_id',
       'array_agg',
       centroid( $geometry )
      ),
      array_foreach(
       @destination_points,
       make_line(
        centroid( @geometry ),
        project(
         centroid(
          make_line( centroid( @geometry ), @element )
         ),
         10, 50
        ),
        @element
       )
      )
     )
    )
    
    ../../../_images/arrow_relations.png

向量场标记

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

矢量场由数据中的属性定义,可以通过以下两种方式表示该场:

  • cartesian 组件 (xy 该领域的组成部分)

  • polar 坐标:在本例中,属性定义 LengthAngle 。角度可以从北面顺时针测量,也可以从东面逆时针测量,单位可以是度,也可以是弧度。

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

可以将视场的大小按比例放大或缩小到适当的大小以查看视场。