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. 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
  2. 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
  3. 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)
  4. 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)
  5. Background fill ⚫ Specify a "fill" at the SLD UserStyle

    level, fills the background of the map
  6. 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
  7. Offset label shield Label/icon disappearing due to conflict resolution, road

    names having higher priority <VendorOption name="graphicPlacement"> independent </VendorOption>
  8. 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
  9. 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>
  10. 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
  11. 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>
  12. 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);
  13. 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/
  14. MBTiles + Vector tiles data source ⚫ The store provides

    access to the layers separately (usual data model for GeoServer) ⚫ Rendering OpenMapTiles data + MB GL Styles
  15. 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
  16. 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
  17. 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" }, ……….
  18. 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
  19. 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
  20. 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
  21. Faster tile layer listing ⚫ The tile layer page could

    get pretty slow ⚫ Sped up by orders of magnitude in 2.17.0
  22. 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
  23. 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.
  24. 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
  25. Edit security from resource pages ⚫ Alternative focus on the

    single resource, rather than the full set of security rules
  26. 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