以地面单位指定符号大小

SLD 1.0规范允许以单个度量单位给出符号大小:像素。这意味着符号的大小在所有缩放级别上都是相同的(这通常是所需的行为)。

符号编码1.1规范提供了 uom 属性对 Symbolizer 元素。这允许以米或英尺为单位指定样式参数大小,以及默认的屏幕像素。当使用地面单位时,样式化元素的屏幕大小会随着地图放大而增大。GeoServer支持SE 1.1 uom 其扩展SLD 1.0支持中的属性。

备注

GeoServer 2.1.0正式支持此扩展功能。如果 -DenableDpiUomRescaling=true 为JVM指定了系统变量。

的值 uom 属性是一个指示所需单元的URI。支持的测量单位为SE 1.1规范中给出的单位:

http://www.opengeospatial.org/se/units/metre
http://www.opengeospatial.org/se/units/foot
http://www.opengeospatial.org/se/units/pixel

备注

这个 px 当前不支持参数值的重写修饰符。

例子

以下SLD显示 uom 用于指定 LineSymbolizer 单位:米:

<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0" 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>5m blue line</Name>
    <UserStyle>
      <Title>tm blue line</Title>
      <Abstract>Default line style, 5m wide blue</Abstract>

      <FeatureTypeStyle>
        <Rule>
          <Title>Blue Line, 5m large</Title>
          <LineSymbolizer uom="http://www.opengeospatial.org/se/units/metre">
            <Stroke>
              <CssParameter name="stroke">#0000FF</CssParameter>
              <CssParameter name="stroke-width">5</CssParameter>
            </Stroke>
          </LineSymbolizer>
        </Rule>

      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

将样式应用于 tiger:tiger_roads 数据集显示随着地图放大,线条宽度如何增加:

../../../_images/roads_uom1.png
../../../_images/roads_uom2.png
../../../_images/roads_uom3.png