线¶
虽然线条看起来也可以是简单的形状,有长度但没有宽度,但是有许多选项和技巧可以使线条显示得很好。
警告
本页所示的代码示例为 不是完整的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 |
河道 |
地方公路 |
简单线条¶
此示例指定线条为黑色,粗细为3像素。

简单线条¶
代码¶
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像素宽的灰色边框绘制。

带边框的线条¶
代码¶
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个像素的空格交替组成的虚线。

虚线¶
代码¶
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像素。

偏移线¶
代码¶
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 11 。 Line 13 最终指定5个像素的垂直偏移(正数,因此位于左侧)。
铁路(孵化)¶
此示例使用图案填充创建铁路样式。线条和图案填充均为黑色,主线的厚度为2像素,垂直图案填充的宽度为1像素。
备注
这个例子利用了geoserver中的SLD扩展。图案填充不属于标准SLD 1.0规范的一部分。

铁路(孵化)¶
代码¶
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-dasharray
和 GraphicStroke
.虽然SLD符合规范,但是SLD规范没有说明这种组合应该产生什么。

沿直线的间隔符号¶
代码¶
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-dasharray
和 GraphicStroke
.虽然SLD符合规范,但是SLD规范没有说明这种组合应该产生什么。

交替短划线和符号¶
代码¶
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像素的空白,依此类推。
带默认标签的行¶
此示例在简单行上显示文本标签。这是在没有任何其他自定义的情况下标签的显示方式。

带默认标签的行¶
代码¶
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规范的一部分。

标签后一行¶
代码¶
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规范的一部分。

优化标签¶
代码¶
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像素重复一次。一个特性通常只接收一个标签,但这可能会导致长行混淆。将标签设置为重复可确保始终在本地标记行。
优化风格标签¶
此示例改进了 优化标签放置 例子。

优化风格标签¶
代码¶
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行 将字体粗细设置为“粗体”(而不是“普通”)。
基于属性的线条¶
此示例根据“类型”(道路类别)属性对线进行不同的样式设置。

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 |
地方公路 |
|
2 |
2 |
第二的 |
|
3 |
3 |
公路 |
|
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像素,这样这些线条将呈现在其他两个道路类别的顶部,并且比其他两个道路类别的更厚。这样,“主要”道路在地图渲染中被优先考虑。
基于缩放的线条¶
这个例子改变了 简单线条 不同缩放级别的样式。

Zoom-based line: Zoomed in¶

Zoom-based line: Partially zoomed¶

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行 .
这种样式的结果是,当一条线放大时,线的宽度会变大,而当一条线缩小时,线的宽度会变小。