You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GeoServer的SLD样式中使用language函数实现栅格图例国际化?

无需额外参数实现栅格图例国际化的SLD配置方案

核心思路

通过ogc:language()函数将规则过滤条件与请求传入的language参数绑定,让GeoServer默认只渲染匹配当前语言的规则图例,无需额外添加legend_options参数。

具体SLD配置示例

<?xml version="1.0" encoding="UTF-8"?>
<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" xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd">
  <NamedLayer>
    <Name>internationalized-raster</Name>
    <UserStyle>
      <Name>raster-lang-style</Name>
      <FeatureTypeStyle>
        <!-- 英文规则 -->
        <Rule>
          <Name>en-rule</Name>
          <Title>English Legend</Title>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:Function name="language"/>
              <ogc:Literal>en</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <RasterSymbolizer>
            <Opacity>1.0</Opacity>
            <ColorMap>
              <ColorMapEntry color="#FF0000" quantity="0" label="Low (EN)"/>
              <ColorMapEntry color="#00FF00" quantity="50" label="Medium (EN)"/>
              <ColorMapEntry color="#0000FF" quantity="100" label="High (EN)"/>
            </ColorMap>
          </RasterSymbolizer>
        </Rule>
        <!-- 法文规则 -->
        <Rule>
          <Name>fr-rule</Name>
          <Title>French Legend</Title>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:Function name="language"/>
              <ogc:Literal>fr</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <RasterSymbolizer>
            <Opacity>1.0</Opacity>
            <ColorMap>
              <ColorMapEntry color="#FF0000" quantity="0" label="Bas (FR)"/>
              <ColorMapEntry color="#00FF00" quantity="50" label="Moyen (FR)"/>
              <ColorMapEntry color="#0000FF" quantity="100" label="Élevé (FR)"/>
            </ColorMap>
          </RasterSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

关键配置要点

  • 规则过滤绑定语言参数:每个语言对应的规则都添加<ogc:Filter>,用ogc:language()函数获取请求中的language参数,与规则指定的语言字面量匹配,GeoServer会自动过滤不匹配的规则。
  • 图例标签国际化:在ColorMapEntry的label属性中直接写入对应语言的文本,确保图例标签随语言切换。
  • 无需额外参数:通过严格的过滤条件,让GeoServer默认只保留匹配当前语言的规则,不用手动开启hideEmptyRules等参数。

验证请求示例

  • 英文图例请求:http://your-geoserver-url/wms?service=WMS&request=GetLegendGraphic&version=1.1.1&format=image/png&layer=your-workspace:internationalized-raster&language=en
  • 法文图例请求:http://your-geoserver-url/wms?service=WMS&request=GetLegendGraphic&version=1.1.1&format=image/png&layer=your-workspace:internationalized-raster&language=fr

内容的提问来源于stack exchange,提问作者SIBeckers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 09:33:23