blog.geoserver.org is moving

In anticipation of the upcoming GeoServer 2.18.0 release the content of this website is being integrated with the main geoserver.org website:

Individual posts have been migrated

Thanks to Ian Turton and Torben Barsballe for working on this on behalf of the GeoServer community.

geoserver.org/blog

GeoServer 2.18-RC Release Candidate

The GeoServer community is pleased to share the availability of GeoServer 2.18-RC Release Candidate for testing. Downloads are available (zip and war) along with documentation and more than 40 extensions.

This is a GeoServer release candidate made in conjunction with GeoTools 24-RC and GeoWebCache 1.18-RC.

  • Release candidates are a community building exercise and are not intended for production use.
  • We ask the community (everyone: individuals, organizations, service providers) to download and thoroughly test this release candidate and report back.
  • Participating in testing release candidates is a key expectation of our open source social contract. We make an effort to thank each person who tests in our release announcement and project presentations!

We would like to thank everyone who contributed to this release. Jody Garnett (GeoCat) for this release candidate downloads and setting up the 2.18.x branch.

Release Candidate Testing Priorities

We would like to ask for your assistance testing the following:

  • The number one testing priority is to try out GeoServer with your data! Mass market open source thrives on having many people to review. Data driven open source like GeoServer thrives on exposure to many datasets.
  • The rest of this blog post highlights new features for GeoServer 2.17, please try out these features, read the documentation links, and ask questions.

Thanks to Jukka Rahkonen and Brad Hards for initial testing. To add your name to the list for the 2.18 release announcement: download the release candidate, try it out, and let us know (on the user list, twitter, or LinkedIn).

Black Lives Matter

The casual use of the word “slave” in computer software is an unnecessary reference to a painful human experience that continue to impact society.

  • Change to the use of primary / replica in description of GeoServer clustering (although new diagrams would be welcome)
  • Change to use of allow-list / deny-list
  • Changed to use of keystore password
  • Changing our repository to a “main” branch will be scheduled when both the git command line tool and GitHub repository infrastructure roll out planned improvements for a seamless transition.

David Blasby (GeoCat) worked on this issue as part of the OSGeo Bolsena 2020 Work-from-home code-sprint.

User interface creature comforts

A couple small but important changes to the GeoServer user interface make a significant difference to how you interact with the application and how easy it is to publish your data.

Andrea Aime (GeoSolutions) has taken the time to add an “Apply” functionality to most page, and ensure each screen has consistent buttons:

  • Apply (new): used to apply your setting change the running application so you can try them out, leaving the page open so you can experiment with applying different settings to see the effect.
  • Save: saves your setting change, returning to the initial welcome page.
  • Cancel: returns to the welcome page, abandoning and setting changes made.
Consistent Save, Apply, Cancel buttons for pages

Some configuration activities, such as WPS security, use nested pages to fine tune configuration options. These pages now consistently use OK and Cancel to return from a nested page.

Consistent OK, Cancel buttons for nested pages

Finally Michel Gabriël (GeoCat) arranged for these buttons to float to remain visible when scrolling through long pages.

The combination of consistent button names, in a consistent location, with an Apply button provide an improved experience when configuring GeoServer.

Jiffle scripts now supporting multi-band outputs

The Jiffle scripting language is used to run raster algebra against one or more input raster layers. In this release we added the ability to generate multi-band outputs, whilst previous versions of Jiffle could generate only single-banded outputs.

Here is an interesting example of how this can be useful. Let’s take an image mosaic with time dimension, and configure its generation mode to “stack”. This will make the mosaic use each image matching the request as an output band. Then, let’s make a WMS request with two times, thus, generating an image with two bands, allowing for a before/after comparison, and use the following style, reporting in output the before, the after, and the difference, using Jiffle as a rendering transformation:

<?xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor xmlns="http://www.opengis.net/sld"
 xmlns:ogc="http://www.opengis.net/ogc"
 xmlns:xlink="http://www.w3.org/1999/xlink"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.opengis.net/sld
http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"
 version="1.0.0">
  <NamedLayer>
    <Name>InputLayer</Name>
    <UserStyle>
      <Title>Time comparison</Title>
      <FeatureTypeStyle>
        <Transformation>
          <ogc:Function name="ras:Jiffle">
            <ogc:Function name="parameter">
              <ogc:Literal>coverage</ogc:Literal>
            </ogc:Function>
            <ogc:Function name="parameter">
              <ogc:Literal>script</ogc:Literal>
              <ogc:Literal>
                before = src[0];
                after = src[1];
                dest[0] = before;
                dest[1] = after;
                dest[2] = after - before;
              </ogc:Literal>
            </ogc:Function>
            <ogc:Function name="parameter">
              <ogc:Literal>bandNames</ogc:Literal>
              <ogc:Literal>before,after,difference</ogc:Literal>
            </ogc:Function>
          </ogc:Function>
        </Transformation>
        <Rule>
          <RasterSymbolizer>
            <Opacity>1.0</Opacity>
            <ChannelSelection>
              <GrayChannel>
                <SourceChannelName>3</SourceChannelName>
              </GrayChannel>
            </ChannelSelection>
            <ColorMap>
              <ColorMapEntry color="#800000" quantity="-1"/>
              <ColorMapEntry color="#008000" quantity="1"/>
            </ColorMap>
          </RasterSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

