最近在做发布的时候出现了大量对大量点数据标注,发现部分情况下标注显示不完全,而且每个缩放层级,显示和隐藏的TextSymbolizer不一致。
一开始以为是数据的问题,通过CQL、Jsonb的索引的问题查找了大半天并未解决,后面简化了一下SLD,发现在最简单的TextSymbolizer下,没有过滤规则,也会出现这种问题,因此判断,并非数据过滤的问题,而是符号本身显示问题。
顺着这个思路,找了一下标准的自动避让,发现Geoserver是默认作了标注避让,对于切片后显示不完全的就隐藏掉了。
对此,可以开启强制显示标签处理,具体代码如下:
<!-- TextSymbolizer 增加如下配置:-->
<!-- 关闭碰撞检测 -->
<VendorOption name="conflictResolution">false</VendorOption>
<!-- 切片一半的情况下也显示 -->
<VendorOption name="partials">true</VendorOption>
<!--如果显示的标签文字不完整,可以在发布时调整"Default Rendering Buffer"缓冲值的大小-->
VenderOption放在</ TextSymbolizer>的上一级,如下所示:
最后显示效果:
另外还有其他的VenderOption,作用的解释后续补充