多边形

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

多边形层示例

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

简单多边形

代码

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像素的白色笔画添加到 简单多边形 例子。

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

带笔划的简单多边形

代码

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%使填充部分透明。

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

透明多边形

代码

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%不透明)填充。在本例中,由于背景是白色,所以深蓝色看起来更亮。如果将这些点设置在深色背景上,则生成的颜色将更暗。

图形填充

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

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

图形填充

代码

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行 确定以像素为单位显示的图形的高度;如果该值与图形的高度不同,则在保持纵横比的同时将相应地缩放该值。

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

用于填充的图形

填充图案填充

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

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

填充图案填充

代码

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 参数与中的相同 图形填充 示例,但是 marklines 11-14 )使用而不是 external . 第12行 指定在整个多边形中瓦片一个“时间”符号(“X”)。 第13行 将颜色设置为紫色 ('#990099'第14行 将图案填充的宽度设置为1像素,以及 第9行 将瓦片的大小设置为16像素。因为图案填充瓦片总是方形的, size 设置宽度和高度。

带默认标签的多边形

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

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

带默认标签的多边形

代码

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像素。

标签光环

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

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

标签光环

代码

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' )。由于当设置为相对于文本颜色的鲜明对比度时,光晕最有用,因此本示例在黑色文本周围使用白色光晕以确保最佳可读性。

带样式标签的多边形

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

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

带样式标签的多边形

代码

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)属性对多边形进行不同的样式设置。

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

基于属性的多边形

代码

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”属性的值更改填充,较小的值生成较浅的颜色,较大的值生成较深的颜色。

三条规则设计如下:

规则顺序

规则名称

人口 (pop

颜色

1

SmallPop

20万以下

#66FF66

2

MediumPop

200000至500000

#33CC33

3

LargePop

大于500000

#009900

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

第一条规则,关于 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行 .

基于缩放的多边形

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

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

基于缩放的多边形:放大

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

基于缩放的多边形:部分缩放

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

基于缩放的多边形:缩小

代码

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行 以及缺少文本符号,因此不会显示任何标签。

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

Previous: 线
Next: 栅格