The result is a color code map showing red when the change is negative, green where it’s positive. As a bonus, running a GetFeatureInfo on the map would return all 3 values, before, after, and difference.

Source maps are also available for reference:

Map projections news

This release comes with support for Goode’s interrupted Homolosine, including both the projection itself, and the advanced projection handling machinery to handle on the fly source data slicing.

This means one can use a common map, like Natural Earth or OSM land masses and seas, and use it without any preparation, obtaining the following:

Still in the projections support department, we can cite:

  • Support for the Polyconic spherical case
  • Improvements in the Azimuthal Equidistant support, with better handling of source slicing when the CRS has false origins.

The following map is a polar Azimuthal Equidistant, with false origins, generated from data originally in web mercator (hence the hole in Antarctica):

Vector tiles improvements

The vector tiles extension can now work hand-in-hand with the pre-generalized data store, significantly speeding up the generation of MVTs out of a large dataset. A typical example of this case is generating vector tiles out of a OpenStreetMap import performed via imposm3, along with generalized tables.

Map-box GL styles language support improved

MBStyle support continues to improve with support for the dynamic expressions allowing a both feature attributes and “camera” information such as zoom level to be included.

{ "version": 8,
  "name": "landmarks",
  "layers": [
      {   "id": "Expression example",
          "type": "circle",
          "paint": {
              "circle-color": "#dd9933",
              "circle-radius": ["/",["get","LAND"],15],
          }
      }
  ]
}
Mapbox Style Expression example

GeoServer continues to support the earlier “function stop” approach for compatibility with the vast majority of examples online.

Community Modules

The GeoServer project devotes space to community research and development activities.

  • The GeoPackage community module is having a breakout of creativity with a host of fascinating functionality being added by Andrea Amie (GeoSolutions).
    • Dumping a GeoPackage with WPS or WFS output formats is now significantly faster, thanks to insert batching and improved selection of settings/pragma while creating the SQLite database.
    • GeoPackage WPS output can now inline linked metadata and add OWS Contexts for request and data, providing full provenance information.
    • GeoPackage WPS output can now include styles, based on an experimental style extension along with semantic annotations linking styles to data.
    • Activity is ongoing to add a generalized tables extension, similar to the pre-generalized store, but built into the GeoPackage itself.
  • A new module looking at attribute labeling has been started by Fernando Miño.
  • Fixed an issue with JMS plugin replicating SLD styles
  • JDBCStore speed improvement with automatic caching of select directories
  • The WPS download module can now preserve the original resolutions when working against heterogeneous CRS mosaic, for the granules that are matching the requested output CRS.
  • The GRS module has been made available, adding ArcGIS REST compatibility API.
  • The JSON-LD community module has been extended to support custom JSON output too, and renamed to wfs-template.

If you are interested in seeing any of this work included on the GeoServer roadmap contact the developer to learn how to participate or fund the activity.

And more

Other fixes and improvements include:

  • LayerGroups now list a default style in the capabilities document for greater client compatibility
  • CSW module performance fix when paging output
  • Josh Fix introduced a proposal to help determine GridCoverageReader object types to help work with Cloud Optimized GeoTIFF images.
  • Importer has been improved with better logging and error messages
  • REST API allows changing name and workspace of a data store
  • The latest JTS 1.17.1 release
  • MetadataLinkInfo allows more metadata types to be edited, including optional about field
  • GetFeatureInfo templates can now call static methods, such as Math functions, providing additional control.
  • Styled editor now provides a choose image dialog for setting legend image
  • PDF output can now include WMS decorations

Find out more in the release notes.

About GeoServer 2.18

Additional information on GeoServer 2.18 series:

GeoServer 2.16.5 Released

We are pleased to announce the release of GeoServer 2.16.5 with downloads (war|zip), documentation and extensions.

This release is made in conjunction with GeoTools 22.5. This is the final planned maintenance release and we highly recommend users to switch to the 2.17 branch for production systems.

Thanks to everyone who contributed, and Ian Turton (Astun Technology) for making this release.

Improvements and Fixes

