geoserver样式(SLD方式)—— 箭头样式

geoserver中在配置图层线条样式的时候,有时候会碰到需要给线条加箭头的情况,那么这个箭头要如何实现呢,先看看效果:
geoserver样式(SLD方式)—— 箭头样式_第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>vectorlineName>
    <UserStyle>
      <Title>A cyan line styleTitle>
      <FeatureTypeStyle>
        <Rule>
          <LineSymbolizer>
            <Stroke>
              <CssParameter name="stroke">#fffc00CssParameter>
              <CssParameter name="width">2CssParameter>
            Stroke>
          LineSymbolizer>
          <LineSymbolizer>
          	<Stroke>
              <GraphicStroke>
                <Graphic>
                  <Mark>
                    <WellKnownName>shape://oarrowWellKnownName>
                    <Stroke>
                      <CssParameter name="stroke">#e06666CssParameter>
                      <CssParameter name="width">2CssParameter>
                    Stroke>
                  Mark>
                  <Size>20Size>
                Graphic>
              GraphicStroke>
              <CssParameter name="stroke-dashoffset">10CssParameter>
              <CssParameter name="stroke-dasharray">20 100CssParameter>
            Stroke>
          LineSymbolizer>
        Rule>
      FeatureTypeStyle>
    UserStyle>
  NamedLayer>
StyledLayerDescriptor>

关键样式代码解读:

<LineSymbolizer>
          	<Stroke>
              <GraphicStroke>
                <Graphic>
                  <Mark>
                    <WellKnownName>shape://oarrowWellKnownName>
                    <Stroke>
                      <CssParameter name="stroke">#e06666CssParameter>
                      <CssParameter name="width">2CssParameter>
                    Stroke>
                  Mark>
                  <Size>20Size>
                Graphic>
              GraphicStroke>
              <CssParameter name="stroke-dashoffset">10CssParameter>
              <CssParameter name="stroke-dasharray">20 100CssParameter>
            Stroke>
LineSymbolizer>

不难看出,箭头的实现其实是通过虚线的实现来描述的,只是将虚线的实现部分换成了箭头而已。既然这样,我们就可以通过修改箭头大小和stroke-dasharray来达到一些很神奇的效果:

箭头密度调大
geoserver样式(SLD方式)—— 箭头样式_第2张图片
geoserver样式(SLD方式)—— 箭头样式_第3张图片
通过修改stroke-dasharray即可以修改箭头出现的密度

箭头大小变大
geoserver样式(SLD方式)—— 箭头样式_第4张图片
geoserver样式(SLD方式)—— 箭头样式_第5张图片
通过修改Size标签数字大小可以控制箭头图形的大小

多个箭头成对出现
geoserver样式(SLD方式)—— 箭头样式_第6张图片
geoserver样式(SLD方式)—— 箭头样式_第7张图片
将stroke-dasharry的第一个数字参数改为箭头大小的两倍,即可实现箭头成对出现。同理,如果将stroke-dasharry第一个参数改为箭头大小的3倍,则箭头会3个3个的一起出现,有兴趣的同学可以试试。

你可能感兴趣的:(GeoServer)