geoserver中在配置圖層線條樣式的時候,有時候會碰到需要給線條加箭頭的情況,那麼這個箭頭要如何實作呢,先看看效果:
上面樣式完整代碼:
<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"
xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc"
xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<NamedLayer>
<Name>vectorline</Name>
<UserStyle>
<Title>A cyan line style</Title>
<FeatureTypeStyle>
<Rule>
<LineSymbolizer>
<Stroke>
<CssParameter name="stroke">#fffc00</CssParameter>
<CssParameter name="width">2</CssParameter>
</Stroke>
</LineSymbolizer>
<LineSymbolizer>
<Stroke>
<GraphicStroke>
<Graphic>
<Mark>
<WellKnownName>shape://oarrow</WellKnownName>
<Stroke>
<CssParameter name="stroke">#e06666</CssParameter>
<CssParameter name="width">2</CssParameter>
</Stroke>
</Mark>
<Size>20</Size>
</Graphic>
</GraphicStroke>
<CssParameter name="stroke-dashoffset">10</CssParameter>
<CssParameter name="stroke-dasharray">20 100</CssParameter>
</Stroke>
</LineSymbolizer>
</Rule>
</FeatureTypeStyle>
</UserStyle>
</NamedLayer>
</StyledLayerDescriptor>
關鍵樣式代碼解讀:
<LineSymbolizer>
<Stroke>
<GraphicStroke>
<Graphic>
<Mark>
<WellKnownName>shape://oarrow</WellKnownName>
<Stroke>
<CssParameter name="stroke">#e06666</CssParameter><!-- 箭頭線條的顔色 -->
<CssParameter name="width">2</CssParameter><!-- 箭頭線條的寬度 -->
</Stroke>
</Mark>
<Size>20</Size><!-- 控制每個箭頭元素的大小 -->
</Graphic>
</GraphicStroke>
<CssParameter name="stroke-dashoffset">10</CssParameter><!-- 箭頭的偏移 -->
<CssParameter name="stroke-dasharray">20 100</CssParameter><!-- 控制箭頭和空白部分出現的規律 -->
</Stroke>
</LineSymbolizer>
不難看出,箭頭的實作其實是通過虛線的實作來描述的,隻是将虛線的實作部分換成了箭頭而已。既然這樣,我們就可以通過修改箭頭大小和stroke-dasharray來達到一些很神奇的效果:
箭頭密度調大
通過修改stroke-dasharray即可以修改箭頭出現的密度
箭頭大小變大
通過修改Size标簽數字大小可以控制箭頭圖形的大小
多個箭頭成對出現
将stroke-dasharry的第一個數字參數改為箭頭大小的兩倍,即可實作箭頭成對出現。同理,如果将stroke-dasharry第一個參數改為箭頭大小的3倍,則箭頭會3個3個的一起出現,有興趣的同學可以試試。