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: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"看名字都能知道是什么用的了吧
其他的参数已介绍了。