[GEOS-6467] – UI bug in disabling tile caching for layers
[GEOS-8569] – JSON encoding on NaN values fails
[GEOS-9266] – Geopackage raster table with dots in the name cannot be added
[GEOS-9482] – Nearest Match NPE if source database table is empty
[GEOS-9539] – URLKvpParser encodes urls also when not needed
[GEOS-9622] – NullPointerException when using WMS vendor parameter “CLIP” on an ImageMosaic based layer
[GEOS-9629] – Legend Graphic fails on first visit to publish tab on a new layer publish
[GEOS-9638] – Duplicate SRS in Native SRS List selection on WFS 2.0.0 layer
[GEOS-9639] – Add OGC URN syntax support for Native SRS selection
[GEOS-9649] – NullPointerException for geoJSON output format with ComplexFeatures if some feature misses geometry value
[GEOS-9654] – Layer preview layer count and paging off base when secured layers are not visible
[GEOS-9655] – WMTS layer configuration page doesn’t show all the native srs in getCapabilties document
[GEOS-9668] – UniqueProcess call against a JDBC store does not result in a “select distinct” anymore
[GEOS-9678] – SldService numberFormatException if percentages true with customClasses
[GEOS-9680] – WMTS othersSrs always add EPSG:4326 and shows wrong CRS code
[GEOS-9682] – GetFeatureInfo on raster layers ignores rendering transformations

About GeoServer 2.16

Features, presentations and reference material on the 2.16 series:

GeoServer 2.17.2 Released

We are pleased to announce the release of GeoServer 2.17.2 with downloads (war|zip), documentation and extensions.

This release is made in conjunction with GeoTools 23.2 and GeoWebCache 1.17.2. This is a stable release recommended for production systems.

Thanks to everyone who contributed, and Jody Garnett (GeoCat) for making this release. Additional thanks to everyone who participated in the July bug-fix sprint organized by GeoSolutions.

Improvements and Fixes

This release includes a number of improvements, including:

  • GetFeatureInfo templates can now be used for GeoJSON output
  • The WPS download community module can now generate elevation models accounting for vertical grid shift when changing datum.
  • Oracle extension now ready to use with included JDBC driver, the driver changed to a “Oracle Free Use Terms and Conditions” license allowing us to distribute.
  • PostreSQL driver, Oracle driver, Eclipse EMF library, spring-framework, and spring-security version updates.
  • Image Mosaic REST API can now be used to update the native bbox when harvesting or deleting granules

Fixes included in this release:

  • GetFeatureInfo fixed to work on raster layer dynamically produced by a rendering transformation.
  • Lots of WMTS fixes resolving SRS list duplicates and handling of otherSrs.
  • SLD Service handling of percentages with custom classes
  • Layer preview fix, was miscounting number of pages when security restrictions used to limit number of layers available
  • Binary download on windows fixed to autodect Java when spaces used in path
  • WFS Cascade fixed to remove duplicate SRS elements when connecting to WFS 2.0.0 layer
  • MongoDB extension fixed, was missing a jar
  • Database use of select distinct in the WPS Unique process fixed
  • Image mosaic fixes for WPS download process bbox generation, and WMS GetMap respect of CLIP vendor parameter,
  • GeoPackage supports raster tables with special characters

For more information check the 2.17.2 release notes.

Community Updates

For developers building from source, our community modules are a great place to collaborate on functionality and improvements.

About GeoServer 2.17

Features, presentations and reference material on the 2.17 series:

GeoServer 2.16.4 released

We are pleased to announce the release of GeoServer 2.16.4 with downloads (war|zip), HTML documentation and extensions.

This is a stable release recommended for production systems.

Improvements and Fixes

This release includes a number of improvements, including:

For more information and the small assorted bug fixes, check the 2.16.4 release notes.

About GeoServer 2.16

Features, presentations and reference material on the 2.16 series:

GeoServer 2.17.1 Released

We are pleased to announce the release of GeoServer 2.17.1 with downloads (war|zip), documentation and extensions.

This release is made in conjunction with GeoTools 23.1 and GeoWebCache 1.17.1. This is a stable release recommended for production systems.

Thanks to everyone who contributed, and Jody Garnett (GeoCat) for making this release. Additional thanks to Jukka, Charles, Jody and Graham for helping test on the GeoServer user list. Testing in a wide range of environments is important for the community, and we appreciate seeing more people involved.

Improvements and Fixes

This release includes a number of improvements, including:

  • SLD Service Extension now supports percentages when generating rule titles, or individual colormap entries
  • SLD Service generation fix to avoid duplicating classes in generated style

Fixes included in this release:

  • WMS Legend decoration fix to correct image size calculation, and to display legend for raster layers
  • Fix WPS DownloadMap process to support use of WMS Legend decoration
  • Fix for vector tile generation, taking into account line width to prevent gaps between tiles

