多边形

多边形是包含外缘(或“笔划”)和内缘(或“填充”)的二维形状。多边形可以被认为是一个不规则形状的点,其样式与点类似。

警告

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

多边形层示例

这个 polygons layer 下面使用的是一个虚构国家的县信息。作为参考,下面包含了多边形的属性表。

fid (功能ID)

name (县名)

pop (人口)

polygon.1

反讽县

412234

polygon.2

跟踪县

235421

polygon.3

德古拉县

135022

polygon.4

保利县

1567879

polygon.5

轴承县

201989

polygon.6

基督山县

152734

polygon.7

大县

67123

polygon.8

伦布县

198029

Download the polygons shapefile

简单多边形

此示例显示一个用蓝色填充的多边形。

../../../_images/polygon_simplepolygon.png

简单多边形

代码

View and download the full "Simple polygon" SLD

1   <FeatureTypeStyle>
2     <Rule>
3       <PolygonSymbolizer>
4         <Fill>
5           <CssParameter name="fill">#000080</CssParameter>
6         </Fill>
7       </PolygonSymbolizer>
8     </Rule>
9   </FeatureTypeStyle>

细节

有一个 <Rule> 在一个 <FeatureTypeStyle> 对于这种样式,这是最简单的可能情况。(除非另有规定,否则所有后续示例都将共享此特性。)造型多边形通过 <PolygonSymbolizer>lines 3-7第5行 指定深蓝色 (#000080 )作为多边形的填充颜色。

备注

图中多边形周围的浅色边界是由相邻的多边形引起的渲染器的伪影。这种样式没有边框。

带笔划的简单多边形

此示例将2像素的白色笔画添加到 简单多边形 例子。

../../../_images/polygon_simplepolygonwithstroke.png

带笔划的简单多边形

代码

View and download the full "Simple polygon with stroke" SLD

 1   <FeatureTypeStyle>
 2     <Rule>
 3       <PolygonSymbolizer>
 4         <Fill>
 5           <CssParameter name="fill">#000080</CssParameter>
 6         </Fill>
 7         <Stroke>
 8           <CssParameter name="stroke">#FFFFFF</CssParameter>
 9           <CssParameter name="stroke-width">2</CssParameter>
10         </Stroke>
11       </PolygonSymbolizer>
12     </Rule>
13   </FeatureTypeStyle>

细节

此示例与 简单多边形 上面的例子,加上 <Stroke> 标签(标签) lines 7-10第8行 将笔划颜色设置为白色 (#FFFFFF第9行 将笔划的宽度设置为2像素。

透明多边形

此示例基于 带笔划的简单多边形 示例并通过将不透明度设置为50%使填充部分透明。

../../../_images/polygon_transparentpolygon.png

透明多边形

代码

View and download the full "Transparent polygon" SLD

 1   <FeatureTypeStyle>
 2     <Rule>
 3       <PolygonSymbolizer>
 4         <Fill>
 5           <CssParameter name="fill">#000080</CssParameter>
 6           <CssParameter name="fill-opacity">0.5</CssParameter>
 7         </Fill>
 8         <Stroke>
 9           <CssParameter name="stroke">#FFFFFF</CssParameter>
10           <CssParameter name="stroke-width">2</CssParameter>
11         </Stroke>
12       </PolygonSymbolizer>
13     </Rule>
14   </FeatureTypeStyle>

细节

此示例与 带笔划的简单多边形 示例,保存以定义填充的不透明度 第6行 .0.5的值会导致部分透明的填充,即50%不透明。不透明度值为1将填充绘制为100%不透明,而不透明度值为0将导致完全透明(0%不透明)填充。在本例中,由于背景是白色,所以深蓝色看起来更亮。如果将这些点设置在深色背景上,则生成的颜色将更暗。

偏移内部线条

演示如何在多边形内绘制内部缓冲线。

../../../_images/polygon_offset.png

偏移缓冲器

代码

View and download the full "Inner offset lines" SLD

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

细节

此示例与 带笔划的简单多边形 示例,保存以定义添加 <LineSymbolizer>>第9行 ,其中浅灰色( 第11行 )3像素宽( 第12行 )线条作为多边形内部的内部缓冲区绘制。 第14行 控制缓冲距离,将内部缓冲设置为2个像素。

图形填充

此示例使用瓦片图形填充多边形。

../../../_images/polygon_graphicfill.png

图形填充

代码

View and download the full "Graphic fill" SLD

 1   <FeatureTypeStyle>
 2     <Rule>
 3       <PolygonSymbolizer>
 4         <Fill>
 5           <GraphicFill>
 6             <Graphic>
 7               <ExternalGraphic>
 8                 <OnlineResource
 9                   xlink:type="simple"
10                   xlink:href="colorblocks.png" />
11                 <Format>image/png</Format>
12               </ExternalGraphic>
13             <Size>93</Size>
14             </Graphic>
15           </GraphicFill>
16         </Fill>
17       </PolygonSymbolizer>
18     </Rule>
19   </FeatureTypeStyle>

细节

此样式用瓦片图形填充多边形。这被称为 <ExternalGraphic> 在SLD中,将其与渲染器“内部”的常用形状(如正方形和圆形)区分开来。 Lines 7-12 指定图形的详细信息,使用 第10行 设置图形的路径和文件名 第11行 指示图形的文件格式(mime类型) (image/png )。尽管可以根据需要指定完整的URL,但在 第11行 因为这个图形和SLD包含在同一个目录中。 第13行 确定以像素为单位显示的图形的高度;如果该值与图形的高度不同,则在保持纵横比的同时将相应地缩放该值。

../../../_images/colorblocks.png

用于填充的图形

填充图案填充

此示例使用图案填充图案填充多边形。

备注

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

../../../_images/polygon_hatchingfill.png

填充图案填充

代码

View and download the full "Hatching fill" SLD

 1   <FeatureTypeStyle>
 2     <Rule>
 3       <PolygonSymbolizer>
 4         <Fill>
 5           <GraphicFill>
 6             <Graphic>
 7               <Mark>
 8                 <WellKnownName>shape://times</WellKnownName>
 9                 <Stroke>
10                   <CssParameter name="stroke">#990099</CssParameter>
11                   <CssParameter name="stroke-width">1</CssParameter>
12                 </Stroke>
13               </Mark>
14               <Size>16</Size>
15             </Graphic>
16           </GraphicFill>
17         </Fill>
18       </PolygonSymbolizer>
19     </Rule>
20   </FeatureTypeStyle>

细节

在这个例子中,有一个 <GraphicFill> 标记为 图形填充 示例,但是 <Mark>lines 7-13 )使用而不是 <ExternalGraphic> . 第8行 指定在整个多边形中瓦片一个“时间”符号(“X”)。 Line 10 将颜色设置为紫色 (#990099第11行 将图案填充的宽度设置为1像素,以及 第14行 将瓦片的大小设置为16像素。因为图案填充瓦片总是方形的, <Size> 设置宽度和高度。

带默认标签的多边形

此示例显示多边形上的文本标签。在没有任何其他自定义的情况下,这就是标签的显示方式。

../../../_images/polygon_polygonwithdefaultlabel.png

带默认标签的多边形

代码

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

 1   <FeatureTypeStyle>
 2     <Rule>
 3       <PolygonSymbolizer>
 4         <Fill>
 5           <CssParameter name="fill">#40FF40</CssParameter>
 6         </Fill>
 7         <Stroke>
 8           <CssParameter name="stroke">#FFFFFF</CssParameter>
 9           <CssParameter name="stroke-width">2</CssParameter>
10         </Stroke>
11       </PolygonSymbolizer>
12       <TextSymbolizer>
13         <Label>
14           <ogc:PropertyName>name</ogc:PropertyName>
15         </Label>
16       </TextSymbolizer>
17     </Rule>
18   </FeatureTypeStyle>

细节

在这个例子中有一个 <PolygonSymbolizer> 和A <TextSymbolizer> . Lines 3-11 包括 <PolygonSymbolizer> .多边形的填充设置为 第5行 变成浅绿色 (#40FF40 )当多边形的笔划设置为 lines 8-9 变白 (#FFFFFF )厚度为2像素。标签设置在 <TextSymbolizer>lines 12-16第14行 确定要显示的文本,在本例中是“name”属性的值。(请参阅中的属性表 多边形层示例 如有必要,请参见节。)有关标签的所有其他详细信息都设置为渲染器默认值,这里是Times New Roman字体、字体颜色黑色和字体大小为10像素。

标签光环

这个例子改变了 带默认标签的多边形 在标签上添加白色光晕。

../../../_images/polygon_labelhalo.png

标签光环

代码

View and download the full "Label halo" SLD

 1   <FeatureTypeStyle>
 2     <Rule>
 3       <PolygonSymbolizer>
 4         <Fill>
 5           <CssParameter name="fill">#40FF40</CssParameter>
 6         </Fill>
 7         <Stroke>
 8           <CssParameter name="stroke">#FFFFFF</CssParameter>
 9           <CssParameter name="stroke-width">2</CssParameter>
10         </Stroke>
11       </PolygonSymbolizer>
12       <TextSymbolizer>
13         <Label>
14           <ogc:PropertyName>name</ogc:PropertyName>
15         </Label>
16         <Halo>
17           <Radius>3</Radius>
18           <Fill>
19             <CssParameter name="fill">#FFFFFF</CssParameter>
20           </Fill>
21         </Halo>
22       </TextSymbolizer>
23     </Rule>
24   </FeatureTypeStyle>

细节

此示例与 带默认标签的多边形 ,在标签周围添加光环 lines 16-21 .光环在标签周围创建颜色缓冲区,以提高标签的易读性。 第17行 设置光晕的半径,围绕标签边缘扩展光晕3个像素,以及 第19行 将光晕的颜色设置为白色 (#FFFFFF )。由于当设置为相对于文本颜色的鲜明对比度时,光晕最有用,因此本示例在黑色文本周围使用白色光晕以确保最佳可读性。

带样式标签的多边形

此示例改进了 带默认标签的多边形 示例:将标签置于多边形的中心,指定不同的字体名称和大小,并设置其他标签放置优化。

备注

下面讨论的标签放置优化 <VendorOption> 标签)是对geoserver自定义的SLD扩展。它们不是SLD 1.0规范的一部分。

../../../_images/polygon_polygonwithstyledlabel.png

带样式标签的多边形

代码

View and download the full "Polygon with styled label" SLD

 1   <FeatureTypeStyle>
 2     <Rule>
 3       <PolygonSymbolizer>
 4         <Fill>
 5           <CssParameter name="fill">#40FF40</CssParameter>
 6         </Fill>
 7         <Stroke>
 8           <CssParameter name="stroke">#FFFFFF</CssParameter>
 9           <CssParameter name="stroke-width">2</CssParameter>
10         </Stroke>
11       </PolygonSymbolizer>
12       <TextSymbolizer>
13         <Label>
14           <ogc:PropertyName>name</ogc:PropertyName>
15         </Label>
16         <Font>
17           <CssParameter name="font-family">Arial</CssParameter>
18           <CssParameter name="font-size">11</CssParameter>
19           <CssParameter name="font-style">normal</CssParameter>
20           <CssParameter name="font-weight">bold</CssParameter>
21         </Font>
22         <LabelPlacement>
23           <PointPlacement>
24             <AnchorPoint>
25               <AnchorPointX>0.5</AnchorPointX>
26               <AnchorPointY>0.5</AnchorPointY>
27             </AnchorPoint>
28           </PointPlacement>
29         </LabelPlacement>
30         <Fill>
31           <CssParameter name="fill">#000000</CssParameter>
32         </Fill>
33         <VendorOption name="autoWrap">60</VendorOption>
34         <VendorOption name="maxDisplacement">150</VendorOption>
35       </TextSymbolizer>
36     </Rule>
37   </FeatureTypeStyle>

细节

此示例与 带默认标签的多边形 例如,在 <TextSymbolizer> 在线 12-35 . Lines 16-21 设置字体样式。 第17行 将字体系列设置为Arial, 第18行 将字体大小设置为11像素, 第19行 将字体样式设置为“普通”(与“斜体”或“斜体”相反),以及 第20行 将字体粗细设置为“粗体”(而不是“普通”)。

这个 <LabelPlacement> 标记 lines 22-29 影响相对于多边形质心放置标签的位置。 第21行 通过沿多边形的质心水平放置标签50%(或0.5),使标签居中。 第22行 以完全相同的方式垂直居中标签。

最后,还有两个附加的标签放置优化: 第33行 通过将标签上的换行设置为60像素,确保长标签跨多行拆分,以及 第34行 允许标签最多替换150像素。这样可以确保标签被压缩,并且不太可能溢出多边形边界。注意角落里有一个巨大的小县,它的标签现在已经显示出来了。”

基于属性的多边形

此示例根据“pop”(population)属性对多边形进行不同的样式设置。

../../../_images/polygon_attributebasedpolygon.png

Attribute-based polygon

代码

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

 1   <FeatureTypeStyle>
 2     <Rule>
 3       <Name>SmallPop</Name>
 4       <Title>Less Than 200,000</Title>
 5       <ogc:Filter>
 6         <ogc:PropertyIsLessThan>
 7           <ogc:PropertyName>pop</ogc:PropertyName>
 8           <ogc:Literal>200000</ogc:Literal>
 9         </ogc:PropertyIsLessThan>
10       </ogc:Filter>
11       <PolygonSymbolizer>
12         <Fill>
13           <CssParameter name="fill">#66FF66</CssParameter>
14         </Fill>
15       </PolygonSymbolizer>
16     </Rule>
17     <Rule>
18       <Name>MediumPop</Name>
19       <Title>200,000 to 500,000</Title>
20       <ogc:Filter>
21         <ogc:And>
22           <ogc:PropertyIsGreaterThanOrEqualTo>
23             <ogc:PropertyName>pop</ogc:PropertyName>
24             <ogc:Literal>200000</ogc:Literal>
25           </ogc:PropertyIsGreaterThanOrEqualTo>
26           <ogc:PropertyIsLessThan>
27             <ogc:PropertyName>pop</ogc:PropertyName>
28             <ogc:Literal>500000</ogc:Literal>
29           </ogc:PropertyIsLessThan>
30         </ogc:And>
31       </ogc:Filter>
32       <PolygonSymbolizer>
33         <Fill>
34           <CssParameter name="fill">#33CC33</CssParameter>
35         </Fill>
36       </PolygonSymbolizer>
37     </Rule>
38     <Rule>
39       <Name>LargePop</Name>
40       <Title>Greater Than 500,000</Title>
41       <ogc:Filter>
42         <ogc:PropertyIsGreaterThan>
43           <ogc:PropertyName>pop</ogc:PropertyName>
44           <ogc:Literal>500000</ogc:Literal>
45         </ogc:PropertyIsGreaterThan>
46       </ogc:Filter>
47       <PolygonSymbolizer>
48         <Fill>
49           <CssParameter name="fill">#009900</CssParameter>
50         </Fill>
51       </PolygonSymbolizer>
52     </Rule>
53   </FeatureTypeStyle>

细节

备注

参考 多边形层示例 查看层的属性。为了简化样式,此示例避开了标签,但您可以参考示例 带样式标签的多边形 查看哪些属性对应于哪些多边形。

我们虚构国家中的每个多边形都有一个人口,由人口(“pop”)属性表示。此样式包含三个规则,根据“pop”属性的值更改填充,较小的值生成较浅的颜色,较大的值生成较深的颜色。

三条规则设计如下:

规则顺序

规则名称

人口 (pop)

Color

1

SmallPop

20万以下

#66FF66

2

MediumPop

200000至500000

#33CC33

3

LargePop

大于500000

#009900

在这种情况下,规则的顺序并不重要,因为每个形状仅由单个规则呈现。

第一条规则,关于 lines 2-16 ,指定填充属性小于200000的多边形的样式。 Lines 5-10 设置此筛选器,使用 lines 6-9 设置“小于”过滤器, 第7行 表示属性(“pop”),以及 第8行 价值20万。多边形填充的颜色设置为浅绿色。 (#66FF66 )打开 第13行 .

第二条规则 lines 17-37 ,类似,为人口属性大于或等于200000但小于500000的多边形指定样式。过滤器已开启 lines 20-31 .此筛选器比第一个规则中的筛选器长,因为需要指定两个条件而不是一个:“大于或等于”和“小于”筛选器。注意 And第21行第30行 .这要求两个过滤器都必须为真,规则才能适用。多边形填充的颜色设置为中绿色 (#33CC33 )打开 第34行 .

第三条规则 lines 38-52 ,指定填充属性大于或等于500000的多边形的样式。过滤器已开启 lines 41-46 .多边形填充的颜色是该规则中唯一的其他差异,它设置为深绿色。 (#009900 )打开 第49行 .

基于缩放的多边形

此示例在不同缩放级别更改多边形的样式。

../../../_images/polygon_zoombasedpolygonlarge.png

Zoom-based polygon: Zoomed in

../../../_images/polygon_zoombasedpolygonmedium.png

Zoom-based polygon: Partially zoomed

../../../_images/polygon_zoombasedpolygonsmall.png

Zoom-based polygon: Zoomed out

代码

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

 1   <FeatureTypeStyle>
 2     <Rule>
 3       <Name>Large</Name>
 4       <MaxScaleDenominator>100000000</MaxScaleDenominator>
 5       <PolygonSymbolizer>
 6         <Fill>
 7           <CssParameter name="fill">#0000CC</CssParameter>
 8         </Fill>
 9         <Stroke>
10           <CssParameter name="stroke">#000000</CssParameter>
11           <CssParameter name="stroke-width">7</CssParameter>
12         </Stroke>
13       </PolygonSymbolizer>
14       <TextSymbolizer>
15         <Label>
16           <ogc:PropertyName>name</ogc:PropertyName>
17         </Label>
18         <Font>
19           <CssParameter name="font-family">Arial</CssParameter>
20           <CssParameter name="font-size">14</CssParameter>
21           <CssParameter name="font-style">normal</CssParameter>
22           <CssParameter name="font-weight">bold</CssParameter>
23         </Font>
24         <LabelPlacement>
25           <PointPlacement>
26             <AnchorPoint>
27               <AnchorPointX>0.5</AnchorPointX>
28               <AnchorPointY>0.5</AnchorPointY>
29             </AnchorPoint>
30           </PointPlacement>
31         </LabelPlacement>
32         <Fill>
33           <CssParameter name="fill">#FFFFFF</CssParameter>
34         </Fill>
35       </TextSymbolizer>
36     </Rule>
37     <Rule>
38       <Name>Medium</Name>
39       <MinScaleDenominator>100000000</MinScaleDenominator>
40       <MaxScaleDenominator>200000000</MaxScaleDenominator>
41       <PolygonSymbolizer>
42         <Fill>
43           <CssParameter name="fill">#0000CC</CssParameter>
44         </Fill>
45         <Stroke>
46           <CssParameter name="stroke">#000000</CssParameter>
47           <CssParameter name="stroke-width">4</CssParameter>
48         </Stroke>
49       </PolygonSymbolizer>
50     </Rule>
51     <Rule>
52       <Name>Small</Name>
53       <MinScaleDenominator>200000000</MinScaleDenominator>
54       <PolygonSymbolizer>
55         <Fill>
56           <CssParameter name="fill">#0000CC</CssParameter>
57         </Fill>
58         <Stroke>
59           <CssParameter name="stroke">#000000</CssParameter>
60           <CssParameter name="stroke-width">1</CssParameter>
61         </Stroke>
62       </PolygonSymbolizer>
63     </Rule>
64   </FeatureTypeStyle>

细节

在创建自然外观的地图时,通常需要在更高的缩放级别上使形状更大。此示例根据缩放级别更改线条的厚度。多边形本质上是二维的,但根据缩放级别调整多边形样式的另一种方法是调整笔划的厚度(随着地图的放大而变大),或者将标签限制为特定的缩放级别。这可以确保笔划和标签的大小和数量保持清晰,并且不会使多边形本身蒙上阴影。

缩放级别(或更准确地说,缩放分母)是指地图的比例。比例尺分母为10000表示地图的比例尺为1:10000,以地图投影的单位表示。

备注

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

此样式包含三个规则,定义如下:

规则顺序

规则名称

比例分母

笔画宽度

标签显示?

1

1:100000000或以下

7

是的

2

培养基

1:100000000至1:200000000

4

3

小的

大于1:200000000

2

第一条规则,关于 lines 2-36 ,表示最小比例分母,对应于视图“放大”的时间。比例规则设置为 第40行 这样规则只适用于比例分母小于等于100000000的情况。 第7行 将填充定义为蓝色 (#0000CC )。请注意,无论比例分母是什么,填充在所有规则中都保持不变。就像在 带默认标签的多边形带样式标签的多边形 例如,规则还包含 <TextSymbolizer>lines 14-35 用于在多边形顶部绘制文本标签。 Lines 19-22 将字体信息设置为Arial、14像素和粗体,不带斜体。通过设置,标签沿多边形的质心水平和垂直居中。 <AnchorPointX><AnchorPointY> 均为0.5(或50%),在 lines 27-28 .最后,字体的颜色设置为白色。 (#FFFFFF第33行 .

第二条规则 lines 37-50 ,表示中间刻度分母,对应于视图“部分缩放”的时间。比例规则在 lines 39-40 设置规则,使其适用于比例尺分母在100000000到200000000之间的任何地图。(以下简称 <MinScaleDenominator> 具有包容性, <MaxScaleDenominator> 是独占的,因此精确到200000000的缩放级别将 not 在这里应用。)除比例外,此规则与第一个规则有两个不同之处:在 第47行 和A <TextSymbolizer> 不存在,因此不会显示任何标签。

第三条规则 lines 51-63 ,表示最大比例分母,对应于地图“缩小”的时间。比例规则设置为 第53行 使该规则适用于比例尺分母为200000000或更大的任何地图。同样,此规则与其他规则之间的唯一区别是线条的宽度,在 第60行 以及 <TextSymbolizer> 这样就不会显示任何标签。

生成的样式生成一个多边形笔划,当放大时该笔划会变大,只有放大到足够的级别时才会显示标签。

Previous: 线
Next: 栅格