如何解决如何通过SLD为一个记录定义集合中对象的样式
如何通过 SLD 为一个记录定义集合中对象的样式。例如,线是分开的,多边形是分开的。
例如
<Rule>
<ogc:PropertyIsEqualTo>
<ogc:Function name="geometryType">
<ogc:PropertyName>geom</ogc:PropertyName>
</ogc:Function>
<ogc:Literal>GeometryCollection</ogc:Literal>
</ogc:PropertyIsEqualTo>
<polygonSymbolizer> -- ONLY POLIGON
...
</polygonSymbolizer>
<Linesymbolizer> -- ONLY LInes
...
</Linesymbolizer>
</Rule>
到目前为止,事实证明第一种样式用于录制的所有子对象,并且线条显示为多边形。 https://i.stack.imgur.com/RoHBZ.png
解决方法
Rule
会将其所有 Symbolizer
应用于与其过滤器匹配的所有特征,因此此 SLD 的行为完全符合预期。
您需要有多个带有不同过滤器的规则:
<Rule>
<ogc:PropertyIsEqualTo>
<ogc:Function name="geometryType">
<ogc:PropertyName>geom</ogc:PropertyName>
</ogc:Function>
<ogc:Literal>Polygon</ogc:Literal>
</ogc:PropertyIsEqualTo>
<PolygonSymbolizer> -- ONLY POLIGON
...
</PolygonSymbolizer>
</Rule>
<Rule>
<ogc:PropertyIsEqualTo>
<ogc:Function name="geometryType">
<ogc:PropertyName>geom</ogc:PropertyName>
</ogc:Function>
<ogc:Literal>LineString</ogc:Literal>
</ogc:PropertyIsEqualTo>
<LineSymbolizer> -- ONLY LINES
...
</LineSymbolizer>
</Rule>
GeoServer manual 中有更多详细信息,但是,这些技术都不适用于 GeometryCollection
,因此您可能需要重新设计数据流以避免以这些方式结束。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。