For more information check the 2.17.1 release notes.

Community Updates

For developers building from source, our community modules are a great place to collaborate on functionality and improvements.

  • A GSR community module is now available providing an GeoService REST compatibility API.
  • Backup restore development continues, with an option to exclude select content during restore
  • We have removed all references to the spatialite datastore from our documentation as this extension has not been produced for some time. Those wishing to work with spatialite can do so via the ogr datastore.

About GeoServer 2.17

Features, presentations and reference material on the 2.17 series:

GeoServer 2.16.3 released

We are pleased to announce the release of GeoServer 2.16.3 with downloads (war|zip), HTML documentation and extensions.

This is a stable release recommended for production systems.

Improvements and Fixes

This release includes a number of improvements, including:

  • New “clip” vendor option in WMS GetMap.
  • The SLD generation service can now create classified styles with per class percentages of occupation.
  • Various WMS cascading improvements, including:
    • Options to configure min/max scale denominator for cascaded WMS layers, as well as to limit the cascading requests to the declared BBOX.
    • Options to configure formats and styles used in cascading.
    • GetLegendGraphic now works with external WMS layers too.
  • The configuration UI got improved too, in particular:
    • It’s possible to show dates of creation and last modification in the resource lists (layers, stores, and so on).
    • Search filters in lists are now remembered when moving across pages.
    • Data level security can be edited in a new dedicated tab at the single resource level (e.g., while in the layer page).
  • Mass truncation requests added to GWC, and the tile layer page lists layers faster
  • Monitoring can now skip post-processors, and can log the time needed to render each layer in a multi-layer request.
  • WFS supports per workspace stored queries.
  • The SQL Server now ships with the latest open source JDBC driver by Microsoft, no longer need to fetch it separately.
  • The download process (community module) can now return image mosaic single granules in their native CRS, when requesting a single one out of a heterogeneous CRS mosaic.
  • Layer level CQL filter is now respected by complex feature layers too.

Fixes included in this release:

  • WMS legend decorations got some attention, improving their size management
  • Improved support for map wrapping while using rendering transformations generating raster data (raster to raster or vector to raster ones)
  • And various others!

For more information check the 2.16.3 release notes.

Community Updates

For developers building from source, our community modules are a great place to collaborate on functionality and improvements.

About GeoServer 2.16

Features, presentations and reference material on the 2.16 series:

GeoServer Group in Portuguese on WhatsApp

The Portuguese GeoServer email list is slowing down and moving to WhatsApp for a more agile and efficient experience exchange.

The group created on WhatsApp to discuss GeoServer in Portuguese (Brazilian) already has more than 150 users!

If you speak Portuguese, and wish to stay informed or exchange experiences on GeoServer, click on the link below to join the Group.

http://bit.ly/geoserver-whatsapp

GeoServer 2.17.0 Released

We are happy to announce GeoServer 2.17.0 release candidate is available for testing. Downloads are available (zip and war) along with docs and extensions.

This is a GeoServer release candidate made in conjunction with GeoTools 23.0 and GeoWebCache 1.17.0.

This is an exciting release and a lot of great new functionality has been added.

Fixes since Release Candidate

Bugs

  • [GEOS-5188] – LegendDecoration does not respect target size
  • [GEOS-9537] – Restore plugin is not able to correctly restore styles anymore
  • [GEOS-9551] – Rendering Transformation can cause bad rendering on reprojection to 3995
  • [GEOS-9559] – GeofenceAccessManager fails to cut geometries in coverages
  • [GEOS-9566] – Migrate to repo.osgeo.org repository
  • [GEOS-9567] – [Backup/Restore] Rest Controller not able to backup secured resources

Improvement

  • [GEOS-9512] – RasterDownload on Heterogeneous CRS Mosaic: avoid reprojection of granules having same CRS as the target CRS.
  • [GEOS-9543] – GeoServer REST documentation: Parser error duplicated mapping key

MBStyle module graduated to extension

The MBStyles module has received a deep review and many visual differences have been resolved, to the point that it can now display properly some of the OpenMapTiles styles as-is, with good fidelity, here is an example:

The module has also graduated to extension status, so you will now find it in all releases.

MBTiles community module reading vector tiles

The above map has been rendered not with one functionality, but two! Did you know one can put vector tiles in a MBTiles file? The community module mbtiles-store can read both raster and vector tiles now, and will serve the tiles for vector rendering.

It makes the perfect match with the MBStyle module, one can read vector tiles and render them using the styles they were designed for. Want to give it a quick try? Go to the OpenMapTiles web site and download an area of interest, for personal usage, and configure all layers. Then grab the osm-bright-gl-style, set it up, and configure it as a “style group” layer group type. Done:

Web resource extension

