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

You may also like...