多边形

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

多边形层示例

这个 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

简单多边形

代码

1 * {
2   fill: #000080;
3 }

细节

这个简单的规则应用深蓝色 (#000080 )填充到数据集中的所有多边形。

备注

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

带笔划的简单多边形

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

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

带笔划的简单多边形

代码

1 * {
2   fill: #000080;
3   stroke: #FFFFFF;
4   stroke-width: 2;
5 }

细节

此示例与 简单多边形 上面的例子,加上“stroke”和“stroke width”属性,在每个多边形周围添加一个2像素宽的白色边框。

透明多边形

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

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

透明多边形

代码

1 * {
2   fill: #000080;
3   fill-opacity: 0.5;
4   stroke: #FFFFFF;
5   stroke-width: 2;
6 }

细节

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

图形填充

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

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

图形填充

代码

1 * {
2   fill: url("colorblocks1.png");
3   fill-mime: 'image/png';
4 }

细节

此样式用瓦片图形填充多边形。所选图形提供了填充的URL,在本例中,它是相对于 styles 包含在数据目录中的目录(可以提供绝对路径以及Internet引用)。 第3行 指定图像本身是PNG(默认情况下,代码假定使用了JPEGS,除非我们指定其mime类型,否则将无法解析文件)。未指定图像的大小,这意味着将使用本机大小。如果需要重新缩放,可以使用“fill-size”属性强制使用不同的大小。

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

用于填充的图形

填充图案填充

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

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

填充图案填充

代码

1 * {
2   fill: symbol("shape://times");
3   :fill {
4     size: 16;
5     stroke: #990099;
6     stroke-width: 1px;
7   }
8 }

细节

在本例中,填充被指定为“shape://times”符号,该符号将被瓦片以创建交叉阴影效果。

舱口的细节在 第3行 *,其中伪选择器“:fill”用于匹配填充内容,并指定我们需要一个16像素的大符号(符号越大,交叉阴影越粗),并用1像素宽的紫色笔画。

带默认标签的多边形

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

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

带默认标签的多边形

代码

1 * {
2   fill: #40FF40;
3   stroke: white;
4   stroke-width: 2;
5   label: [name];
6   font-fill: black;
7 }

细节

Css中的单一规则适用于所有功能:首先,它用白色轮廓填充所有的多边形,然后使用默认字体(Times)、黑色和默认字体大小(10px)应用“name”属性作为标签。

标签光环

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

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

标签光环

代码

1 * {
2   fill: #40FF40;
3   stroke: white;
4   stroke-width: 2;
5   label: [name];
6   font-fill: black;
7   halo-color: white;
8   halo-radius: 3;
9 }

细节

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

带样式标签的多边形

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

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

带样式标签的多边形

代码

 1 * {
 2   fill: #40FF40;
 3   stroke: white;
 4   stroke-width: 2;
 5   label: [name];
 6   font-family: Arial;
 7   font-size: 11px;
 8   font-style: normal;
 9   font-weight: bold;
10   font-fill: black;
11   label-anchor: 0.5 0.5;
12   label-auto-wrap: 60;
13   label-max-displacement: 150;
14 }

细节

此示例与 带默认标签的多边形 例如,使用标签的其他样式选项。

字体设置为Arial、11像素、“Normal”(与“Italic”相反)和粗体。

“标签定位点”影响标签相对于多边形质心的放置位置,通过沿多边形质心水平放置50%(或0.5)以及以完全相同的方式垂直放置标签使标签居中。

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

基于属性的多边形

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

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

Attribute-based polygon

代码

 1 [parseLong(pop) < 200000] {
 2   fill: #66FF66;
 3 }
 4
 5 [parseLong(pop) >= 200000] [parseLong(pop) < 500000] {
 6   fill: #33CC33;
 7 }
 8
 9 [parseLong(pop) >= 500000] {
10   fill: #009900;
11 }

细节

备注

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

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

三条规则设计如下:

规则顺序

规则名称

人口 (pop)

Color

1

SmallPop

20万以下

#66FF66

2

MediumPop

200000至500000

#33CC33

3

LargePop

大于500000

#009900

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

第一条规则将“pop”属性低于200000的所有多边形填充为浅绿色,第二条规则将“pop”属性介于200000到500000之间的所有多边形都填充为中绿色,而第三条规则将其余多边形绘制为深绿色。

在过滤器中有趣的是使用“parselong”过滤器函数:这个函数是必要的,因为“pop”属性是一个字符串,所以我们可以对它进行字符串比较,而函数将其转换为数字,从而确保正确的数字比较。

基于缩放的多边形

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

../../../_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

代码

 1 * {
 2   fill: #0000CC;
 3   stroke: black;
 4 }
 5
 6 [@sd < 100M] {
 7    stroke-width: 7;
 8    label: [name];
 9    label-anchor: 0.5 0.5;
10    font-fill: white;
11    font-family: Arial;
12    font-size: 14;
13    font-weight: bold;
14 }
15
16 [@sd > 100M] [@sd < 200M] {
17    stroke-width: 4;
18 }
19
20 [@sd > 200M] {
21    stroke-width: 1;
22 }

细节

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

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

备注

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

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

规则顺序

规则名称

比例分母

笔画宽度

标签显示?

1

1:100000000或以下

7

是的

2

培养基

1:100000000至1:200000000

4

3

小的

大于1:200000000

2

第一条规则( lines 1-4 )定义与比例无关的属性:深蓝色填充、黑色轮廓。

第二个( lines 6-14 )规则为更高的缩放级别提供特定的覆盖,要求大的笔画(7像素)和标签,只有在该缩放级别才可见。标签为白色、粗体、Arial 14像素,其内容来自“名称”属性。

第三条规则( lines 16-18 )对于中等缩放级别,指定4像素的笔划宽度,而对于低缩放级别,最后一个规则将笔划宽度设置为1像素。( lines 20-22

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

Previous: 线
Next: 栅格