Ever had to fiddle with the data directory on a remote server, maybe trying to setup the control-flow configuration, or upload a Freemarker template? It can be annoying business, one often needs some sort of side access, like SSH. The Resource Browser module, freshly graduated into a supported extension, comes to the rescue, providing a tools page where administrators can browse the data directory, inspect files, edit them, and upload new ones too:

Manage authorization from each resource

Ever added a new layer and forgot to setup security for it? It’s a common occurrence, when the configuration of the layers and its security are done in different pages.

GeoServer 2.17 has a new “Security” tab in each page, allowing you to setup the security for a given resource directly in its configuration page:

Edit security settings there, and the layer security configuration will be updated as a consequence. The same goes for workspaces and layer groups.

Track last change of each resource

GeoServer 2.17 tracks, and allows to show, the date of creation and last modification of major configuration resources, such as workspaces, stores and layers, in their respective list page.

Turn it on in the server configuration page, and see the result in list pages:

This new setting is off by default, you’ll have to go and explicitly turn it on if you care to see the dates.

Map rendering improvements

GeoTools label “shield” support already allowed to put together a graphic along with a label, with the goal of supporting road label shields. GeoServer 2.17.0 includes the ability to lay them out separately, so that the mark and labels are not centered with each other but, for example, one above the other. This allows to setup point markers that appear only as long as their label is showing up too:

It’s also possible to setup a background color for the map at the style level, using a new Background element inside UserStyle. Background is a fill:

<?xml version="1.0" encoding="UTF-8"?><sld:StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:sld="http://www.opengis.net/sld" xmlns:gml="http://www.opengis.net/gml" xmlns:ogc="http://www.opengis.net/ogc" version="1.0.0">
  <sld:NamedLayer>
    <sld:Name>Sea color background</sld:Name>
    <sld:UserStyle>
      <sld:Name>Background sample</sld:Name>
      <sld:Background>
        <sld:CssParameter name="fill">#F2EFE9</sld:CssParameter>
      </sld:Background>
      <sld:FeatureTypeStyle>
        <sld:Rule>
           ...
        </sld:Rule>  
    </sld:UserStyle>
  </sld:NamedLayer>
</sld:StyledLayerDescriptor>

Traditionally one can render multi-script labels by specifying a long list of family names in the “font-family”, e.g.:

<sld:Font>
  <sld:CssParameter name="font-family">Noto Sans Regular</sld:CssParameter>
  <sld:CssParameter name="font-family">Noto Sans Adlam Regular</sld:CssParameter>
  <sld:CssParameter name="font-family">Noto Sans Adlam Unjoined Regular</sld:CssParameter>
  <sld:CssParameter name="font-family">Noto Sans Armenian Regular</sld:CssParameter>
  <sld:CssParameter name="font-family">Noto Sans Balinese Regular</sld:CssParameter>
   ...
</sld:Font>

If the font names all share a common prefix, it’s now possible to be more concise and just use a function instead, specifying the common base name, letting GeoServer find all possible variants e.g.:

<sld:Font>
  <sld:CssParameter name="font-family">
    <ogc:Function name="fontAlternatives">
      <ogc:Literal>Noto Sans</ogc:Literal>
    </ogc:Function>
  </sld:CssParameter>
...
</sld:Font>

As a further labelling related feature, when performing conflict resolution the map renderer can now try to shrink the size of labels in search of a place to fit them. The new vendor option is called “fontShrinkSizeMin” and represents the minimum size to use. Here is an example, the two polygons share the same TextSymbolizer definition, in one the label size has been reduced to allow the label to fit:

Moving to line symbolizers, it’s now possible to drape a linear mark along a line. Before, it was just possible to repeat it along a line, but the output would not have looked continuous, especially at turns. Now, if you have a mark that starts and ends at the same height, it can literally be made continuous along the line, e.g. using this style:

       <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>

Results in the following (you cannot see at first it, but the size of the mark can be slightly altered to fit the segments length, and if it’s not enough, it gets cut and reconnected):

As a final note, there has been a number of small improvements to rendering performance, that will be especially visible when rendering a complex map, with many rules, features to be rendered, and labels (you know, like OpenStreetMap).

Enabled/advertised for layer groups

Up to now, the ability to enable/disable and advertise was limited to layers. No more, in GeoServer 2.17 you can now do the same with layer groups:

Custom WMS dimension for vector layers too

GeoServer supports standard WMS dimensions, TIME and ELEVATION, on both raster and vector datasets. However, user defined dimensions, also known as custom dimensions, were supported only by raster layers (typically, image mosaics). You can now configure them on vector layers as well:

WMS cascading improvements

The WMS cascading functionality has seen several improvements, including:

  • Possibility to choose the cascading format, expose the remote layer styles, while choosing which ones to advertise.
  • Possibility to configure min/max scale denominators for cascaded layers, as well as restrict cascading to the bounding box declared in the capabilities document.

