GeoServer中SLD线符号的几个测试
1.符号层次
SLD里写两个<se:FeatureTypeStyle>,就相当于写了两个符号图层。
以下这个只写了一个FeatureTypeStyle,里面包含两个Rule,第一个Rule里是先画黑色,宽度为4。第二个Rule里再画白色,宽度为3。
以下这个写了两个FeatureTypeStyle,各包含一个Rule,第一个FeatureTypeStyle画黑色,第二个画白色。
结果表明FeatureTypeStyle就是符号层。
2 标记线
GeoServer从2.1开始支持标记线,原话是 Starting
from version 2.1 dash arrays can be combined with graphic strokes to generate complex line styles with alternating symbols or a mix of lines and symbols.
下面是测试代码
<se:FeatureTypeStyle>
<se:Rule>
<se:Name>Single
symbol</se:Name>
<se:LineSymbolizer>
<se:Stroke>
<se:GraphicStroke>
<se:Graphic>
<se:ExternalGraphic>
<se:OnlineResource xlink:type=“simple” xlink:href=“svg/wind_roses/WindRose_01.svg”/>
<se:Format>image/svg+xml</se:Format>
</se:ExternalGraphic>
<se:Size>
<ogc:Literal>12</ogc:Literal>
</se:Size>
</se:Graphic>
</se:GraphicStroke>
<se:SvgParameter name=“stroke-dasharray”>10
2</se:SvgParameter>
</se:Stroke>
</se:LineSymbolizer>
</se:Rule>
</se:FeatureTypeStyle>
重点说明
(1)我这儿标记是用的外联SVG。
a. ExternalGraphic是外联SVG文件的,xlink:href=可以写绝对路径,也可以写相对路径。
相对路径一般放在X:\GeoServer 2.5.1\data_dir\styles下即可
b.SvgParameter name=“stroke-dasharray” 是点划线的参数,
比如写10
2就是点长10像素、空2像素、以此重复
比如写10
2 5 10就是 点长10像素、空2像素、点长5像素、空10像素以此重复
标记符号按道理是处于点长像素的位置,所以一旦一个标记符号的尺寸大于了点划区间的总长度,那么…呵呵…
(2)标记符号用字体
<se:LineSymbolizer>
<se:Stroke>
<se:GraphicStroke>
<se:Graphic>
<se:Mark>
<se:OnlineResource xlink:type=“simple” xlink:href=“ttf://宋体”/>
<se:Format>ttf</se:Format>
<se:MarkIndex>50</se:MarkIndex>
<se:Fill>
<se:SvgParameter name=“fill”>#000000</se:SvgParameter>
</se:Fill>
</se:Mark>
<se:Size>4.23333</se:Size>
</se:Graphic>
<se:SvgParameter name=“stroke-dasharray”>10
2</se:SvgParameter>
</se:GraphicStroke>
</se:Stroke>
</se:LineSymbolizer>
字体文件可以不是操作系统注册的,可以写个绝对路径或相对路径来引用字体文件。
MarkIndex是十进制,所以无论是Unicode还是GBK码,都要转成10进制。
SvgParameter name=“fill”看名字都能知道是什么用的了吧
其他的参数已介绍了。
转载自:https://blog.csdn.net/li55703833/article/details/38850055