缩放

不同的地方很常见 rules 在网络地图上以不同的缩放级别应用。

例如,在Roads图层上,您不希望在查看整个世界时显示每条道路。或者,您可能希望根据缩放级别设置相同要素的不同样式。例如:城市图层使用低缩放级别的点(“缩小”时)和具有较高缩放级别的多边形边界(“放大”)的点设置样式。

YSLD允许根据比例或缩放级别应用规则。可以按比例指定,也可以按比例定义缩放级别并按缩放级别指定。

警告

请注意,当图层包含在地图中时,如果地图与图层具有不同的坐标参考系,图层的比例(应用样式的地方)可能会发生不同的交互作用。

比例语法

在规则中使用scale条件参数的语法是::

rules:
- ...
  scale: [<min>,<max>]
  ...

在哪里?

属性

必修的?

描述

默认值

min

是的

将应用规则的最小刻度(包括最小刻度)。值是一个数字,可以是十进制或整数。

不适用

max

是的

将应用规则的最大刻度(不包括)。值是一个数字,可以是十进制或整数。

不适用

备注

不能对这些值中的任何一个使用表达式。

使用文本字符串 minmax 表示没有上下比例边界的地方。例如,要表示比例小于 <max> 价值:

scale: [min,<max>]

表示比例大于或等于 <min> 价值:

scale: [<min>,max]

备注

在上述示例中, minmax 始终是文字,输入的内容与此完全相同,而 <min><max> 将替换为实际的标量值。

如果完全忽略scale参数,则规则将适用于所有比例。

比例示例

三条规则,均适用于不同规模:

rule:
- name: large_scale
  scale: [min,100000]
  symbolizers:
  - line:
      stroke-width: 3
      stroke-color: '#0165CD'
- name: medium_scale
  scale: [100000,200000]
  symbolizers:
  - line:
      stroke-width: 2
      stroke-color: '#0165CD'
- name: small_scale
  scale: [200000,max]
  symbolizers:
  - line:
      stroke-width: 1
      stroke-color: '#0165CD'

此示例将显示以下行:

  • 行程宽度为3,刻度小于100000 (large_scale

  • 行程宽度为2,刻度在100000到200000之间。 (medium_scale

  • 行程宽度为1,刻度大于200000 (small_scale

根据上述规则,以下任意样本量表将映射到以下规则:

规模

规则

50000

large_scale

100000

medium_scale

150000

medium_scale

200000

small_scale

300000

small_scale

注意边缘情况,因为 min 价值是包容性的 max 值是独占的。

科学量表符号

为了使理解更容易,减少出错的可能性,刻度值可以用科学的符号表示。

所以一个规模 500000000 ,等于5×10^8(带8个零的5),可替换为 5e8 .

缩放比例关系

使用网络地图时,通常更方便地讨论缩放级别而不是缩放比例。缩放和缩放之间的关系取决于上下文。

例如,对于具有世界边界的epsg:4326,缩放级别0(完全缩小)对应于大约279541000的比例,每个后续缩放级别的比例值为比例值的一半。对于具有世界边界的epsg:3857(web-mercator),缩放级别0对应于大约559082000的比例,并且每个后续的缩放级别都有一半的比例值。

但由于缩放级别是离散的(0、1、2等),并且缩放级别是连续的,所以它实际上是一个与给定缩放级别相对应的缩放级别范围。

例如,如果您的缩放级别0对应1000000的缩放比例(并且每个后续缩放级别都是该比例的一半,这是常见的),则可以将规则的缩放比例值设置为:

  • scale: [750000,1500000] (包括1000000)

  • scale: [340000,750000] (含50万元)

  • scale: [160000,340000] (包括250000)

  • scale: [80000,160000] (包括125000)

  • 等。

也要知道缩放比例和缩放比例之间的反比关系; 随着缩放级别的增加,缩放比例减小。

缩放语法

在某些有限的情况下,通过为预定义网格集指定缩放级别来指定缩放比例更为有用。这些网格集可以是geoserver中的任何预定义网格集。

在规则内,使用缩放级别的语法为:

rules:
- ...
  zoom: [<min>, <max>]
  ...

在哪里?

属性

必修的?

描述

默认值

min

是的

将应用规则的最小缩放级别。值是整数。

不适用

max

是的

将应用规则的最大缩放级别。值是整数。

不适用

备注

不能对这些值中的任何一个使用表达式。

和比例一样,使用文字字符串 minmax 表示没有上下比例边界的地方。例如,表示缩放级别小于 <max> 价值:

zoom: [min,<max>]

表示缩放级别大于或等于 <min> 价值:

zoom: [<min>,max]

备注

在上述示例中, minmax 始终是文字,输入的内容与此完全相同,而 <min><max> 将替换为实际的标量值。

这个 scalezoom 参数不应在规则中一起使用(但如果使用, scale 优先于 zoom

指定网格

虽然每个Web地图都可以有缩放级别,但缩放级别与其比例之间的特定关系取决于所使用的网格集(空间参考系统、范围等)。

因此,在ysld中指定缩放级别时,还应该指定网格。

这个 grid 参数应保持在ysld内容的顶部,在任何 要素样式规则 .语法是::

grid:
  name: <string>

在哪里?

财产

必修的?

描述

默认值

name

WGS84WebMercator 或geoserver中预定义网格集的名称。

WebMercator

备注

由于许多Web地图使用“Web Mercator”(也称为epsg:3857或epsg:900913),如果没有,则假定为默认值。 grid 指定。

警告

由于多个网格集可以包含相同的SRS,我们建议使用epsg代码以外的代码命名自定义网格集。

缩放示例

默认网格集

鉴于web mercator(也称为epsg:3857或epsg:900913)的默认值,不需要 grid 名称,这将缩放级别定义为以下缩放级别(四舍五入到下面最接近的整数):

规模

缩放级别

559082264

0

279541132

1

139770566

2

69885283

3

34942641

4

17471321

5

8735660

6

4367830

7

2183915

8

<previous_scale> / 2

<previous_zoom> + 1

命名网格集

对于现有网格集 WGS84 (通常称为 EPSG:4326 ):

grid:
  name: WGS84

这将缩放级别定义为以下缩放级别(四舍五入到下面最接近的整数):

规模

缩放级别

559082264

0

279541132

1

139770566

2

69885283

3

34942641

4

17471321

5

8735660

6

4367830

7

2183915

8

<previous_scale> / 2

<previous_zoom> + 1

给定一个名为gridset的自定义 NYLongIslandFtUS ,由CRS定义 EPSG:2263 充分发挥其作用:

grid:
  name: NYLongIslandFtUS

这将缩放级别定义为以下值(四舍五入到下面最接近的整数):

规模

缩放级别

4381894

0

2190947

1

1095473

2

547736

3

273868

4

136934

5

68467

6

34234

7

17117

8

<previous_scale> / 2

<previous_zoom> + 1

备注

这些比例值可以在 Gridsets 网格集定义下的页面:

../../../_images/scalezoom_customgridset.png

在geoserver中定义的网格集

具体来说,请注意 Scale 值低于 Tile Matrix Set .

Previous: 文本符号
Next: 过滤器