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


  1. Andrea Aime GeoSolutions What's new in Geoserver 2.17.0?

  2. Quick overview

  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 backported ⚫ In "maintenance" status until March 2021, mostly with bug fixes ⚫ Can run on Java 8 or Java 11
  4. GeoServer 2.17.0 - extensions

  5. GeoServer 2.17.0 - community https://build.geoserver.org/geoserver/2.17.x/community-latest/

  6. Map rendering news

  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 GeoServer Data Mapbox GL Classic OGC client Mapbox client WMTS/PNG WMTS/MVT
  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)
  9. Mapbox GL Styles plugin ⚫ Example rendering OpenMapTiles GL Bright

  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 none ⚫ Automatic font shrinking to fit labels in polygons ⚫ Drape symbol along a line (vs just repeating it)
  11. Background fill ⚫ Specify a "fill" at the SLD UserStyle

    level, fills the background of the map
  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 + offset/anchor ⚫ Allows to setup point/label combos that are stacked, and yet display as a single entity
  13. Offset label shield Label/icon disappearing due to conflict resolution, road

    names having higher priority <VendorOption name="graphicPlacement"> independent </VendorOption>
  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
  15. Auto-shrink polygon labels <TextSymbolizer> <Label> <ogc:PropertyName>label</ogc:PropertyName> </Label> <Font> <CssParameter name="font-family">Bitstream

    Vera Sans</CssParameter> <CssParameter name="font-size">16</CssParameter> </Font> <LabelPlacement> <PointPlacement> <AnchorPoint> <AnchorPointX>0.5</AnchorPointX> <AnchorPointY>0.5</AnchorPointY> </AnchorPoint> </PointPlacement> </LabelPlacement> <VendorOption name="fontShrinkSizeMin">6</VendorOption> <VendorOption name="goodnessOfFit">1</VendorOption> </TextSymbolizer>
  16. Drape line symbol along a line ⚫ LineSybolizer allow to

    repeat a symbol along a line ⚫ The result is normally dis-continuous at line vertices markAlongLine=true markAlongLine=false
  17. Drape line symbol along a line <?xml version="1.0"?> <LineSymbolizer> <Stroke>

    <GraphicStroke> <Graphic> <Mark> <WellKnownName> wkt://LINESTRING (0 0, 0 -0.5, 0.5 -0.5, 0.5 0.5, 1 0.5, 1 0) </WellKnownName> <Stroke> <CssParameter name="stroke">0xFF0000 </CssParameter> <CssParameter name="stroke-width">2</CssParameter> <CssParameter name="stroke-linecap">round</CssParameter> </Stroke> </Mark> <Size>20</Size> </Graphic> </GraphicStroke> </Stroke> <VendorOption name="markAlongLine">true</VendorOption> </LineSymbolizer>
  18. Data sources and formats

  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);
  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 artifacts https://blog.cyclemap.link/2020-01-25-tilebuffer/
  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
  22. WMS cascading improved ⚫ Choose which remote styles to use

    and expose ⚫ Choose format used for cascading ⚫ Limit cascading to a scale range and declared BBOX
  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
  24. JSON-LD community module { "@id": "${@id}", "@type": [ "Feature", "gsml:MappedFeature",

    "http://vocabulary.odm2.org/samplingfeaturetype/mappedFeature" ], "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" }, ……….
  25. Service news

  26. OGC API – Marching on! ⚫ The OGC API community

    modules keep improving: ⚫ Updated OGC API - Features API to latest spec ⚫ Added filtering and CRS extensions ⚫ OGC API – Tiles ⚫ OGC API – Styles
  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
  28. GeoWebCache

  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 <killed after 2 hours> 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
  30. Faster tile layer listing ⚫ The tile layer page could

    get pretty slow ⚫ Sped up by orders of magnitude in 2.17.0
  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
  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.
  33. Configuration improvements

  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
  35. Edit security from resource pages ⚫ Alternative focus on the

    single resource, rather than the full set of security rules
  36. Track last resource change ⚫ Ever wondered if "something changed"?

    ⚫ Now you can check.
  37. Custom dimensions for vector layers ⚫ WMS dimension ⚫ Time

    ⚫ Elevation ⚫ Custom ⚫ Custom used to be supported by raster data only ⚫ Now supported by vector data too
  38. Enabled/advertised for Groups ⚫ Enabled/advertised controls were available for layers

    only ⚫ Now available for layer groups too
  39. That’s all! https://www.geosolutionsgroup.com/contacts/