SLD规则中含点/线符号器时TextSymbolizer的标注对象疑问
SLD TextSymbolizer 标注逻辑解析
核心结论1:TextSymbolizer 直接作用于原始要素几何,与其他Symbolizer无关
你提到的第一个场景中:
Rule Filter PointSymbolizer LineSymbolizer TextSymbolizer
TextSymbolizer不会标注Point/LineSymbolizer生成的图形,它的标注目标由自身的LabelPlacement决定:
- 如果
LabelPlacement包含PointPlacement:标注要素自身的点几何(前提是要素为点类型) - 如果
LabelPlacement包含LinePlacement:标注要素自身的线几何(前提是要素为线类型)
你的猜想中关于LabelPlacement必须二选一的部分是正确的,但要明确:这个选择是针对要素原始几何类型,而非其他Symbolizer的输出结果。
核心结论2:多个同类型Symbolizer不影响TextSymbolizer的标注目标
对于第二个场景:
Rule Filter LineSymbolizer LineSymbolizer TextSymbolizer LabelPlacement LinePlacement
这个TextSymbolizer依然只会标注要素本身的线几何,不会对两个LineSymbolizer渲染出的线条都标注。原因是:
- 所有Symbolizer都是独立作用于原始要素的几何数据,多个LineSymbolizer只是对同一要素几何重复应用不同的线条样式
- TextSymbolizer的标注逻辑完全基于原始要素的几何,和其他Symbolizer的渲染结果没有关联
内容的提问来源于stack exchange,提问作者gym
相关产品推荐
相关产品推荐

