Skip to content

Point symbolizer

The point symbolizer is used to style point features or centroids of non-point features.

Syntax

The full syntax of a point symbolizer is:

symbolizers:
- point:
    symbols:
    - external:
        url: <text>
        format: <text>
    - mark:
        shape: <shape>
        fill-color: <color>
        fill-opacity: <expression>
        fill-graphic: 
          <graphic_options>
        stroke-color: <color>
        stroke-width: <expression>
        stroke-opacity: <expression>
        stroke-linejoin: <expression>
        stroke-linecap: <expression>
        stroke-dasharray: <float list>
        stroke-dashoffset: <expression>
        stroke-graphic: 
          <graphic_options>
        stroke-graphic-fill: 
          <graphic_options>
    size: <expression>
    anchor: <tuple>
    displacement: <tuple>
    opacity: <expression>
    rotation: <expression>
    geometry: <expression>
    uom: <text>
    x-labelObstacle: <boolean>
    x-composite-base: <boolean>
    x-composite: <text>
    x-inclusion: <text>

where:

{% include-markdown "./include/stroke.md" %}

{% include-markdown "./include/fill.md" %}

    • Property
    • Required?
    • Description
    • Default value
    • external
    • No
    • Specifies an image to use to style the point.
    • N/A
    • url
    • Yes
    • Location of the image. Can either be an actual URL or a file path (relative to where the style file is saved in the GeoServer data directory). Should be enclosed in single quotes.
    • N/A
    • format
    • Yes
    • Format of the image. Must be a valid MIME type (such as image/png for PNG, image/jpeg for JPG, image/svg+xml for SVG)
    • N/A
    • mark
    • No
    • Specifies a regular shape to use to style the point.
    • N/A
    • shape
    • No
    • Shape of the mark. Options are square, circle, triangle, cross, x, and star.
    • square
    • size
    • No
    • Size of the mark in pixels. If the aspect ratio of the mark is not 1:1 (square), will apply to the height of the graphic only, with the width scaled proportionally.
    • 16
    • anchor
    • No
    • Specify the center of the symbol relative to the feature location. Value is an [x,y] tuple with decimal values from 0-1, with [0,0] meaning that the symbol is anchored to the top left, and [1,1] meaning anchored to bottom right.
    • [0.5,0.5]
    • displacement
    • No
    • Specifies a distance to which to move the symbol relative to the feature. Value is an [x,y] tuple with values expressed in pixels, so [10,5] will displace the symbol 10 pixels to the right and 5 pixels down.
    • [0,0]
    • opacity
    • No
    • Specifies the level of transparency. Value of 0 means entirely transparent, while 1 means entirely opaque. Only affects graphics referenced by the external parameter; the opacity of mark symbols is controlled by the fill-opacity and stroke-opacity of the mark.
    • 1
    • rotation
    • No
    • Value (in degrees) or rotation of the mark. Larger values increase counter-clockwise rotation. A value of 180 will make the mark upside-down.
    • 0

{% include-markdown "./include/symbol.md" %}

The following properties are equivalent to SLD "vendor options".

{% include-markdown "./include/misc.md" %}

Additional "vendor options" properties for Color compositing and color blending:

{% include-markdown "./include/composite.md" %}

Additional "vendor options" properties for Rendering Selection:

{% include-markdown "./include/inclusion.md" %}

Examples

Basic point

A point symbolizer draws a point at the center of any geometry. It is defined by an external image or a symbol, either of which can be sized and rotated. A mark is a pre-defined symbol that can be drawn at the location of a point. Similar to polygons, marks have both a fill and a stroke. This example shows a point symbolizer that draws semi-transparent red diamonds with black outlines:

feature-styles:
- name: name
  rules:
  - title: red point
    symbolizers:
    - point:
        symbols:
        - mark:
            shape: square
            fill-color: '#FF0000'
            fill-opacity: 0.75
            stroke-color: '#000000'
            stroke-width: 1.5
            stroke-opacity: 1
        size: 20
        rotation: 45

Basic point

Point as image

Sometimes it may be useful to use an image to represent certain points. This can be accomplished using the external symbol property, which requires a url and a format. The url should be enclosed in single quotes. The format property is a MIME type image. This example shows a point symbolizer that draws an image centered on each point:

name: point
feature-styles:
- name: name
  rules:
  - symbolizers:
    - point:
        symbols:
        - external:
            url: 'geoserver.png'
            format: image/png
        size: 16

Point as image

Point composition

Using more than one point symbolizer allows the composition of more complex symbology. This example shows two symbolizers along with the x-composite parameter in order to subtract a shape from a square mark, allowing the background to show through.

symbolizers:
- point:
    symbols:
    - mark:
        shape: square
        fill-color: '#222222'
    size: 40
- point:
    symbols:
    - external:
        url: 'stamp.png'
        format: image/png
    x-composite: xor
    size: 40

Point composition

Points as arrow heads

Sometimes it is useful to generate a point using a CQL expression. The following example generates a point at the end of each line in the shape of an arrow, rotated such that it matches the orientation of the line.

name: arrow
symbolizers:
- line:
   stroke-color: '#808080'
   stroke-width: 3
- point:
    geometry: ${endPoint(the_geom)}
    symbols:
    - mark:
        shape: shape://oarrow
        fill-color: '#808080'
    size: 30
    rotation: ${endAngle(the_geom)}

Point as arrow head