GeoWebCache love

Significant improvements have been made to GeoWebCache and its integration with GeoServer, including:

  • Much better startup performance when integrated in GeoServer, the time to load the tiled layers configuration is a fraction of what it used to be.
  • Much faster tile layer listing in the GeoServer “tile layers” page
  • File system tile layout can be configured between classic (small folders), XYZ and TMS (for static cache generation)
  • Better control over failed tile seed operations. Seeding threads used to stop at the first failure, now error tolerance can be configured on the single thread and across the seed job:

JSON-LD community module

GeoServer 2.16 introduced a number of improvements in the WFS GeoJSON complex feature output. This release adds instead support for JSON-LD, as a community module.

Unlike the GeoJSON approach, based on automatic conventions, the JSON-LD module is driven by configuration, a JSON file giving the output format directives on how to encode the output based on complex input features.

The output format is available for both the WFS and new OGC Features API modules

OGC API community module updates

The OGC API community module delivers latest updates for OGC API services:

  • An up to date OGC Features API, updated to the last official release, with draft extensions to support filtering and multiple CRSs, along with tiling vector data
  • A OGC Tiles API, providing tiled collections in both rendered (maps, pngs, jpeg) and data (vector tiles) format, with draft extension to support on the fly filtering
  • A draft implementation of the OGC Styles API, supporting description and discovery of styles in multiple formats, and links from collections to their relevant styles, and back.
  • Two more experimental APIs, image API to manage image mosaic contents, and changeset API to figure out which areas of a tiled collection changed as a result of changes to the image mosaic backing them.

Development is still heavily ongoing, and specs are still evolving at a fast pace, but we invite you to try them out, enjoy their simplicity, and contribute to their evolution.

FlatGeoBuf community module

Are you using GML or GeoJSON to fetch data client side, and you’re not happy with the data transfer performance? You need to actually use the geometries client side, for editing, analysis and topological operations, and would like to avoid the clipping done in vector tiles?

Then you are the perfect candidate to try out our new FlatGeoBuf output format community module. FlatGeoBuf is “a performant binary encoding for geographic data based on flatbuffers that can hold a collection of Simple Features including circular interpolations as defined by SQL-MM Part 3.” While new, it’s making its way in several open source projects, it’s supported by the latest versions of GDAL/OGR and easy to embed in both OpenLayers and Leaflet. The format can also be streamed out, and rendered progressively client side, like in this OpenLayers demo.

And more!

There are several other new features and improvements, including:

  • Curved geometries are now supported in SQL Server too, in addition to the existing support for PostGIS and Oracle.
  • Support for workspace specific stored queries.
  • java.util.Math has been exposed in Freemarker templates.
  • It’s now possible to contribute an extension without signing an OSGeo CLA, as long as it’s self-contained and has a license compatible with GeoServer own.
  • The ncWMS compatibility community module has been improved, allowing to query a time list or a time range in GetTimeSeries, as well as ignoring NODATA pixels.
  • When renaming the layers, the pertinent authorization rules will be updated to match.
  • GeoTools has a new “ElasticGeo” community module, which allows to read data from ElasticSearch geo extensions. It still needs a nightly build packaging in Geoserver, volunteers welcomed.
  • GeoPackage can now be used with WMS and WFS time support.
  • Stand alone GeoWebCache has a new Swift blob store module, the integration with GeoServer would require custom packaging for it, volunteers welcomed.

Find out more in the release notes.

About GeoServer 2.17

Additional information on GeoServer 2.17 series:

GeoServer 2.17-RC Released

We are happy to announce GeoServer 2.17-RC release candidate is available for testing. Downloads are available (zip and war) along with docs and extensions.

This is a GeoServer release candidate made in conjunction with GeoTools 23-RC and GeoWebCache 1.17-RC.

  • Release candidates are a community building exercise and are not intended for production use.
  • We ask the community (everyone: individuals, organizations, service providers) to download and thoroughly test this release candidate and report back.
  • Participating in testing release candidates is a key expectation of our open source social contract. We make an effort to thank each person who tests in our release announcement and project presentations!

We will provide a more extensive description of new functionality when GeoServer 2.17 is released.

Release Candidate Testing Priorities

This is an exciting release and a lot of great new functionality has been added. We would like to ask for your assistance testing the following:

  • The number one testing priority is to try out GeoServer with your data! Mass market open source thrives on having many people to review. Scientific open source like GeoServer thrives on exposure to many datasets.
  • The application download bundles, and extension download bundles have been repackaged. Please help check they contain everything needed, including appropriate readme instructions and open source license information.
  • MBStyle support has received a lot of work and has been packaged up as extension for the first time. Please try this out, and if you work with vector tiles compare the output between client side and server side rendering.
  • The rest of this blog post highlights new features for GeoServer 2.17, please try out these features, read the documentation links, and ask questions.

