geoserver中在配置图层线条样式的时候,有时候会碰到需要给线条加箭头的情况,那么这个箭头要如何实现呢,先看看效果:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczX0xiRGZkRGZ0Xy9GbvNGL2EzXlpXazxSMZ5mYshWblFDaywEMW1mY1RzRapnTtxkb5ckYplTeMZTTINGMShUYfRHelRHLwEzX39GZhh2css2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xyayFWbyVGdhd3LcV2Zh1Wa9M3clN2byBXLzN3btg3Pn5GcuYTOxIDMxYTM4IjMxkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
上面样式完整代码:
<?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个的一起出现,有兴趣的同学可以试试。