多边形¶
多边形是包含外缘(或“笔划”)和内缘(或“填充”)的二维形状。多边形可以被认为是一个不规则形状的点,其样式与点类似。
多边形层示例¶
这个 polygons layer 下面使用的是一个虚构国家的县信息。作为参考,下面包含了多边形的属性表。
|
|
|
|---|---|---|
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 "Simple polygon" YSLD
title: 'YSLD Cook Book: Simple polygon'
feature-styles:
- name: name
rules:
- symbolizers:
- polygon:
fill-color: '#000080'
细节¶
对于这种样式,一个特征样式中有一个规则,这是最简单的可能情况。(除非另有规定,否则所有后续示例将共享此特性。)通过多边形符号完成多边形的样式设置。( lines 6-7 ) 第7行 指定深蓝色 ('#000080' )作为多边形的填充颜色。
备注
图中多边形周围的浅色边界是由相邻的多边形引起的渲染器的伪影。这种样式没有边框。
带笔划的简单多边形¶
此示例将2像素的白色笔画添加到 简单多边形 例子。
带笔划的简单多边形¶
代码¶
Download the "Simple polygon with stroke" YSLD
title: 'YSLD Cook Book: Simple polygon with stroke'
feature-styles:
- name: name
rules:
- symbolizers:
- polygon:
stroke-color: '#FFFFFF'
stroke-width: 2
fill-color: '#000080'
细节¶
此示例与 简单多边形 上面的例子,加上 stroke 参数( lines 7-8 ) 第7行 将笔划颜色设置为白色 ('#FFFFFF' ) 第8行 将笔划的宽度设置为2像素。
透明多边形¶
此示例基于 带笔划的简单多边形 示例并通过将不透明度设置为50%使填充部分透明。
透明多边形¶
代码¶
Download the "Transparent polygon" YSLD
title: 'YSLD Cook Book: Transparent polygon'
feature-styles:
- name: name
rules:
- symbolizers:
- polygon:
stroke-color: '#FFFFFF'
stroke-width: 2
fill-color: '#000080'
fill-opacity: 0.5
细节¶
此示例与 带笔划的简单多边形 示例,保存以定义填充的不透明度 第10行 .0.5的值会导致部分透明的填充,即50%不透明。不透明度值为1将填充绘制为100%不透明,而不透明度值为0将导致完全透明(0%不透明)填充。在本例中,由于背景是白色,所以深蓝色看起来更亮。如果将这些点设置在深色背景上,则生成的颜色将更暗。
图形填充¶
此示例使用瓦片图形填充多边形。
图形填充¶
代码¶
Download the "Graphic fill" YSLD
title: 'YSLD Cook Book: Graphic fill'
feature-styles:
- name: name
rules:
- symbolizers:
- polygon:
fill-color: '#808080'
fill-graphic:
size: 93
symbols:
- external:
url: colorblocks.png
format: image/png
细节¶
此样式用瓦片图形填充多边形。这被称为 external 在ysld中,将其与渲染器“内部”的常用形状(如正方形和圆形)区分开来。 Lines 11-13 指定图形的详细信息,使用 第12行 设置图形的路径和文件名 第13行 指示图形的文件格式(mime类型) (image/png )。尽管可以根据需要指定完整的URL,但在 第12行 因为这个图形和ysld包含在同一个目录中。 第9行 确定以像素为单位显示的图形的高度;如果该值与图形的高度不同,则在保持纵横比的同时将相应地缩放该值。
用于填充的图形¶
填充图案填充¶
此示例使用图案填充图案填充多边形。
填充图案填充¶
代码¶
Download the "Hatching fill" YSLD
title: 'YSLD Cook Book: Hatching fill'
feature-styles:
- name: name
rules:
- symbolizers:
- polygon:
fill-color: '#808080'
fill-graphic:
size: 16
symbols:
- mark:
shape: shape://times
stroke-color: '#990099'
stroke-width: 1
细节¶
在这个例子中,有一个 fill-graphic 参数与中的相同 图形填充 示例,但是 mark ( lines 11-14 )使用而不是 external . 第12行 指定在整个多边形中瓦片一个“时间”符号(“X”)。 第13行 将颜色设置为紫色 ('#990099' ) 第14行 将图案填充的宽度设置为1像素,以及 第9行 将瓦片的大小设置为16像素。因为图案填充瓦片总是方形的, size 设置宽度和高度。
带默认标签的多边形¶
此示例显示多边形上的文本标签。在没有任何其他自定义的情况下,这就是标签的显示方式。
带默认标签的多边形¶
代码¶
Download the "Polygon with default label" YSLD
title: 'YSLD Cook Book: Polygon with default label'
feature-styles:
- name: name
rules:
- symbolizers:
- polygon:
stroke-color: '#FFFFFF'
stroke-width: 2
fill-color: '#40FF40'
- text:
label: ${name}
placement: point
细节¶
在这个例子中有一个多边形符号和一个文本符号。 Lines 6-9 包含多边形符号。多边形的填充设置为 第7行 变成浅绿色 ('#40FF40' )当多边形的笔划设置为 lines 8-9 变白 ('#FFFFFF' )厚度为2像素。标签设置在文本符号中 lines 10-12 用 第11行 确定要显示的文本,在本例中是“name”属性的值。(请参阅中的属性表 多边形层示例 如有必要,请参见节。)有关标签的所有其他详细信息都设置为渲染器默认值,这里是Times New Roman字体、字体颜色黑色和字体大小为10像素。
标签光环¶
这个例子改变了 带默认标签的多边形 在标签上添加白色光晕。
标签光环¶
代码¶
Download the "Label halo" YSLD
title: 'YSLD Cook Book: Label halo'
feature-styles:
- name: name
rules:
- symbolizers:
- polygon:
stroke-color: '#FFFFFF'
stroke-width: 2
fill-color: '#40FF40'
- text:
label: ${name}
halo:
fill-color: '#FFFFFF'
radius: 3
placement:
type: point
细节¶
此示例与 带默认标签的多边形 ,在标签周围添加光环 lines 12-14 .光环在标签周围创建颜色缓冲区,以提高标签的易读性。 第14行 设置光晕的半径,围绕标签边缘扩展光晕3个像素,以及 第13行 将光晕的颜色设置为白色 ('#FFFFFF' )。由于当设置为相对于文本颜色的鲜明对比度时,光晕最有用,因此本示例在黑色文本周围使用白色光晕以确保最佳可读性。
带样式标签的多边形¶
此示例改进了 带默认标签的多边形 示例:将标签置于多边形的中心,指定不同的字体名称和大小,并设置其他标签放置优化。
带样式标签的多边形¶
代码¶
Download the "Polygon with styled label" YSLD
title: 'YSLD Cook Book: Polygon with styled label'
feature-styles:
- name: name
rules:
- symbolizers:
- polygon:
stroke-color: '#FFFFFF'
stroke-width: 2
fill-color: '#40FF40'
- text:
label: ${name}
fill-color: '#000000'
font-family: Arial
font-size: 11
font-style: normal
font-weight: bold
placement: point
anchor: [0.5,0.5]
x-autoWrap: 60
x-maxDisplacement: 150
细节¶
此示例与 带默认标签的多边形 示例,在文本符号中添加其他样式选项 13-21 . Lines 13-16 设置字体样式。 第13行 将字体系列设置为Arial, 第14行 将字体大小设置为11像素, 第15行 将字体样式设置为“普通”(与“斜体”或“斜体”相反),以及 第16行 将字体粗细设置为“粗体”(而不是“普通”)。
这个 anchor 参数对 第18行 通过将标签沿多边形的质心水平和垂直放置50%(或0.5),使标签居中。
最后,还有两个附加的标签放置优化: 第20行 通过将标签上的换行设置为60像素,确保长标签跨多行拆分,以及 第21行 允许标签最多替换150像素。这样可以确保标签被压缩,并且不太可能溢出多边形边界。注意角落里有一个巨大的小县,它的标签现在已经显示出来了。”
基于属性的多边形¶
此示例根据“pop”(population)属性对多边形进行不同的样式设置。
基于属性的多边形¶
代码¶
Download the "Attribute-based polygon" YSLD
title: 'YSLD Cook Book: Attribute-based polygon'
feature-styles:
- name: name
rules:
- name: SmallPop
title: Less Than 200,000
filter: ${pop < '200000'}
symbolizers:
- polygon:
fill-color: '#66FF66'
- name: MediumPop
title: 200,000 to 500,000
filter: ${pop >= '200000' AND pop < '500000'}
symbolizers:
- polygon:
fill-color: '#33CC33'
- name: LargePop
title: ${Greater Than 500,000}
filter: pop > '500000'
symbolizers:
- polygon:
fill-color: '#009900'
细节¶
我们虚构国家中的每个多边形都有一个人口,由人口(“pop”)属性表示。此样式包含三个规则,根据“pop”属性的值更改填充,较小的值生成较浅的颜色,较大的值生成较深的颜色。
三条规则设计如下:
规则顺序 |
规则名称 |
人口 ( |
颜色 |
|---|---|---|---|
1 |
SmallPop |
20万以下 |
|
2 |
MediumPop |
200000至500000 |
|
3 |
LargePop |
大于500000 |
|
在这种情况下,规则的顺序并不重要,因为每个形状仅由单个规则呈现。
第一条规则,关于 lines 5-10 ,指定填充属性小于200000的多边形的样式。 第7行 将此过滤器(表示属性(“pop”)设置为“小于”200000的值。多边形填充的颜色设置为浅绿色。 ('#66FF66' )打开 第10行 .
第二条规则 lines 11-16 ,类似,为人口属性大于或等于200000但小于500000的多边形指定样式。过滤器已开启 第13行 .此筛选器指定两个条件而不是一个:“大于或等于”和“小于”筛选器。这些标准由 AND ,这要求两个过滤器都必须为真,规则才能适用。多边形填充的颜色设置为中绿色 ('#33CC33' )打开 第16行 .
第三条规则 lines 17-22 ,指定填充属性大于或等于500000的多边形的样式。过滤器已开启 第19行 .多边形填充的颜色是该规则中唯一的其他差异,它设置为深绿色。 ('#009900' )打开 第22行 .
基于缩放的多边形¶
此示例在不同缩放级别更改多边形的样式。
基于缩放的多边形:放大¶
基于缩放的多边形:部分缩放¶
基于缩放的多边形:缩小¶
代码¶
Download the "Zoom-based polygon" YSLD
title: 'YSLD Cook Book: Zoom-based polygon'
feature-styles:
- name: name
rules:
- name: Large
scale: [min,1.0e8]
symbolizers:
- polygon:
stroke-color: '#000000'
stroke-width: 7
fill-color: '#0000CC'
- text:
label: ${name}
fill-color: '#FFFFFF'
font-family: Arial
font-size: 14
font-style: normal
font-weight: bold
placement: point
anchor: [0.5,0.5]
- name: Medium
scale: [1.0e8,2.0e8]
symbolizers:
- polygon:
stroke-color: '#000000'
stroke-width: 4
fill-color: '#0000CC'
- name: Small
scale: [2.0e8,max]
symbolizers:
- polygon:
stroke-color: '#000000'
stroke-width: 1
fill-color: '#0000CC'
细节¶
在创建自然外观的地图时,通常需要在更高的缩放级别上使形状更大。此示例根据缩放级别更改线条的厚度。多边形本质上是二维的,但根据缩放级别调整多边形样式的另一种方法是调整笔划的厚度(随着地图的放大而变大),或者将标签限制为特定的缩放级别。这可以确保笔划和标签的大小和数量保持清晰,并且不会使多边形本身蒙上阴影。
缩放级别(或更准确地说,缩放分母)是指地图的比例。比例尺分母为10000表示地图的比例尺为1:10000,以地图投影的单位表示。
备注
确定要使用的适当比例分母(缩放级别)超出了本例的范围。
此样式包含三个规则,定义如下:
规则顺序 |
规则名称 |
比例分母 |
笔画宽度 |
标签显示? |
|---|---|---|---|---|
1 |
大 |
1:100000000或以下 |
7 |
是的 |
2 |
培养基 |
1:100000000至1:200000000 |
4 |
不 |
3 |
小的 |
大于1:200000000 |
2 |
不 |
第一条规则,关于 lines 5-20 ,表示最小比例分母,对应于视图“放大”的时间。比例规则设置为 第6行 这样规则只适用于比例分母小于等于100000000的情况。 Line 11 将填充定义为蓝色 ('#0000CC' )。请注意,无论比例分母是什么,填充在所有规则中都保持不变。就像在 带默认标签的多边形 或 带样式标签的多边形 例如,规则还包含一个文本符号 lines 12-20 用于在多边形顶部绘制文本标签。 Lines 15-18 将字体信息设置为Arial、14像素和粗体,不带斜体。通过设置,标签沿多边形的质心水平和垂直居中。 anchor 成为 [0.5, 0.5] (或50%)在 第20行 .最后,字体的颜色设置为白色。 ('#FFFFFF' 在 第14行 .
第二条规则 lines 21-27 ,表示中间刻度分母,对应于视图“部分缩放”的时间。比例规则在 第22行 设置规则,使其适用于比例尺分母在100000000到200000000之间的任何地图。(下限是包含的,上限是独占的,因此精确到200000000的缩放级别将 not 在这里应用。)除比例外,此规则与第一个规则有两个不同之处:在 第26行 文本符号不存在,因此不会显示任何标签。
第三条规则 lines 28-34 ,表示最大比例分母,对应于地图“缩小”的时间。比例规则设置为 第29行 使该规则适用于比例尺分母为200000000或更大的任何地图。同样,此规则与其他规则之间的唯一区别是线条的宽度,在 第33行 以及缺少文本符号,因此不会显示任何标签。
生成的样式生成一个多边形笔划,当放大时该笔划会变大,只有放大到足够的级别时才会显示标签。