天天看點

geoserver樣式(SLD方式)—— 箭頭樣式

geoserver中在配置圖層線條樣式的時候,有時候會碰到需要給線條加箭頭的情況,那麼這個箭頭要如何實作呢,先看看效果:

geoserver樣式(SLD方式)—— 箭頭樣式

上面樣式完整代碼:

<?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來達到一些很神奇的效果:

箭頭密度調大

geoserver樣式(SLD方式)—— 箭頭樣式
geoserver樣式(SLD方式)—— 箭頭樣式

通過修改stroke-dasharray即可以修改箭頭出現的密度

箭頭大小變大

geoserver樣式(SLD方式)—— 箭頭樣式
geoserver樣式(SLD方式)—— 箭頭樣式

通過修改Size标簽數字大小可以控制箭頭圖形的大小

多個箭頭成對出現

geoserver樣式(SLD方式)—— 箭頭樣式
geoserver樣式(SLD方式)—— 箭頭樣式

将stroke-dasharry的第一個數字參數改為箭頭大小的兩倍,即可實作箭頭成對出現。同理,如果将stroke-dasharry第一個參數改為箭頭大小的3倍,則箭頭會3個3個的一起出現,有興趣的同學可以試試。

繼續閱讀