Known Issues:

  • Download bundles README links to the developers guide are broken

MBStyle module graduated to extension

The MBStyles module has received a deep review and many visual differences have been resolved, to the point that it can now display properly some of the OpenMapTiles styles as-is, with good fidelity, here is an example:

The module has also graduated to extension status, so you will now find it in all releases.

MBTiles community module reading vector tiles

The above map has been rendered not with one functionality, but two! Did you know one can put vector tiles in a MBTiles file? The community module mbtiles-store can read both raster and vector tiles now, and will serve the tiles for vector rendering.

It makes the perfect match with the MBStyle module, one can read vector tiles and render them using the styles they were designed for. Want to give it a quick try? Go to the OpenMapTiles web site and download an area of interest, for personal usage, and configure all layers. Then grab the osm-bright-gl-style, set it up, and configure it as a “style group” layer group type. Done:

Web resource extension

Ever had to fiddle with the data directory on a remote server, maybe trying to setup the control-flow configuration, or upload a Freemarker template? It can be annoying business, one often needs some sort of side access, like SSH. The Resource Browser module, freshly graduated into a supported extension, comes to the rescue, providing a tools page where administrators can browse the data directory, inspect files, edit them, and upload new ones too:

Manage authorization from each resource

Ever added a new layer and forgot to setup security for it? It’s a common occurrence, when the configuration of the layers and its security are done in different pages.

GeoServer 2.17 has a new “Security” tab in each page, allowing you to setup the security for a given resource directly in its configuration page:

Edit security settings there, and the layer security configuration will be updated as a consequence. The same goes for workspaces and layer groups.

Track last change of each resource

GeoServer 2.17 tracks, and allows to show, the date of creation and last modification of major configuration resources, such as workspaces, stores and layers, in their respective list page.

Turn it on in the server configuration page, and see the result in list pages:

This new setting is off by default, you’ll have to go and explicitly turn it on if you care to see the dates.

Map rendering improvements

GeoTools label “shield” support already allowed to put together a graphic along with a label, with the goal of supporting road label shields. GeoServer 2.17.0 includes the ability to lay them out separately, so that the mark and labels are not centered with each other but, for example, one above the other. This allows to setup point markers that appear only as long as their label is showing up too:

It’s also possible to setup a background color for the map at the style level, using a new Background element inside UserStyle. Background is a fill:

<?xml version="1.0" encoding="UTF-8"?><sld:StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:sld="http://www.opengis.net/sld" xmlns:gml="http://www.opengis.net/gml" xmlns:ogc="http://www.opengis.net/ogc" version="1.0.0">
  <sld:NamedLayer>
    <sld:Name>Sea color background</sld:Name>
    <sld:UserStyle>
      <sld:Name>Background sample</sld:Name>
      <sld:Background>
        <sld:CssParameter name="fill">#F2EFE9</sld:CssParameter>
      </sld:Background>
      <sld:FeatureTypeStyle>
        <sld:Rule>
           ...
        </sld:Rule>  
    </sld:UserStyle>
  </sld:NamedLayer>
</sld:StyledLayerDescriptor>

Traditionally one can render multi-script labels by specifying a long list of family names in the “font-family”, e.g.:

<sld:Font>
  <sld:CssParameter name="font-family">Noto Sans Regular</sld:CssParameter>
  <sld:CssParameter name="font-family">Noto Sans Adlam Regular</sld:CssParameter>
  <sld:CssParameter name="font-family">Noto Sans Adlam Unjoined Regular</sld:CssParameter>
  <sld:CssParameter name="font-family">Noto Sans Armenian Regular</sld:CssParameter>
  <sld:CssParameter name="font-family">Noto Sans Balinese Regular</sld:CssParameter>
   ...
</sld:Font>

If the font names all share a common prefix, it’s now possible to be more concise and just use a function instead, specifying the common base name, letting GeoServer find all possible variants e.g.:

<sld:Font>
  <sld:CssParameter name="font-family">
    <ogc:Function name="fontAlternatives">
      <ogc:Literal>Noto Sans</ogc:Literal>
    </ogc:Function>
  </sld:CssParameter>
...
</sld:Font>

As a further labelling related feature, when performing conflict resolution the map renderer can now try to shrink the size of labels in search of a place to fit them. The new vendor option is called “fontShrinkSizeMin” and represents the minimum size to use. Here is an example, the two polygons share the same TextSymbolizer definition, in one the label size has been reduced to allow the label to fit:

