Upgrade to Pro — share decks privately, control downloads, hide ads and more …

What's new in Geoserver 2.17?

What's new in Geoserver 2.17?

GeoServer 2.17 was released in April 21st 2020. In this webinar you will learn about MBStyles support, vector tiles, improved security, map rendering advancement, GeoWebCache performance improvement, and more.

Simone Giannecchini

May 18, 2020

More Decks by Simone Giannecchini

Other Decks in Programming


  1. Andrea Aime
    What's new in Geoserver

    View Slide

  2. Quick overview

    View Slide

  3. GeoServer 2.17.0

    Released April 21st 2020 along with GeoTools 23.0

    First release of the 2.17.x series

    2.17.x get 5 more releases

    In "stable status" until September 2020, with some new features getting

    In "maintenance" status until March 2021, mostly with bug fixes

    Can run on Java 8 or Java 11

    View Slide

  4. GeoServer 2.17.0 - extensions

    View Slide

  5. GeoServer 2.17.0 - community

    View Slide

  6. Map rendering news

    View Slide

  7. Mapbox GL Styles plugin

    Can apply Mapbox GL styles server side

    Graduated from community to extension status

    Use cases:

    Re-use existing Mapbox GL styles on the server side

    Edit styles with external editor (e.g., Maputnik)

    Setup a hybrid rendering solution
    Classic OGC

    View Slide

  8. Mapbox GL Styles plugin

    Received significant QA work, 18 tickets resolved

    Increased rendering fidelity (e.g. better match of
    zoom related functions, improved font matching)

    Increased behavior match (e.g. icons and labels
    showing up together, or disappearing together)

    View Slide

  9. Mapbox GL Styles plugin

    Example rendering OpenMapTiles GL Bright

    View Slide

  10. Map engine improvements

    The Mapbox GL work required new functionality,
    made available in all style languages.

    Other functionalities added as well, independent
    of the Mapbox GL work

    In particular:

    Background fill

    Associate symbol with label, make them show either together, or

    Automatic font shrinking to fit labels in polygons

    Drape symbol along a line (vs just repeating it)

    View Slide

  11. Background fill

    Specify a "fill" at the SLD UserStyle level, fills the
    background of the map

    View Slide

  12. Offset label shield

    Label shield functionality allows to center a label
    and a background graphic.

    Meant to be used for road shields

    New "graphicPlacement" vendor option

    "label" centers with the label

    "independent" centers with the original point +

    Allows to setup point/label combos that are
    stacked, and yet display as a single entity

    View Slide

  13. Offset label shield
    Label/icon disappearing due to
    conflict resolution, road names
    having higher priority

    View Slide

  14. Auto-shrink polygon labels

    Make an effort to fit labels inside polygons

    Shrink them down to a min target size, rather
    than making them overflow or disappear

    View Slide

  15. Auto-shrink polygon labels


    Bitstream Vera Sans



    View Slide

  16. Drape line symbol along a line

    LineSybolizer allow to repeat a symbol along a line

    The result is normally dis-continuous at line
    markAlongLine=true markAlongLine=false

    View Slide

  17. Drape line symbol along a line

    wkt://LINESTRING (0 0, 0 -0.5, 0.5 -0.5, 0.5 0.5, 1 0.5, 1 0)





    View Slide

  18. Data sources and formats

    View Slide

  19. Mbtiles + Vector tiles data source

    A MBTiles file is a SQLite tile storage

    One main table called "tiles"

    One support table called "metadata"

    Limited to the web Mercator tile matrix set

    Tiles can be filled with images, but also with
    Mapbox Vector Tiles (MVT)

    The metadata table provides, among others, a
    schema for them
    CREATE TABLE tiles (zoom_level integer, tile_column
    integer, tile_row integer, tile_data blob);
    CREATE TABLE metadata (name text, value text);

    View Slide

  20. MBTiles + Vector tiles data source

    Multiple layers contained in a single tile

    Polygons/lines split among tiles

    Clients typically
    don't stitch back
    data (expensive)

    Each tile contains a
    buffer of extra
    data around to
    avoid rendering

    View Slide

  21. MBTiles + Vector tiles data source

    The store provides access to the layers separately
    (usual data model for GeoServer)

    Rendering OpenMapTiles data + MB GL Styles

    View Slide

  22. WMS cascading improved

    Choose which remote
    styles to use and expose

    Choose format used for

    Limit cascading to a scale
    range and declared

    View Slide

  23. JSON-LD community module

    Generate JSON-LD via templates
    "@context": {
    "gsp": "http://www.opengis.net/ont/geosparql#",
    "sf": "http://www.opengis.net/ont/sf#",
    "schema": "https://schema.org/",
    "dc": "http://purl.org/dc/terms/",
    "Feature": "gsp:Feature",
    "FeatureCollection": "schema:Collection",
    "Point": "sf:Point",
    "wkt": "gsp:asWKT",
    "features": {
    "@container": "@set",
    "@id": "schema:hasPart"
    "geometry": "sf:geometry",
    "description": "dc:description",
    "title": "dc:title",
    "name": "schema:name"
    "type": "FeatureCollection",
    "features": [
    "$source": "gsml:MappedFeature"
    → Continued in next slide

    View Slide

  24. JSON-LD community module
    "@id": "${@id}",
    "@type": [
    "name": "${gml:name}",
    "gsml:positionalAccuracy": {
    "type": "gsml:CGI_NumericValue",
    "value": "${gsml:positionalAccuracy/gsml:CGI_NumericValue/gsml:principalValue}"
    "gsml:GeologicUnit": {
    "$source": "gsml:specification/gsml:GeologicUnit",
    "@id": "${@id}",
    "description": "${gml:description}",
    "gsml:geologicUnitType": "urn:ogc:def:nil:OGC::unknown",
    "gsml:composition": [
    "$source": "gsml:composition"
    "gsml:compositionPart": [
    "$source": "gsml:CompositionPart"
    "gsml:role": {
    "value": "${gsml:role}",
    "@codeSpace": "urn:cgi:classifierScheme:Example:CompositionPartRole"

    View Slide

  25. Service news

    View Slide

  26. OGC API – Marching on!

    The OGC API community
    modules keep

    Updated OGC API -
    Features API to latest

    Added filtering and
    CRS extensions

    OGC API – Tiles

    OGC API – Styles

    View Slide

  27. FlatGeoBuf community module

    FlatGeoBuf is "a performant binary encoding for
    geographic data based on flatbuffers …"

    WFS (OGC API – Features) output format

    New community module

    Performance comparison, shapefile as reference

    View Slide

  28. GeoWebCache

    View Slide

  29. Faster startup

    30% faster GWC layer loading during startup

    Improved CPU consumption

    Test loading 1 million layers, with 1 million
    cached layers associated, over the past releases
    Version Released Startup GWC_startup
    2.14.4 2019-06-13 9m 5s 39s
    2.15.0 2019-02-27
    2.15.2 2019-06-28 6m 45s 40s
    2.16.0 2019-09-18 6m 05s 34s
    2.16.2 2020-01-20 6m 45s 34s
    2.17.0 2020-04-19 6m 33s 22s
    Data courtesy of Gabriel Roldan

    View Slide

  30. Faster tile layer listing

    The tile layer page could get pretty slow

    Sped up by orders of magnitude in 2.17.0

    View Slide

  31. Configure XYZ layout on disk

    GWC disk layout is optimized to keep directory
    listings short, but cannot be used to setup a
    static tile cache

    In 2.17.0 one can create
    a ZYX/Z(-Y)X layout,
    seed it, and move to
    static file serving

    View Slide

  32. More tolerant seed

    Traditionally GWC seeding threads would stop at
    the first map building error encountered. Now
    tolerance can be configured on a per job basis.

    View Slide

  33. Configuration improvements

    View Slide

  34. Resource browser extension

    Access contents of the data directory directly
    from the GUI

    Useful for remote servers, mandatory if one is
    not storing the config on the file system

    View Slide

  35. Edit security from resource pages

    Alternative focus on the single resource, rather
    than the full set of security rules

    View Slide

  36. Track last resource change

    Ever wondered if

    Now you can check.

    View Slide

  37. Custom dimensions for vector layers

    WMS dimension




    Custom used to be
    supported by raster data

    Now supported by vector
    data too

    View Slide

  38. Enabled/advertised for Groups

    Enabled/advertised controls were available for
    layers only

    Now available for layer groups too

    View Slide

  39. That’s all!

    View Slide