https://docs.geoserver.org/latest/en/user/styling/sld/cookbook/points.html#example-points-layer
在不同比例尺下显示不同的大小
本示例在不同的缩放级别更改点的样式
创建自然外观的地图时,通常需要在较高的缩放级别上放大形状。本示例根据缩放级别(或更准确地说,比例分母)设置点的样式以改变大小。比例尺分母是指地图的比例尺。比例分母为10,000表示地图以地图投影为单位的比例为1:10,000。
注意
确定要使用的适当比例分母(缩放级别)超出了本示例的范围。
此样式包含三个规则。这三个规则的设计如下:
规则顺序 | 规则名称 | 标度分母 | 点数 |
1个 | 大 | 1:160,000,000以下 | 12 |
2 | 中 | 1:160,000,000至1:320,000,000 | 8 |
3 | 小 | 大于1:320,000,000 | 4 |
这些规则的顺序无关紧要,因为每个规则中指定的比例尺不重叠。
第一条规则(第2-16行)适用于最小比例分母,与视图“放大”时相对应。比例尺规则设置在第4行上,因此该规则将适用于比例分母为160,000,000或更小的任何地图。该规则绘制一个圆(第8行),红色(#CC3300
上线10)的尺寸的12个像素(13行)。
第二条规则(第17-32行)是中间比例分母,对应于视图“部分缩放”的时间。比例尺规则在第19-20行上设置,因此该规则将适用于比例分母在160,000,000和320,000,000之间的任何地图。(the <MinScaleDenominator>
包含且the <MaxScaleDenominator>
排除,因此精确的320,000,000缩放级别将不适用。)除比例尺外,此规则与第一个规则之间的唯一区别是符号的大小,其大小设置为8像素第29行。
第三条规则(第33-47行)是最大比例尺分母,对应于地图“缩小”的时间。比例尺规则在第35行设置,因此该规则将应用于比例分母为320,000,000或更大的任何地图。同样,此规则与其他规则之间的唯一其他区别是符号的大小,该大小在第44行设置为4个像素。
这种风格的结果是,随着放大一个点,绘制的点变大,而缩小一个点,绘制的点变小
<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd"
xmlns="http://www.opengis.net/sld"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<NamedLayer>
<Name>Simple point</Name>
<UserStyle>
<Title>GeoServer SLD Cook Book: Simple point</Title>
<FeatureTypeStyle>
<Rule>
<Name>Large</Name>
<MaxScaleDenominator>160000000</MaxScaleDenominator>
<PointSymbolizer>
<Graphic>
<Mark>
<WellKnownName>circle</WellKnownName>
<Fill>
<CssParameter name="fill">#CC3300</CssParameter>
</Fill>
</Mark>
<Size>12</Size>
</Graphic>
</PointSymbolizer>
</Rule>
<Rule>
<Name>Medium</Name>
<MinScaleDenominator>160000000</MinScaleDenominator>
<MaxScaleDenominator>320000000</MaxScaleDenominator>
<PointSymbolizer>
<Graphic>
<Mark>
<WellKnownName>circle</WellKnownName>
<Fill>
<CssParameter name="fill">#CC3300</CssParameter>
</Fill>
</Mark>
<Size>8</Size>
</Graphic>
</PointSymbolizer>
</Rule>
<Rule>
<Name>Small</Name>
<MinScaleDenominator>320000000</MinScaleDenominator>
<PointSymbolizer>
<Graphic>
<Mark>
<WellKnownName>circle</WellKnownName>
<Fill>
<CssParameter name="fill">#CC3300</CssParameter>
</Fill>
</Mark>
<Size>4</Size>
</Graphic>
</PointSymbolizer>
</Rule>
</FeatureTypeStyle>
</UserStyle>
</NamedLayer>
</StyledLayerDescriptor>