Moving to line symbolizers, it’s now possible to drape a linear mark along a line. Before, it was just possible to repeat it along a line, but the output would not have looked continuous, especially at turns. Now, if you have a mark that starts and ends at the same height, it can literally be made continuous along the line, e.g. using this style:

       <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>

Results in the following (you cannot see at first it, but the size of the mark can be slightly altered to fit the segments length, and if it’s not enough, it gets cut and reconnected):

As a final note, there has been a number of small improvements to rendering performance, that will be especially visible when rendering a complex map, with many rules, features to be rendered, and labels (you know, like OpenStreetMap).

Enabled/advertised for layer groups

Up to now, the ability to enable/disable and advertise was limited to layers. No more, in GeoServer 2.17 you can now do the same with layer groups:

Custom WMS dimension for vector layers too

GeoServer supports standard WMS dimensions, TIME and ELEVATION, on both raster and vector datasets. However, user defined dimensions, also known as custom dimensions, were supported only by raster layers (typically, image mosaics). You can now configure them on vector layers as well:

WMS cascading improvements

The WMS cascading functionality has seen several improvements, including:

  • Possibility to choose the cascading format, expose the remote layer styles, while choosing which ones to advertise.
  • Possibility to configure min/max scale denominators for cascaded layers, as well as restrict cascading to the bounding box declared in the capabilities document.

GeoWebCache love

Significant improvements have been made to GeoWebCache and its integration with GeoServer, including:

  • Much better startup performance when integrated in GeoServer, the time to load the tiled layers configuration is a fraction of what it used to be.
  • Much faster tile layer listing in the GeoServer “tile layers” page
  • File system tile layout can be configured between classic (small folders), XYZ and TMS (for static cache generation)
  • Better control over failed tile seed operations. Seeding threads used to stop at the first failure, now error tolerance can be configured on the single thread and across the seed job:

JSON-LD community module

GeoServer 2.16 introduced a number of improvements in the WFS GeoJSON complex feature output. This release adds instead support for JSON-LD, as a community module.

Unlike the GeoJSON approach, based on automatic conventions, the JSON-LD module is driven by configuration, a JSON file giving the output format directives on how to encode the output based on complex input features.

The output format is available for both the WFS and new OGC Features API modules

OGC API community module updates

The OGC API community module delivers latest updates for OGC API services:

  • An up to date OGC Features API, updated to the last official release, with draft extensions to support filtering and multiple CRSs, along with tiling vector data
  • A OGC Tiles API, providing tiled collections in both rendered (maps, pngs, jpeg) and data (vector tiles) format, with draft extension to support on the fly filtering
  • A draft implementation of the OGC Styles API, supporting description and discovery of styles in multiple formats, and links from collections to their relevant styles, and back.
  • Two more experimental APIs, image API to manage image mosaic contents, and changeset API to figure out which areas of a tiled collection changed as a result of changes to the image mosaic backing them.

Development is still heavily ongoing, and specs are still evolving at a fast pace, but we invite you to try them out, enjoy their simplicity, and contribute to their evolution.

FlatGeoBuf community module

Are you using GML or GeoJSON to fetch data client side, and you’re not happy with the data transfer performance? You need to actually use the geometries client side, for editing, analysis and topological operations, and would like to avoid the clipping done in vector tiles?

Then you are the perfect candidate to try out our new FlatGeoBuf output format community module. FlatGeoBuf is “a performant binary encoding for geographic data based on flatbuffers that can hold a collection of Simple Features including circular interpolations as defined by SQL-MM Part 3.” While new, it’s making its way in several open source projects, it’s supported by the latest versions of GDAL/OGR and easy to embed in both OpenLayers and Leaflet. The format can also be streamed out, and rendered progressively client side, like in this OpenLayers demo.

And more!

There are several other new features and improvements, including:

  • Curved geometries are now supported in SQL Server too, in addition to the existing support for PostGIS and Oracle.
  • Support for workspace specific stored queries.
  • java.util.Math has been exposed in Freemarker templates.
  • It’s now possible to contribute an extension without signing an OSGeo CLA, as long as it’s self-contained and has a license compatible with GeoServer own.
  • The ncWMS compatibility community module has been improved, allowing to query a time list or a time range in GetTimeSeries, as well as ignoring NODATA pixels.
  • When renaming the layers, the pertinent authorization rules will be updated to match.
  • GeoTools has a new “ElasticGeo” community module, which allows to read data from ElasticSearch geo extensions. It still needs a nightly build packaging in Geoserver, volunteers welcomed.
  • GeoPackage can now be used with WMS and WFS time support.
  • Stand alone GeoWebCache has a new Swift blob store module, the integration with GeoServer would require custom packaging for it, volunteers welcomed.

Find out more in the release notes.

About GeoServer 2.17

Additional information on GeoServer 2.17 series:

Download GeoServer