线

虽然线条看起来也可以是简单的形状,有长度但没有宽度,但是有许多选项和技巧可以使线条显示得很好。

警告

本页所示的代码示例为 不是完整的SLD代码 ,因为为了简洁起见,它们省略了SLD的页眉和页脚信息。请使用链接下载每个示例的完整SLD。

线条层示例

这个 lines layer 下面的例子中使用的是一个虚构国家的道路信息。作为参考,下面包含了该层中点的属性表。

fid (功能ID)

name (道路名称)

type (道路等级)

line.1

人行道

公路

line.2

新月大道

第二的

line.3

森林大道

第二的

line.4

长路

公路

line.5

萨克森大街

第二的

line.6

里奇大街

第二的

line.7

霍利巷

地方公路

line.8

桑树街

地方公路

line.9

内森巷

地方公路

line.10

中央大街

地方公路

line.11

洛伊斯巷

地方公路

line.12

洛基路

地方公路

line.13

舰队街

地方公路

line.14

黛安娜法院

地方公路

line.15

雪松小径

地方公路

line.16

胜利之路

地方公路

line.17

高原路

地方公路

line.18

安逸街

地方公路

line.19

希尔街

地方公路

line.20

乡村公路

地方公路

line.21

主要街道

地方公路

line.22

贾尼·蓝道

地方公路

line.23

胫骨巷

地方公路

line.24

州街道

地方公路

line.25

河道

地方公路

Download the lines shapefile

简单线条

此示例指定线条为黑色,粗细为3像素。

../../../_images/line_simpleline.png

简单线条

代码

View and download the full "Simple line" SLD

 1   <FeatureTypeStyle>
 2     <Rule>
 3       <LineSymbolizer>
 4         <Stroke>
 5           <CssParameter name="stroke">#000000</CssParameter>
 6           <CssParameter name="stroke-width">3</CssParameter>
 7         </Stroke>
 8       </LineSymbolizer>
 9     </Rule>
10   </FeatureTypeStyle>

细节

