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 中的空格的主要内容,如果未能解决你的问题,请参考以下文章