Style Lines in Geoserver
In this blog, we'll explore various ways to create styles for Line data. We'll be using SLD Format to write the styles. I would highly recommend to keep SLD Reference and LineString Style cookbook handy.
LineSymbolizer allows users to write Line Specific styles.
Line Data Representation
<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
? ? ? ? ? ? ? ? ? ? ? ?xsi:schemaLocation="https://www.opengis.net/sld https://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"
? ? ? ? ? ? ? ? ? ? ? ?xmlns="https://www.opengis.net/sld" xmlns:ogc="https://www.opengis.net/ogc"
? ? ? ? ? ? ? ? ? ? ? ?xmlns:xlink="https://www.w3.org/1999/xlink" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance">
? <NamedLayer>
? ? <Name>road</Name>
? ? <UserStyle>
? ? ? <Title>A red line style</Title>
? ? ? <FeatureTypeStyle>
? ? ? ? <Rule>
? ? ? ? ? <Name>rule1</Name>
? ? ? ? ? <Title>Blue Line</Title>
? ? ? ? ? <Abstract>A solid blue line with a 1 pixel width</Abstract>
? ? ? ? ? <LineSymbolizer>
? ? ? ? ? ? <Stroke>
? ? ? ? ? ? ? <CssParameter name="stroke">#0000FF</CssParameter>
? ? ? ? ? ? </Stroke>
? ? ? ? ? </LineSymbolizer>
? ? ? ? </Rule>
? ? ? </FeatureTypeStyle>
? ? </UserStyle>
? </NamedLayer>
</StyledLayerDescriptor>
Line with border
<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
? ? ? ? ? ? ? ? ? ? ? ?xsi:schemaLocation="https://www.opengis.net/sld https://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"
? ? ? ? ? ? ? ? ? ? ? ?xmlns="https://www.opengis.net/sld" xmlns:ogc="https://www.opengis.net/ogc"
? ? ? ? ? ? ? ? ? ? ? ?xmlns:xlink="https://www.w3.org/1999/xlink" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance">
? <NamedLayer>
? ? <Name>road</Name>
? ? <UserStyle>
? ? ? <Title>A red line style</Title>
? ? ? <FeatureTypeStyle>
? ? ? ? <Rule>
? ? ? ? ? <Name>rule1</Name>
? ? ? ? ? <Title>Blue Line</Title>
? ? ? ? ? <Abstract>A solid blue line with a 1 pixel width</Abstract>
? ? ? ? ? ? <LineSymbolizer>
? ? ? ? ? ? <Stroke>
? ? ? ? ? ? ? <CssParameter name="stroke">#f00</CssParameter>
? ? ? ? ? ? ? ?<CssParameter name="stroke-width">5</CssParameter>
? ? ? ? ? ? </Stroke>
? ? ? ? ? </LineSymbolizer>
? ? ? ? ? <LineSymbolizer>
? ? ? ? ? ? <Stroke>
? ? ? ? ? ? ? <CssParameter name="stroke">#0000FF</CssParameter>
? ? ? ? ? ? ? ? <CssParameter name="stroke-width">3</CssParameter>
? ? ? ? ? ? </Stroke>
? ? ? ? ? </LineSymbolizer>
? ? ? ? </Rule>
? ? ? </FeatureTypeStyle>
? ? </UserStyle>
? </NamedLayer>
</StyledLayerDescriptor>
Line with graphic symbols
<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
? ? ? ? ? ? ? ? ? ? ? ?xsi:schemaLocation="https://www.opengis.net/sld https://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"
? ? ? ? ? ? ? ? ? ? ? ?xmlns="https://www.opengis.net/sld" xmlns:ogc="https://www.opengis.net/ogc"
? ? ? ? ? ? ? ? ? ? ? ?xmlns:xlink="https://www.w3.org/1999/xlink" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance">
? <NamedLayer>
? ? <Name>road</Name>
? ? <UserStyle>
? ? ? <Title>A red line style</Title>
? ? ? <FeatureTypeStyle>
? ? ? ? <Rule>
? ? ? ? ? <Name>rule1</Name>
? ? ? ? ? <Title>Blue Line</Title>
? ? ? ? ? <Abstract>A solid blue line with a 1 pixel width</Abstract>
? ? ? ? ? <LineSymbolizer>
? ? ? ? ? ? <Stroke>
? ? ? ? ? ? ? <CssParameter name="stroke">#0000FF</CssParameter>
? ? ? ? ? ? </Stroke>
? ? ? ? ? </LineSymbolizer>
? ? ? ? ? <LineSymbolizer>
? ? ? ? ? ? <Stroke>
? ? ? ? ? ? ? <GraphicStroke>
? ? ? ? ? ? ? ? <Graphic>
? ? ? ? ? ? ? ? ? <Mark>
? ? ? ? ? ? ? ? ? ? <WellKnownName>shape://vertline</WellKnownName>
? ? ? ? ? ? ? ? ? ? <Stroke>
? ? ? ? ? ? ? ? ? ? ? <CssParameter name="stroke">#333333</CssParameter>
? ? ? ? ? ? ? ? ? ? ? <CssParameter name="stroke-width">1</CssParameter>
? ? ? ? ? ? ? ? ? ? </Stroke>
? ? ? ? ? ? ? ? ? </Mark>
? ? ? ? ? ? ? ? ? <Size>5</Size>
? ? ? ? ? ? ? ? </Graphic>
? ? ? ? ? ? ? </GraphicStroke>
? ? ? ? ? ? </Stroke>
? ? ? ? ? </LineSymbolizer>
? ? ? ? </Rule>
? ? ? </FeatureTypeStyle>
? ? </UserStyle>
? </NamedLayer>
</StyledLayerDescriptor>
Line with Dash Array
<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
? ? ? ? ? ? ? ? ? ? ? ?xsi:schemaLocation="https://www.opengis.net/sld https://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"
? ? ? ? ? ? ? ? ? ? ? ?xmlns="https://www.opengis.net/sld" xmlns:ogc="https://www.opengis.net/ogc"
? ? ? ? ? ? ? ? ? ? ? ?xmlns:xlink="https://www.w3.org/1999/xlink" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance">
? <NamedLayer>
? ? <Name>road</Name>
? ? <UserStyle>
? ? ? <Title>A red line style</Title>
? ? ? <FeatureTypeStyle>
? ? ? ? <Rule>
? ? ? ? ? <Name>rule1</Name>
? ? ? ? ? <Title>Blue Line</Title>
? ? ? ? ? <Abstract>A solid blue line with a 1 pixel width</Abstract>
? ? ? ? ? <LineSymbolizer>
? ? ? ? ? ? <Stroke>
? ? ? ? ? ? ? <CssParameter name="stroke">#0000FF</CssParameter>
? ? ? ? ? ? ? <CssParameter name="stroke-dashArray">5 2</CssParameter>
? ? ? ? ? ? </Stroke>
? ? ? ? ? </LineSymbolizer>
? ? ? ? </Rule>
? ? ? </FeatureTypeStyle>
? ? </UserStyle>
? </NamedLayer>
</StyledLayerDescriptor>
?Line with Label
<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
? ? ? ? ? ? ? ? ? ? ? ?xsi:schemaLocation="https://www.opengis.net/sld https://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"
? ? ? ? ? ? ? ? ? ? ? ?xmlns="https://www.opengis.net/sld" xmlns:ogc="https://www.opengis.net/ogc"
? ? ? ? ? ? ? ? ? ? ? ?xmlns:xlink="https://www.w3.org/1999/xlink" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance">
? <NamedLayer>
? ? <Name>road</Name>
? ? <UserStyle>
? ? ? <Title>A red line style</Title>
? ? ? <FeatureTypeStyle>
? ? ? ? <Rule>
? ? ? ? ? <Name>rule1</Name>
? ? ? ? ? <Title>Blue Line</Title>
? ? ? ? ? <Abstract>A solid blue line with a 1 pixel width</Abstract>
? ? ? ? ? <LineSymbolizer>
? ? ? ? ? ? <Stroke>
? ? ? ? ? ? ? <CssParameter name="stroke">#0000FF</CssParameter>
? ? ? ? ? ? </Stroke>
? ? ? ? ? </LineSymbolizer>
? ? ? ? ? <TextSymbolizer>
? ? ? ? ? <Label>
? ? ? ? ? ? <ogc:PropertyName>length_km</ogc:PropertyName>
? ? ? ? ? </Label>
? ? ? ? ? <Fill>
? ? ? ? ? ?<CssParameter name="fill">#000000</CssParameter>
? ? ? ? ?</Fill>
? ? ? ? </TextSymbolizer>
? ? ? ? </Rule>
? ? ? </FeatureTypeStyle>
? ? </UserStyle>
? </NamedLayer>
</StyledLayerDescriptor>
Line with Label following lines
领英推荐
<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
? ? ? ? ? ? ? ? ? ? ? ?xsi:schemaLocation="https://www.opengis.net/sld https://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"
? ? ? ? ? ? ? ? ? ? ? ?xmlns="https://www.opengis.net/sld" xmlns:ogc="https://www.opengis.net/ogc"
? ? ? ? ? ? ? ? ? ? ? ?xmlns:xlink="https://www.w3.org/1999/xlink" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance">
? <NamedLayer>
? ? <Name>road</Name>
? ? <UserStyle>
? ? ? <Title>A red line style</Title>
? ? ? <FeatureTypeStyle>
? ? ? ? <Rule>
? ? ? ? ? <Name>rule1</Name>
? ? ? ? ? <Title>Blue Line</Title>
? ? ? ? ? <Abstract>A solid blue line with a 1 pixel width</Abstract>
? ? ? ? ? <LineSymbolizer>
? ? ? ? ? ? <Stroke>
? ? ? ? ? ? ? <CssParameter name="stroke">#0000FF</CssParameter>
? ? ? ? ? ? </Stroke>
? ? ? ? ? </LineSymbolizer>
? ? ? ? ? <TextSymbolizer>
? ? ? ? ? ? <Label>
? ? ? ? ? ? ? <ogc:PropertyName>length_km</ogc:PropertyName>
? ? ? ? ? ? </Label>
? ? ? ? ? ? <Fill>
? ? ? ? ? ? ? <CssParameter name="fill">#000000</CssParameter>
? ? ? ? ? ? </Fill>
? ? ? ? ? ? <VendorOption name="followLine">true</VendorOption>
? ? ? ? ? </TextSymbolizer>
? ? ? ? </Rule>
? ? ? </FeatureTypeStyle>
? ? </UserStyle>
? </NamedLayer>
</StyledLayerDescriptor>
Line with Attributes based styling
<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
? ? ? ? ? ? ? ? ? ? ? ?xsi:schemaLocation="https://www.opengis.net/sld https://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"
? ? ? ? ? ? ? ? ? ? ? ?xmlns="https://www.opengis.net/sld" xmlns:ogc="https://www.opengis.net/ogc"
? ? ? ? ? ? ? ? ? ? ? ?xmlns:xlink="https://www.w3.org/1999/xlink" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance">
? <NamedLayer>
? ? <Name>road</Name>
? ? <UserStyle>
? ? ? <Title>A gold line style</Title>
? ? ? <FeatureTypeStyle>
? ? ? ? <Rule>
? ? ? ? ? <LineSymbolizer>
? ? ? ? ? ? <Stroke>
? ? ? ? ? ? ? <CssParameter name="stroke">#0f0</CssParameter>
? ? ? ? ? ? ? <CssParameter name="stroke-width">2</CssParameter>
? ? ? ? ? ? </Stroke>
? ? ? ? ? </LineSymbolizer>
? ? ? ? </Rule>
? ? ? ? <Rule>
? ? ? ? ? <ogc:Filter>
? ? ? ? ? ? <ogc:PropertyIsEqualTo>
? ? ? ? ? ? ? <ogc:PropertyName>continent</ogc:PropertyName>
? ? ? ? ? ? ? <ogc:Literal>Asia</ogc:Literal>
? ? ? ? ? ? </ogc:PropertyIsEqualTo>
? ? ? ? ? </ogc:Filter>
? ? ? ? ? <LineSymbolizer>
? ? ? ? ? ? <Stroke>
? ? ? ? ? ? ? <CssParameter name="stroke">#FF0000</CssParameter>
? ? ? ? ? ? ? <CssParameter name="stroke-width">2</CssParameter>
? ? ? ? ? ? </Stroke>
? ? ? ? ? </LineSymbolizer>
? ? ? ? </Rule>
? ? ? </FeatureTypeStyle>
? ? </UserStyle>
? </NamedLayer>
</StyledLayerDescriptor>
Line with Zoom (Scale) based styling
<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
? ? ? ? ? ? ? ? ? ? ? ?xsi:schemaLocation="https://www.opengis.net/sld https://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"
? ? ? ? ? ? ? ? ? ? ? ?xmlns="https://www.opengis.net/sld" xmlns:ogc="https://www.opengis.net/ogc"
? ? ? ? ? ? ? ? ? ? ? ?xmlns:xlink="https://www.w3.org/1999/xlink" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance">
? <NamedLayer>
? ? <Name>road</Name>
? ? <UserStyle>
? ? ? <Title>A gold line style</Title>
? ? ? <FeatureTypeStyle>
? ? ? ? <Rule>
? ? ? ? ? <MaxScaleDenominator>9000000</MaxScaleDenominator>
? ? ? ? ? <LineSymbolizer>
? ? ? ? ? ? <Stroke>
? ? ? ? ? ? ? <CssParameter name="stroke">#0f0</CssParameter>
? ? ? ? ? ? ? <CssParameter name="stroke-width">2</CssParameter>
? ? ? ? ? ? </Stroke>
? ? ? ? ? </LineSymbolizer>
? ? ? ? </Rule>
? ? ? ? <Rule>
? ? ? ? ? <MinScaleDenominator>9000000</MinScaleDenominator>
? ? ? ? ? <MaxScaleDenominator>30000000</MaxScaleDenominator>
? ? ? ? ? <LineSymbolizer>
? ? ? ? ? ? <Stroke>
? ? ? ? ? ? ? <CssParameter name="stroke">#FF0000</CssParameter>
? ? ? ? ? ? ? <CssParameter name="stroke-width">5</CssParameter>
? ? ? ? ? ? </Stroke>
? ? ? ? ? </LineSymbolizer>
? ? ? ? </Rule>
? ? ? ? <Rule>
? ? ? ? ? <MinScaleDenominator>30000000</MinScaleDenominator>
? ? ? ? ? <LineSymbolizer>
? ? ? ? ? ? <Stroke>
? ? ? ? ? ? ? <CssParameter name="stroke">#00f</CssParameter>
? ? ? ? ? ? ? <CssParameter name="stroke-width">2</CssParameter>
? ? ? ? ? ? </Stroke>
? ? ? ? ? </LineSymbolizer>
? ? ? ? </Rule>
? ? ? </FeatureTypeStyle>
? ? </UserStyle>
? </NamedLayer>
</StyledLayerDescriptor>
Line with Intersection based on Location
<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
? ? ? ? ? ? ? ? ? ? ? ?xsi:schemaLocation="https://www.opengis.net/sld https://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"
? ? ? ? ? ? ? ? ? ? ? ?xmlns:gml="https://www.opengis.net/gml"
? ? ? ? ? ? ? ? ? ? ? ?xmlns="https://www.opengis.net/sld" xmlns:ogc="https://www.opengis.net/ogc"
? ? ? ? ? ? ? ? ? ? ? ?xmlns:xlink="https://www.w3.org/1999/xlink" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance">
? <NamedLayer>
? ? <Name>road</Name>
? ? <UserStyle>
? ? ? <Title>A gold line style</Title>
? ? ? <FeatureTypeStyle>
? ? ? ? <Rule>
? ? ? ? ? <LineSymbolizer>
? ? ? ? ? ? <Stroke>
? ? ? ? ? ? ? <CssParameter name="stroke">#0f0</CssParameter>
? ? ? ? ? ? ? <CssParameter name="stroke-width">2</CssParameter>
? ? ? ? ? ? </Stroke>
? ? ? ? ? </LineSymbolizer>
? ? ? ? </Rule>
? ? ? ? <Rule>
? ? ? ? ? <ogc:Filter>
? ? ? ? ? ? <ogc:Intersects>
? ? ? ? ? ? ? <ogc:PropertyName>the_geom</ogc:PropertyName>
? ? ? ? ? ? ? <gml:Polygon>
? ? ? ? ? ? ? ? <gml:outerBoundaryIs>
? ? ? ? ? ? ? ? ? <gml:LinearRing>
? ? ? ? ? ? ? ? ? ? <gml:coordinates? decimal="." cs="," ts=" ">
? ? ? ? ? ? ? ? ? ? ? 73.125,19.932041306115536 73.125,17.644022027872726 76.4208984375,14.519780046326085 79.2333984375,20.3034175184893 79.2333984375,21.657428197370653 76.1572265625,21.779905342529645 74.3994140625,21.53484700204879 73.125,20.632784250388028 73.125,19.932041306115536? ? ? ? ? ? ?</gml:coordinates>
? ? ? ? ? ? ? ? ? </gml:LinearRing>
? ? ? ? ? ? ? ? </gml:outerBoundaryIs>
? ? ? ? ? ? ? </gml:Polygon>
? ? ? ? ? ? </ogc:Intersects>
? ? ? ? ? </ogc:Filter>
? ? ? ? ? <LineSymbolizer>
? ? ? ? ? ? <Stroke>
? ? ? ? ? ? ? <CssParameter name="stroke">#FF0000</CssParameter>
? ? ? ? ? ? ? <CssParameter name="stroke-width">5</CssParameter>
? ? ? ? ? ? </Stroke>
? ? ? ? ? </LineSymbolizer>
? ? ? ? </Rule>
? ? ? </FeatureTypeStyle>
? ? </UserStyle>
? </NamedLayer>
</StyledLayerDescriptor>?
Checkout My Other Articles dedicated to styling of Geoserver
Who am I ? ?????
Hi, I'm Krishna Lodha, I'm an open source GIS Developer, Contributor and Content creator. I have my agency Rotten Grapes Pvt. Ltd.? where we develop Web GIS Applications using Open source stack.?
Apart from development, I upload Videos about such technologies on YouTube. I upload new blogposts every now and then on this LinkedIn Newsletter. Make sure you Subscribe before you leave ?.
Comment Down What other conditions of style you have created in Geoserver !
Computer vision and Image Processing, Remote Sensing images
2 年Nice work
Next Trend Realty LLC./wwwHar.com/Chester-Swanson/agent_cbswan
2 年Thanks for Sharing.
Air Traffic Control Officer @ ASECNA | Geospatial Data Scientist, Product Manager @ Omdena | Python Developer | Leveraging AI & Open Source Solutions to Drive Impactful Projects
2 年Awesome