Geoserver SLD 样式 - propertyName 中的空格

Posted

技术标签:

【中文标题】Geoserver SLD 样式 - propertyName 中的空格【英文标题】:Geoserver SLD Style - Space in propertyName 【发布时间】:2020-12-16 21:44:05 【问题描述】:

我正在尝试在 Geoserver 中设置一个 sld 样式,该样式引用 PostGIS 视图“Route Type”中的列。我想在我的列名中有空格,因为我的目标是为我的所有空间数据创建用户友好的视图。使用下面的 sld 我得到一个错误。我试过用  <![CDATA[Property Name]]> 替换空格 这些都不能解决问题。

propertyName 中可以有空格吗?

<?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>Truck Routes and Restrictions</Name>
   <UserStyle>
     <Title>Truck Routes and Restrictions</Title>
     <FeatureTypeStyle>
       <Rule>
         <Name>Designated Municipal Truck Route</Name>
         <ogc:Filter>
         <ogc:PropertyIsLike  wildCard="*" singleChar="." escape="!">
           <ogc:PropertyName>Route Type</ogc:PropertyName>
           <ogc:Literal>*Designated Municipal Truck Route*</ogc:Literal>
         </ogc:PropertyIsLike>
         </ogc:Filter>
         <LineSymbolizer>
        <Stroke>
          <CssParameter name="stroke">#006600</CssParameter>
          <CssParameter name="stroke-width">3</CssParameter>
        </Stroke>
      </LineSymbolizer>
       </Rule>
     </FeatureTypeStyle>
   </UserStyle>
 </NamedLayer>
</StyledLayerDescriptor>

【问题讨论】:

【参考方案1】:

正如我所读的here PropertyName 应该能够被Web Feature Service 检索到。接下来我阅读了How to request WFS propertyName containing parentheses,在那里我阅读了所有此类元素必须匹配XML element naming,它不允许任何空格。

所以你不能使用PropertyName 中的空间。您应该以您的用户无法看到的方式使用“我的列名”。

【讨论】:

另外,如果“我的列名”是指 SQL 列,您可以使用视图为您的用户更改列名 谢谢。我最终做的是使用具有没有空格的字段名称的“原始数据集”作为“显示层”。这意味着所有 sld 样式都基于这些列名(从不包含空格)。为每个“原始数据集”创建一个视图,该视图具有格式良好的列名(包括空格)。此视图仅用于 getFeatureInfo 请求以显示具有格式正确的字段名称的弹出窗口,而原始数据集显示样式化的地理特征。 很高兴听到我的帮助 :)

以上是关于Geoserver SLD 样式 - propertyName 中的空格的主要内容,如果未能解决你的问题,请参考以下文章

如何在Geoserver中测试SLD样式文件的正确性

外部图形和属性规则的 Geoserver SLD 样式问题

geoserver 图层样式

GeoServer中使用样式化图层描述符(sld)加注记

GeoServer中sld文件的获取来源

QGIS中生成的geoserver中的样式显示不完整