有一个 <Rule> 在一个 <FeatureTypeStyle> 对于这个SLD,这是最简单的可能情况。(所有后续示例将包含一个 <Rule> 一个 <FeatureTypeStyle> 除非另有规定),造型线通过 <LineSymbolizer>lines 3-8第5行 指定线条的颜色为黑色 (#000000第6行 指定线条宽度为3像素。

带边框的线条

此示例演示如何绘制带边框的线条(有时称为“cased lines”)。在这种情况下,线条以3像素的蓝色中心和1像素宽的灰色边框绘制。

../../../_images/line_linewithborder.png

带边框的线条

代码

View and download the full "Line with border" SLD

 1   <FeatureTypeStyle>
 2      <Rule>
 3       <LineSymbolizer>
 4         <Stroke>
 5           <CssParameter name="stroke">#333333</CssParameter>
 6           <CssParameter name="stroke-width">5</CssParameter>
 7           <CssParameter name="stroke-linecap">round</CssParameter>
 8         </Stroke>
 9       </LineSymbolizer>
10     </Rule>
11   </FeatureTypeStyle>
12   <FeatureTypeStyle>
13      <Rule>
14       <LineSymbolizer>
15       <Stroke>
16           <CssParameter name="stroke">#6699FF</CssParameter>
17           <CssParameter name="stroke-width">3</CssParameter>
18           <CssParameter name="stroke-linecap">round</CssParameter>
19         </Stroke>
20       </LineSymbolizer>
21      </Rule>
22   </FeatureTypeStyle>

细节

SLD中的行没有“填充”的概念,只有“笔划”。因此,与点或多边形不同,不可能为线几何体的“边”设置样式。但是,可以通过绘制每行两次来达到这种效果:一次以一定的宽度绘制,另一次以较小的宽度绘制。这给了填充和笔画的错觉,除了沿着小线条的边缘之外,其他地方的大线条都被遮住了。

由于每行绘制两次,渲染的顺序是 very 重要。地理服务器渲染 <FeatureTypeStyle> 按SLD中显示的顺序排列。在这种样式中,灰色边框线首先通过第一个 <FeatureTypeStyle> ,然后是蓝色中心线 <FeatureTypeStyle> .这样可以确保蓝线不会被灰色线遮挡,也可以确保在交叉点处正确渲染,从而使蓝线“连接”。

在这个例子中, lines 1-11 包括第一个 <FeatureTypeStyle> ,即外线(或“笔画”)。 第5行 指定线条的颜色为深灰色 (#333333第6行 将此行的宽度指定为5像素,并以 第7行stroke-linecap 参数 round 将线条的两端呈现为圆形而不是平面。(使用圆线帽处理边框线时,确保边框在线条末端正确连接。)

Lines 12-22 包括第二个 <FeatureTypeStyle> ,它是内线(或“填充”)。 Line 16 将线条的颜色指定为中蓝色 (#6699FF ), line 17 将此线的宽度指定为3个像素,并 line 18 再次将线条的边缘渲染为圆角而不是平坦。

结果是3像素蓝线和1像素灰色边框,因为5像素灰线将在3像素蓝线的每侧显示1像素。

虚线

这个例子改变了 简单线条 创建一条由5个像素的绘制线和2个像素的空格交替组成的虚线。

../../../_images/line_dashedline.png

虚线

代码

View and download the full "Dashed line" SLD

 1   <FeatureTypeStyle>
 2     <Rule>
 3       <LineSymbolizer>
 4         <Stroke>
 5           <CssParameter name="stroke">#0000FF</CssParameter>
 6           <CssParameter name="stroke-width">3</CssParameter>
 7           <CssParameter name="stroke-dasharray">5 2</CssParameter>
 8         </Stroke>
 9       </LineSymbolizer>
10     </Rule>
11   </FeatureTypeStyle>

细节

在这个例子中, 第5行 将线条的颜色设置为蓝色 (#0000FF第6行 将线条宽度设置为3像素。 第7行 确定线条短划线的组成。价值 5 2 创建一个5像素绘制线条的重复图案,后跟2像素省略线条。

偏移线

这个例子改变了 简单线条 在直线左侧添加一条垂直偏移线,距离为5像素。

../../../_images/line_offset.png

偏移线

代码

View and download the full "Dashed line" SLD

 1   <FeatureTypeStyle>
 2     <Rule>
 3       <LineSymbolizer>
 4         <Stroke>
 5           <CssParameter name="stroke">#000000</CssParameter>
 6         </Stroke>
 7       </LineSymbolizer>
 8       <LineSymbolizer>
 9         <Stroke>
10           <CssParameter name="stroke">#FF0000</CssParameter>
11           <CssParameter name="stroke-dasharray">5 2</CssParameter>
12         </Stroke>
13         <PerpendicularOffset>5</PerpendicularOffset>
14       </LineSymbolizer>
15     </Rule>
16   </FeatureTypeStyle>

细节

在本例中,第一个线条符号器只是将线条绘制为黑色。 line 8 开始第二个线条符号器,将线条的颜色设置为红色 (#FF0000 ),并确定划线的组成。 Line 11Line 13 最终指定5个像素的垂直偏移(正数,因此位于左侧)。

铁路(孵化)

此示例使用图案填充创建铁路样式。线条和图案填充均为黑色,主线的厚度为2像素,垂直图案填充的宽度为1像素。

备注

这个例子利用了geoserver中的SLD扩展。图案填充不属于标准SLD 1.0规范的一部分。

../../../_images/line_railroad.png

铁路(孵化)

代码

View and download the full "Railroad (hatching)" SLD

 1   <FeatureTypeStyle>
 2     <Rule>
 3       <LineSymbolizer>
 4         <Stroke>
 5           <CssParameter name="stroke">#333333</CssParameter>
 6           <CssParameter name="stroke-width">3</CssParameter>
 7         </Stroke>
 8       </LineSymbolizer>
 9       <LineSymbolizer>
10         <Stroke>
11           <GraphicStroke>
12             <Graphic>
13               <Mark>
14                 <WellKnownName>shape://vertline</WellKnownName>
15                 <Stroke>
16                   <CssParameter name="stroke">#333333</CssParameter>
17                   <CssParameter name="stroke-width">1</CssParameter>
18                 </Stroke>
19               </Mark>
20               <Size>12</Size>
21             </Graphic>
22           </GraphicStroke>
23         </Stroke>
24       </LineSymbolizer>
25     </Rule>
26   </FeatureTypeStyle>

细节

在这个例子中有两个 <LineSymbolizer> 第一个符号,在 lines 3-8 ,绘制标准线,使用 第5行 把线条画成深灰色 (#333333第6行 将线条宽度设置为2像素。

图案填充在第二个符号中调用,打开 lines 9-24 . 第14行 指定符号绘制竖线图案填充 (shape://vertline )垂直于线条几何。 Lines 16-17 将图案填充颜色设置为深灰色 (#333333 )宽度为1像素。最后, 第20行 指定图案填充的长度和每个图案填充之间的距离均为12像素。

间隔图形符号

本例使用图形笔画和短划线数组创建“点和空间”线条类型。添加破折号数组规范允许控制一个符号和下一个符号之间的空间量。如果不使用破折号数组,线条将密集地填充点,每个点都与前一个点接触。

备注

此示例可能不适用于使用SLD的其他系统,因为它们可能不支持组合使用 stroke-dasharrayGraphicStroke .虽然SLD符合规范,但是SLD规范没有说明这种组合应该产生什么。

../../../_images/line_dashspace.png

沿直线的间隔符号

代码

View and download the full "Spaced symbols" SLD

 1   <FeatureTypeStyle>
 2     <Rule>
 3       <LineSymbolizer>
 4         <Stroke>
 5           <GraphicStroke>
 6             <Graphic>
 7               <Mark>
 8                 <WellKnownName>circle</WellKnownName>
 9                 <Fill>
10                   <CssParameter name="fill">#666666</CssParameter>
11                 </Fill>
12                 <Stroke>
13                   <CssParameter name="stroke">#333333</CssParameter>
14                   <CssParameter name="stroke-width">1</CssParameter>
15                 </Stroke>
16               </Mark>
17               <Size>4</Size>
18             </Graphic>
19           </GraphicStroke>
20           <CssParameter name="stroke-dasharray">4 6</CssParameter>
21         </Stroke>
22       </LineSymbolizer>
23     </Rule>
24   </FeatureTypeStyle>

细节

与以前的其他示例一样,此示例使用 GraphicStroke 沿直线放置图形符号。符号,定义于 lines 7-16 是一个带有深灰色轮廓的4像素灰色圆圈。符号之间的间距由 stroke-dasharray第20行 它指定4个像素的笔向下(刚好足以绘制圆)和6个像素的笔向上,以提供间距。

带短划线偏移的交替符号

此示例演示如何创建交替使用虚线和图形符号的复杂线条样式。代码建立在前面示例中所示的功能之上:

  • stroke-dasharray 控制向下/向上打开行为以生成虚线

  • GraphicStroke 沿直线放置符号

  • 结合这两者可以控制符号间距

这还显示了 dash offset ,它控制在破折号数组中开始渲染的位置。例如,使用破折号数组 5 10 短划线偏移量为 7 渲染器从开始绘制7个像素的图案。它跳过5个像素的“笔下”部分和2个像素的“笔上”部分,然后向上绘制剩余的8个像素,然后向下绘制5个像素,向上绘制10个像素,依此类推。

该示例演示如何使用这些功能创建两个同步的短划线数组序列,一个绘制线段和其他符号。

备注

此示例可能不适用于使用SLD的其他系统,因为它们可能不支持组合使用 stroke-dasharrayGraphicStroke .虽然SLD符合规范,但是SLD规范没有说明这种组合应该产生什么。

../../../_images/line_dashdot.png

交替短划线和符号

代码

View and download the full "Spaced symbols" SLD

 1   <FeatureTypeStyle>
 2     <Rule>
 3       <LineSymbolizer>
 4         <Stroke>
 5           <CssParameter name="stroke">#0000FF</CssParameter>
 6           <CssParameter name="stroke-width">1</CssParameter>
 7           <CssParameter name="stroke-dasharray">10 10</CssParameter>
 8         </Stroke>
 9       </LineSymbolizer>
10       <LineSymbolizer>
11         <Stroke>
12           <GraphicStroke>
13             <Graphic>
14               <Mark>
15                 <WellKnownName>circle</WellKnownName>
16                 <Stroke>
17                   <CssParameter name="stroke">#000033</CssParameter>
18                   <CssParameter name="stroke-width">1</CssParameter>
19                 </Stroke>
20               </Mark>
21               <Size>5</Size>
22             </Graphic>
23           </GraphicStroke>
24           <CssParameter name="stroke-dasharray">5 15</CssParameter>
25           <CssParameter name="stroke-dashoffset">7.5</CssParameter>
26         </Stroke>
27       </LineSymbolizer>
28     </Rule>
29   </FeatureTypeStyle>

细节

在本例中,2 LineSymbolizer 使用 stroke-dasharray 以及不同的符号学来产生一系列交替的破折号和符号。第一个符号( lines 3-9 )是一条简单的虚线,用10个像素的笔向下替换10个像素的笔向上。第二个符号( lines 10-27 )将5像素的空圆替换为15像素的空白。圆符号由 Mark 元素,其符号由指定 stroke 参数( lines 17-18 )。符号之间的间距由 stroke-dasharray第24行 ,它指定5个像素的笔向下(刚好足以绘制圆)和15个像素的笔向上。为了使两个序列正确定位,第二个序列使用 stroke-dashoffset 第7.5页( 第25行 )。这使得序列从12.5像素的空白开始,然后是一个圆(然后在另一个图案的两个线段之间居中),然后是15像素的空白,依此类推。

带默认标签的行

此示例在简单行上显示文本标签。这是在没有任何其他自定义的情况下标签的显示方式。

../../../_images/line_linewithdefaultlabel.png

带默认标签的行

代码

View and download the full "Line with default label" SLD

 1   <FeatureTypeStyle>
 2     <Rule>
 3       <LineSymbolizer>
 4         <Stroke>
 5           <CssParameter name="stroke">#FF0000</CssParameter>
 6         </Stroke>
 7       </LineSymbolizer>
 8       <TextSymbolizer>
 9         <Label>
10           <ogc:PropertyName>name</ogc:PropertyName>
11         </Label>
12         <LabelPlacement>
13           <LinePlacement />
14         </LabelPlacement>
15         <Fill>
16           <CssParameter name="fill">#000000</CssParameter>
17         </Fill>
18       </TextSymbolizer>
19     </Rule>
20   </FeatureTypeStyle>

细节

在这个例子中,有一个规则 <LineSymbolizer> 和A <TextSymbolizer> . 这个 <LineSymbolizer>lines 3-7 )绘制红线 (#FF0000 )。由于未指定宽度,因此默认设置为1像素。这个 <TextSymbolizer>lines 8-15 )确定线条的标签。 Lines 9-11 指定标签的文本将由每行的“name”属性值确定。(请参阅中的属性表 线条层示例 如有必要,请参见第节。) 第13行 将文本颜色设置为黑色。关于标签的所有其他细节都设置为渲染器默认值,这里是Times New Roman字体,字体颜色为黑色,字体大小为10像素。

标签后一行

此示例呈现文本标签,使其跟随线条的轮廓。

备注

行后的标签是特定于geoserver的SLD扩展。它不是SLD 1.0规范的一部分。

../../../_images/line_labelfollowingline.png

标签后一行

代码

View and download the full "Label following line" SLD

 1   <FeatureTypeStyle>
 2     <Rule>
 3       <LineSymbolizer>
 4         <Stroke>
 5           <CssParameter name="stroke">#FF0000</CssParameter>
 6         </Stroke>
 7       </LineSymbolizer>
 8       <TextSymbolizer>
 9         <Label>
10           <ogc:PropertyName>name</ogc:PropertyName>
11         </Label>
12         <LabelPlacement>
13           <LinePlacement />
14         </LabelPlacement>
15         <Fill>
16           <CssParameter name="fill">#000000</CssParameter>
17         </Fill>
18         <VendorOption name="followLine">true</VendorOption>
19       </TextSymbolizer>
20     </Rule>
21   </FeatureTypeStyle>

细节

作为 带短划线偏移的交替符号 示例显示,默认标签行为不是最佳的。标签显示在与线条本身相切的位置,导致不确定哪个标签对应于哪个线条。

此示例与 带短划线偏移的交替符号 示例,但不包括 lines 12-18 . 第18行 设置选项使标签跟随行,同时 lines 12-14 指定标签沿直线放置。如果 <LinePlacement /> 在SLD中未指定,则 <PointPlacement /> 假设,这与特定于行的渲染选项不兼容。

备注

由于标签冲突解决,并非所有标签都显示。参见下一节 优化标签放置 例如如何最大化标签显示。

优化标签放置

此示例优化了行的标签放置,以便显示最大数量的标签。

备注

此示例使用特定于GeoServer的选项,这些选项不是SLD 1.0规范的一部分。

../../../_images/line_optimizedlabel.png

优化标签

代码

View and download the full "Optimized label" SLD

 1   <FeatureTypeStyle>
 2     <Rule>
 3       <LineSymbolizer>
 4         <Stroke>
 5           <CssParameter name="stroke">#FF0000</CssParameter>
 6         </Stroke>
 7       </LineSymbolizer>
 8       <TextSymbolizer>
 9         <Label>
10           <ogc:PropertyName>name</ogc:PropertyName>
11         </Label>
12         <LabelPlacement>
13            <LinePlacement />
14         </LabelPlacement>
15         <Fill>
16           <CssParameter name="fill">#000000</CssParameter>
17         </Fill>
18         <VendorOption name="followLine">true</VendorOption>
19         <VendorOption name="maxAngleDelta">90</VendorOption>
20         <VendorOption name="maxDisplacement">400</VendorOption>
21         <VendorOption name="repeat">150</VendorOption>
22       </TextSymbolizer>
23     </Rule>
24   </FeatureTypeStyle>

细节

geoserver使用“冲突解决”来确保标签不会绘制在其他标签之上,从而使它们都变得模糊。这就解释了为什么在前面的示例中许多行没有标签, 标签后一行 .虽然可以切换此设置,但通常最好将其保留在打开状态,并使用其他标签放置选项以确保根据需要在正确的位置绘制标签。这个例子就是这样做的。

此示例与前一个示例类似, 标签后一行 .唯一的区别在于 lines 18-21 . 第19行 设置标签将遵循的最大角度。这会将标签设置为从不弯曲超过90度,以防止标签因明显的曲线或角度而变得难以辨认。 第20行 将标签的最大位移设置为400像素。为了解决与重叠标签的冲突,GeoServer将尝试移动标签,使它们不再重叠。此值设置标签相对于其原始位置的移动距离。最后, 第21行 将标签设置为每150像素重复一次。一个特性通常只接收一个标签,但这可能会导致长行混淆。将标签设置为重复可确保始终在本地标记行。

优化风格标签

此示例改进了 优化标签放置 例子。

../../../_images/line_optimizedstyledlabel.png

优化风格标签

代码

View and download the full "Optimized and styled label" SLD

 1   <FeatureTypeStyle>
 2     <Rule>
 3       <LineSymbolizer>
 4         <Stroke>
 5           <CssParameter name="stroke">#FF0000</CssParameter>
 6         </Stroke>
 7       </LineSymbolizer>
 8       <TextSymbolizer>
 9         <Label>
10           <ogc:PropertyName>name</ogc:PropertyName>
11         </Label>
12         <LabelPlacement>
13           <LinePlacement />
14         </LabelPlacement>
15         <Fill>
16           <CssParameter name="fill">#000000</CssParameter>
17         </Fill>
18         <Font>
19           <CssParameter name="font-family">Arial</CssParameter>
20           <CssParameter name="font-size">10</CssParameter>
21           <CssParameter name="font-style">normal</CssParameter>
22           <CssParameter name="font-weight">bold</CssParameter>
23         </Font>
24         <VendorOption name="followLine">true</VendorOption>
25         <VendorOption name="maxAngleDelta">90</VendorOption>
26         <VendorOption name="maxDisplacement">400</VendorOption>
27         <VendorOption name="repeat">150</VendorOption>
28       </TextSymbolizer>
29     </Rule>
30   </FeatureTypeStyle>

细节

此示例与 优化标签放置 .唯一的区别是字体信息,它包含在 lines 18-23 . 第19行 将字体系列设置为“Arial”, 第20行 将字体大小设置为10, 第21行 将字体样式设置为“普通”(与“斜体”或“斜体”相反),以及 第22行 将字体粗细设置为“粗体”(而不是“普通”)。

基于属性的线条

此示例根据“类型”(道路类别)属性对线进行不同的样式设置。

../../../_images/line_attributebasedline.png

Attribute-based line

代码

View and download the full "Attribute-based line" SLD

 1   <FeatureTypeStyle>
 2     <Rule>
 3       <Name>local-road</Name>
 4       <ogc:Filter>
 5         <ogc:PropertyIsEqualTo>
 6           <ogc:PropertyName>type</ogc:PropertyName>
 7           <ogc:Literal>local-road</ogc:Literal>
 8         </ogc:PropertyIsEqualTo>
 9       </ogc:Filter>
10       <LineSymbolizer>
11         <Stroke>
12           <CssParameter name="stroke">#009933</CssParameter>
13           <CssParameter name="stroke-width">2</CssParameter>
14         </Stroke>
15       </LineSymbolizer>
16     </Rule>
17   </FeatureTypeStyle>
18   <FeatureTypeStyle>
19     <Rule>
20       <Name>secondary</Name>
21       <ogc:Filter>
22         <ogc:PropertyIsEqualTo>
23           <ogc:PropertyName>type</ogc:PropertyName>
24           <ogc:Literal>secondary</ogc:Literal>
25         </ogc:PropertyIsEqualTo>
26       </ogc:Filter>
27       <LineSymbolizer>
28         <Stroke>
29           <CssParameter name="stroke">#0055CC</CssParameter>
30           <CssParameter name="stroke-width">3</CssParameter>
31         </Stroke>
32       </LineSymbolizer>
33     </Rule>
34   </FeatureTypeStyle>
35   <FeatureTypeStyle>
36     <Rule>
37     <Name>highway</Name>
38       <ogc:Filter>
39         <ogc:PropertyIsEqualTo>
40           <ogc:PropertyName>type</ogc:PropertyName>
41           <ogc:Literal>highway</ogc:Literal>
42         </ogc:PropertyIsEqualTo>
43       </ogc:Filter>
44       <LineSymbolizer>
45         <Stroke>
46           <CssParameter name="stroke">#FF0000</CssParameter>
47           <CssParameter name="stroke-width">6</CssParameter>
48         </Stroke>
49       </LineSymbolizer>
50     </Rule>
51   </FeatureTypeStyle>

细节

备注

参考 线条层示例 查看层的属性。为了简化样式,此示例避开了标签,但您可以参考示例 优化风格标签 查看哪些属性对应于哪些点。

在我们虚构的国家里,有三种道路等级,从主干道到高速高速公路:“公路”、“二级公路”和“地方公路”。为了分别处理每个案件,有多个 <FeatureTypeStyle> ,每个包含一个规则。这样可以确保每种道路类型都按顺序呈现,就像 <FeatureTypeStyle> 根据其在SLD中的显示顺序绘制。

三条规则设计如下:

规则顺序

Rule name / type

Color

Size

1

地方公路

#009933 (绿色)

2

2

第二的

#0055CC (蓝色)

3

3

公路

#FF0000 (红色)

6

Lines 2-16 包括第一个 <Rule> . Lines 4-9 设置此规则的筛选器,使“type”属性的值为“local road”。如果此条件对于特定行为真,则规则将根据 <LineSymbolizer> 哪个是开的 lines 10-15 . Lines 12-13 将线条的颜色设置为深绿色 (#009933 )宽度为2像素。

Lines 19-33 构成第二个 <Rule> . Lines 21-26 设置此规则的筛选器,使“type”属性的值为“secondary”。如果此条件对于特定行为真,则规则将根据 <LineSymbolizer> 哪个是开的 lines 27-32 . Lines 29-30 将线条的颜色设置为深蓝色 (#0055CC )宽度为3个像素,使线条略厚于“本地道路”线条,颜色也有所不同。

Lines 36-50 包括第三个和最后一个 <Rule> . Lines 38-43 设置此规则的筛选器,使“type”属性的值为“primary”。如果此条件对于特定行为真,则规则将根据 <LineSymbolizer> 哪个是开的 lines 44-49 . Lines 46-47 将线条的颜色设置为鲜红色 (#FF0000 )宽度为6像素,这样这些线条将呈现在其他两个道路类别的顶部,并且比其他两个道路类别的更厚。这样,“主要”道路在地图渲染中被优先考虑。

基于缩放的线条

这个例子改变了 简单线条 不同缩放级别的样式。

../../../_images/line_zoombasedlinelarge.png

Zoom-based line: Zoomed in

../../../_images/line_zoombasedlinemedium.png

Zoom-based line: Partially zoomed

../../../_images/line_zoombasedlinesmall.png

Zoom-based line: Zoomed out

代码

View and download the full "Zoom-based line" SLD

 1   <FeatureTypeStyle>
 2     <Rule>
 3       <Name>Large</Name>
 4       <MaxScaleDenominator>180000000</MaxScaleDenominator>
 5       <LineSymbolizer>
 6         <Stroke>
 7           <CssParameter name="stroke">#009933</CssParameter>
 8           <CssParameter name="stroke-width">6</CssParameter>
 9         </Stroke>
10       </LineSymbolizer>
11     </Rule>
12     <Rule>
13       <Name>Medium</Name>
14       <MinScaleDenominator>180000000</MinScaleDenominator>
15       <MaxScaleDenominator>360000000</MaxScaleDenominator>
16       <LineSymbolizer>
17         <Stroke>
18           <CssParameter name="stroke">#009933</CssParameter>
19           <CssParameter name="stroke-width">4</CssParameter>
20         </Stroke>
21       </LineSymbolizer>
22     </Rule>
23     <Rule>
24       <Name>Small</Name>
25       <MinScaleDenominator>360000000</MinScaleDenominator>
26       <LineSymbolizer>
27         <Stroke>
28           <CssParameter name="stroke">#009933</CssParameter>
29           <CssParameter name="stroke-width">2</CssParameter>
30         </Stroke>
31       </LineSymbolizer>
32     </Rule>
33   </FeatureTypeStyle>

细节

在创建自然外观的地图时,通常需要在更高的缩放级别上使形状更大。此示例根据缩放级别(或更准确地说,缩放分母)更改线条的厚度。比例分母是指地图的比例。比例尺分母为10000表示地图的比例尺为1:10000,以地图投影的单位表示。

备注

确定要使用的适当比例分母(缩放级别)超出了本例的范围。

此样式包含三个规则。三条规则设计如下:

规则顺序

规则名称

比例分母

线条宽度

1

1:180000000或以下

6

2

培养基

1:180000000至1:360000000

4

3

小的

大于1:360000000

2

这些规则的顺序并不重要,因为每个规则中指定的比例不重叠。

第一条规则( lines 2-11 )是最小的比例分母,对应于视图“放大”的时间。比例规则设置为 第4行 ,以便该规则适用于比例分母小于等于180000000的任何地图。 Line 7-8 将线条绘制为深绿色 (#009933 )宽度为6像素。

第二条规则( lines 12-22 )是中间比例分母,对应于视图“部分缩放”的时间。 Lines 14-15 设置比例,使规则适用于比例分母介于180000000和360000000之间的任何地图。(以下简称 <MinScaleDenominator> 具有包容性, <MaxScaleDenominator> 是独占的,所以精确到360000000的缩放级别 not 除比例外,此规则与上一规则的唯一区别是线条的宽度,在 第19行 .

第三条规则( lines 23-32 )是最大的比例分母,对应于地图“缩小”的时间。比例规则设置为 第25行 ,以便该规则适用于任何比例尺分母为360000000或更大的地图。同样,此规则与其他规则之间的唯一区别是线条的宽度,在 第29行 .

这种样式的结果是,当一条线放大时,线的宽度会变大,而当一条线缩小时,线的宽度会变小。

Previous:
Next: 多边形