GeoServer Blog

GeoServer 2.18.3 Released

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

This release is made in conjunction with GeoTools 24.3 and GeoWebCache 1.18.3. This is a maintenance release recommended for production systems.

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

Improvements and Fixes

This release includes a number of enhancements and fixes in core and extensions:

  • Add LayerGroup support to Geofence,
  • ColorMap labels in raster layer GetFeatureInfo response
  • New web-service-auth community module
  • Add GeoServer environment parametrization support to Base Proxy configuration
  • Include layer name(s) in WMS ServiceException for GetMap

For more information check the 2.18.3 release notes.

About GeoServer 2.18

Additional information on GeoServer 2.18 series:

Read More

GeoServer 2.19.0 Released

We are happy to announce GeoServer 2.19.0 release is available for download (zip and war) along with docs and extensions.

This GeoServer 2.19.0 release was produced in conjunction with GeoTools 25.0 and GeoWebCache 1.19.0.

Thanks to everyone who contributed and helped test this release. Developer adding new features are credited in the sections below. Release candidate testing was performed by Andrea Aime, Bart Verbeeck, Christoforos Vradis, Georg Weickelt, Graham Humphries, Ian Turton, Jody Garnett, Peter Rushforth, Richard Duivenvoorde, Russell Grew, and Simone Giannecchini. With all the new extensions being added we appreciated those testing the release candidate packaging.

Thanks to Alessandro Parma (GeoSolutions) and Andrea Aime (GeoSolutions) for making this release.

MapML extension

In this release, MapML has graduated from community module to extension status. Map Markup Language (MapML) is a proposed extension to HTML, for maps. The objective of the project is to standardize accessible, performant Web maps with native support from Web browsers (maps in HTML). The GeoServer MapML extension will closely track the MapML specification as it evolves. Find out more at https://maps4html.org/, and if you like our goals, join the community group!

The MapML extension works with GeoServer layers and layer groups, and uses WMS, WMTS and WFS facilities built into GeoServer to provide simple map previews layers. The layer previews can be “dragged” from one browser tab onto another map preview to visualize a mashup of the layers of layer groups using the built in MapML viewer.

MapML Layer properties panel
Editing a layer’s MapML properties in the Layers panel

MapML gridsets in the Layers Tile Caching tab
Editing a layer’s MapML gridsets in the Layers panel Tile Caching tab

MapML Preview link is added to the Layer Preview page
Preview a layer in the MapML viewer by following the MapML link

MapML previews can be mashed up by dragging the URL of one preview onto another
Mash up MapML previews by drag and drop

The Maps for HTML community would like to thank Andrea Aime, Jody Garnett and the GeoServer PSC for their support and help in getting this extension published.

More information on the GeoServer MapML extension is available in the user guide

WPS JDBC extension

The WPS JDBC extension allows to share the status of asynchronous WPS requests across a GeoServer cluster. The status of all requests, past and ongoing, can be stored in a database, for later reference.

The module uses GeoTools JDBC stores to access databases, create the necessary tables, and track status. Connection parameters are provided as property files, e.g.:

user=postgres
port=5432
password=******
passwd=******
host=localhost
database=gsstore
driver=org.postgresql.Driver
dbtype=postgis

For more information, refer to the module documentation.

We’d like to thank Ian Turton for developing the module on behalf of GeoSolutions, Alessio Fabiani (GeoSolutions) for providing documentation for it, and Andrea Aime (GeoSolutions) for performing the QA and graduation steps.

WPS Download extension

The WPS download plugin provides support for the download of large amounts of data, allowing use of asynchronous requests, where using WFS, WCS or WMS for the same task would lead to HTTP timeouts. Also, download limits can be configured to avoid excessively large requests: size in MB, number of features, number of animation frames.

In particular, the following processes are available:

  • DownloadEstimator, verifying that a raster/vector download about to be attempted will fit the download limits.
  • DownloadProcess, allowing to download either raster or vector data, reproject and clip them
  • DownloadMapProcess, allows to download a large map matching what is visible on a client (which may be using tiles and display on a multi-screen), eventually dynamically fetching layers from remote WMS servers as well. It’s also possible to decorate the final map using the standard decoration layouts.
  • DownloadAnimationProcess, allows to build a MP4 movie given a set of layers and times.

GeoNode uses the module to allow download of datasets, eventually clipped and filtered to the current view. The asynchronous download allows to download large datasets, and retrieve them later, once ready.

GeoNode download
Initiating a download in GeoNode

GeoNode download
Configuring the download

GeoNode download
The download package is ready

GeoNode download
Viewing the clipped download in QGIS

For more information, refer to the module documentation.

Thanks to Alessio, Andrea, Daniele, from GeoSolutions, for developing the extension, and GeoNode/MapStore for testing it in various production environments.

WMTS Multidimensional extension

The WMTS multi-dimensional extension is an extension to the WMTS protocol developed during OGC Testbed 12. The extension allows to explore the dimensions attached to a dataset, providing ways to explore them, finding relationships between them.

Here are a couple of real world examples of this functionality:

  • GeoServer is publishing a set of satellite images. Each image is time stamped. The user is browsing the set of data on a map, and the client software wants to show the list of available times for the current area. The WMS/WMTS dimension support cannot help, but the WMTS extension has a request, GetDomainValues, which exactly answers this question.
  • GeoServer is publishing a set of NetCDFs containing weather forecasts. Each dataset has two times associated, a run time (the time the forecast was run) and a time (the predicted time for the weather data). Forecasts are run for the short term future, so the two times are strictly related. A user wants to compare forecasts for a given predicted time. The GetDomainValues request can be used to locate the run times that have a prediction for the given forecast time.
  • GeoServer is publishing a set of timestamped data. The client wants to display a timeline, providing an idea of which times are available for the current view. In addition to that, the clients wants to display how many datasets are available along the timeline. The GetHistogram request can be used to retrieve a count of datasets available over time buckets in a given interval.

The MapStore client uses the module to power its timeline extension, providing time discovery, navigation, animation, and histogram display.

MapStore timeline plugin, with animation controls
MapStore timeline plugin, with animation controls

MapStore timeline plugin, histogram view
MapStore timeline plugin, histogram view

The plugin partially replaces the WMS animator functionality, which is going to be deprecated (since it’s memory bound, and can only be accessed with a synchronous request).

For more information, refer to the module documentation.

Thanks to Nuno Oliveira (GeoSolutions) and Andrea Aime (GeoSolutions) for the initial development, and MapStore for adopting the module, using it in production, and ensuring its long term development

Params-extractor extension

The parameter extractor module is used to inject vendor parameters in all links that a standard OGC client uses, by either reflecting them into the Capabilities documents backlinks, or hiding them in an extra component in the URLs paths.

This can be used, for example, to provide a desktop client, such as QGIS, a different view of a given layer based on viewparams, cql_filter or env parameters, even if the client would not be able to use the parameters natively. Each combination of parameters receives a different starting GetCapabilities request.

A simple query parameter echoing can be setup for clients honoring query parameters in capabilities backlinks:

Parameter echoing
Parameter extractor echoing

For clients ignoring query parameters or even ignoring backlinks, the parameters can be added as a path component instead, and then expanded in a larger templated value:

Parameter extraction
Parameter expansion from path component

With the above setup, a URL ending with H11:

/geoserver/tiger/wms/H11?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap

is interpreted as:

/geoserver/tiger/wms?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&CQL_FILTER=CFCC%3D%27H11%27

For more information, refer to the module documentation.

Thanks to Nuno Oliveira (GeoSolutions) for developing this module.

GeoWebCache-S3 extension

The GeoWebCache S3 blobstore allows storage of GeoWebCache tiles in a S3 bucket. It has been also tested with a few other S3 compatible blob storage mechanisms, such as Minio.

This plugin is particularly useful when deploying GeoServer on AWS, but also when setting up a shared tile storage in Kubernetes.

Parameter extraction
Setting up the S3 tile storage

For more information, refer to the module documentation.

Retire ArcSDE Extensions

The ArcSDE Extension has been retired.

In this case we found that the extension is no longer actively used, and lacked sufficient feedback and resources for continued development. The last tested ArcSDE 10.2.2 version is no longer available, making the required jars required for installation unavailable.

Retire the Script community module

The Script community module has been retired.

The module provided scripting abilities for GeoServer, allowing to add WPS processes and small REST services in scripting languages, and storing them in the data directory.

Unfortunately the module fell un-maintained and would no longer build nor work.

JTS 1.18.1

GeoServer 2.19.0 includes the latest JTS Topology Suite 1.18.1 release, the headline feature is an optional “Overlay Next Generation” implementation that should provide a performance improvement for operations such as tile generation, vector tiles, and get map requests.

To try it out use the system property -Djts.overlay=ng - the effect should be small as we already have several optimizations in place before trying this now faster JTS Overlay.

Thanks to Martin Davis (Crunch Data) and James Hughes (CCRi) for making JTS 1.18.1 available during our release window.

Codebase updates and Quality Assurance

GeoServer continues to be build with the latest open source technologies:

  • GeoTools 25.0
  • GeoWebCache 1.19.0
  • JTS 1.18.1
  • JAI-EXT 1.1.19
  • GeoFence 3.4.7
  • Upgrade oshi-core from 5.4.0 to 5.5.0 for new Apple hardware support
  • Freemarker 2.3.31

We do not get a chance to talk about the code-base that makes up GeoServer often, but recent changes and improvements deserve some praise. The GeoServer team has really embraced automating code checks, starting with simply formatting the code in a consistent fashion, to more advanced techniques checking for common mistakes.

  • Switch most of the unit tests from JUnit 3 to JUnit 4
  • Remove usage of Vector/Hashtable, replace with ArrayList and HashMap, add PMD rule to enforce it
  • Remove un-necessary casts from code, add PMD rule to enforce it
  • Replace try/finally with try-with-resources, add a PMD rule to enforce it
  • Collapse catch statements with the same body in a multi-catch, add PMD rule to enforce it
  • Avoid assertTrue for tests that can be expressed with dedicated assertions. Add PMD rule to enforce it.
  • Replace iterator loops with enhanced for loops, add a QA rule to enforce it.
  • Run PMD checks on test sources as well.
  • Use Collection.isEmpty() when checking for item availability
  • Remove explicit types when diamond operator can be used instead. Added a PMD rule to enforce it.
  • Remove or suppress unchecked casts, enable the Java compiler lint option for it.

Although all these changes sound small in isolation, the fact that they are performed on the entire codebase, and checked each time a pull-request is proposed, really provides confidence in the technology we publish.

Thanks to Andrea for this valuable work.

And more!

There are several other new features and improvements, including:

Find out more in the release notes.

About GeoServer 2.19

Additional information on GeoServer 2.19 series:

Read More

GeoServer repository transition to main branch

The GeoServer project is changing our default branch to main.

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

The change is part of an industry shift made possible by the git, bitbucket, github and gitlab projects. The git command line, repository implementations, now support main as default branch setting.

To update your local repository:

git branch -m master main
git fetch upstream
git branch -u upstream/main main

To configure your local git tool so that new repositories are created with a main branch:

git config --global init.defaultBranch main
Read More

GeoServer 2.19-RC Released

We are happy to announce GeoServer 2.19-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 25-RC and GeoWebCache 1.19-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!
  • GeoServer commercial service providers are fully expected to test on behalf of their customers.

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.
  • Help check that new extension download bundles have contain everything needed, including appropriate readme instructions and open source license information.
  • The rest of this blog post highlights new features for GeoServer 2.19, please try out these features, read the documentation links, and ask questions.

Known Issues:

  • Layer configured with missing style throws NPE

MapML extension

In this release, MapML has graduated from community module to extension status. Map Markup Language (MapML) is a proposed extension to HTML, for maps. The objective of the project is to standardize accessible, performant Web maps with native support from Web browsers (maps in HTML). The GeoServer MapML extension will closely track the MapML specification as it evolves. Find out more at https://maps4html.org/, and if you like our goals, join the community group!

The MapML extension works with GeoServer layers and layer groups, and uses WMS, WMTS and WFS facilities built into GeoServer to provide simple map previews layers. The layer previews can be “dragged” from one browser tab onto another map preview to visualize a mashup of the layers of layer groups using the built in MapML viewer.

MapML Layer properties panel
Editing a layer’s MapML properties in the Layers panel

MapML gridsets in the Layers Tile Caching tab
Editing a layer’s MapML gridsets in the Layers panel Tile Caching tab

MapML Preview link is added to the Layer Preview page
Preview a layer in the MapML viewer by following the MapML link

MapML previews can be mashed up by dragging the URL of one preview onto another
Mash up MapML previews by drag and drop

The Maps for HTML community would like to thank Andrea Aime, Jody Garnett and the GeoServer PSC for their support and help in getting this extension published.

More information on the GeoServer MapML extension is available in the user guide

WPS JDBC extension

The WPS JDBC extension allows to share the status of asynchronous WPS requests across a GeoServer cluster. The status of all requests, past and ongoing, can be stored in a database, for later reference.

The module uses GeoTools JDBC stores to access databases, create the necessary tables, and track status. Connection parameters are provided as property files, e.g.:

user=postgres
port=5432
password=******
passwd=******
host=localhost
database=gsstore
driver=org.postgresql.Driver
dbtype=postgis

For more information, refer to the module documentation.

We’d like to thank Ian Turton for developing the module on behalf of GeoSolutions, Alessio Fabiani (GeoSolutions) for providing documentation for it, and Andrea Aime (GeoSolutions) for performing the QA and graduation steps.

WPS Download extension

The WPS download plugin provides support for the download of large amounts of data, allowing use of asynchronous requests, where using WFS, WCS or WMS for the same task would lead to HTTP timeouts. Also, download limits can be configured to avoid excessively large requests: size in MB, number of features, number of animation frames.

In particular, the following processes are available:

  • DownloadEstimator, verifying that a raster/vector download about to be attempted will fit the download limits.
  • DownloadProcess, allowing to download either raster or vector data, reproject and clip them
  • DownloadMapProcess, allows to download a large map matching what is visible on a client (which may be using tiles and display on a multi-screen), eventually dynamically fetching layers from remote WMS servers as well. It’s also possible to decorate the final map using the standard decoration layouts.
  • DownloadAnimationProcess, allows to build a MP4 movie given a set of layers and times.

GeoNode uses the module to allow download of datasets, eventually clipped and filtered to the current view. The asynchronous download allows to download large datasets, and retrieve them later, once ready.

GeoNode download
Initiating a download in GeoNode

GeoNode download
Configuring the download

GeoNode download
The download package is ready

GeoNode download
Viewing the clipped download in QGIS

For more information, refer to the module documentation.

Thanks to Alessio, Andrea, Daniele, from GeoSolutions, for developing the extension, and GeoNode/MapStore for testing it in various production environments.

WMTS Multidimensional extension

The WMTS multi-dimensional extension is an extension to the WMTS protocol developed during OGC Testbed 12. The extension allows to explore the dimensions attached to a dataset, providing ways to explore them, finding relationships between them.

Here are a couple of real world examples of this functionality:

  • GeoServer is publishing a set of satellite images. Each image is time stamped. The user is browsing the set of data on a map, and the client software wants to show the list of available times for the current area. The WMS/WMTS dimension support cannot help, but the WMTS extension has a request, GetDomainValues, which exactly answers this question.
  • GeoServer is publishing a set of NetCDFs containing weather forecasts. Each dataset has two times associated, a run time (the time the forecast was run) and a time (the predicted time for the weather data). Forecasts are run for the short term future, so the two times are strictly related. A user wants to compare forecasts for a given predicted time. The GetDomainValues request can be used to locate the run times that have a prediction for the given forecast time.
  • GeoServer is publishing a set of timestamped data. The client wants to display a timeline, providing an idea of which times are available for the current view. In addition to that, the clients wants to display how many datasets are available along the timeline. The GetHistogram request can be used to retrieve a count of datasets available over time buckets in a given interval.

The MapStore client uses the module to power its timeline extension, providing time discovery, navigation, animation, and histogram display.

MapStore timeline plugin, with animation controls
MapStore timeline plugin, with animation controls

MapStore timeline plugin, histogram view
MapStore timeline plugin, histogram view

For more information, refer to the module documentation.

Thanks to Nuno Oliveira (GeoSolutions) and Andrea Aime (GeoSolutions) for the initial development, and MapStore for adopting the module, using it in production, and ensuring its long term development

Params-extractor extension

The parameter extractor module is used to inject vendor parameters in all links that a standard OGC client uses, by either reflecting them into the Capabilities documents backlinks, or hiding them in an extra component in the URLs paths.

This can be used, for example, to provide a desktop client, such as QGIS, a different view of a given layer based on viewparams, cql_filter or env parameters, even if the client would not be able to use the parameters natively. Each combination of parameters receives a different starting GetCapabilities request.

A simple query parameter echoing can be setup for clients honoring query parameters in capabilities backlinks:

Parameter echoing
Parameter extractor echoing

For clients ignoring query parameters or even ignoring backlinks, the parameters can be added as a path component instead, and then expanded in a larger templated value:

Parameter extraction
Parameter expansion from path component

With the above setup, a URL ending with H11:

/geoserver/tiger/wms/H11?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap

is interpreted as:

/geoserver/tiger/wms?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&CQL_FILTER=CFCC%3D%27H11%27

For more information, refer to the module documentation.

Thanks to Nuno Oliveira (GeoSolutions) for developing this module.

GeoWebCache-S3 extension

The GeoWebCache S3 blobstore allows to store GeoWebCache tiles in a S3 bucket. It has been also tested with a few other S3 compatible blob storage mechanisms, such as Minio.

This plugin is particularly useful when deploying GeoServer on AWS, but also when setting up a shared tile storage in Kubernetes.

Parameter extraction
Setting up the S3 tile storage

For more information, refer to the module documentation.

Retire ArcSDE Extensions

The ArcSDE Extension has been retired.

In this case we found that the extension is no longer actively used, and lacked sufficient feedback and resources for continued development. The last tested ArcSDE 10.2.2 version is no longer available, making the required jars required for installation unavailable.

Retire the Script community module

The Script community module has been retired.

The module provided scripting abilities for GeoServer, allowing to add WPS processes and small REST services in scripting languages, and storing them in the data directory.

Unfortunately the module fell un-maintained and would no longer build nor work.

Codebase updates and Quality Assurance

GeoServer continues to be build with the latest open source technologies:

  • GeoTools 25-RC
  • GeoWebCache 1.19-RC
  • JAI-EXT 1.1.19
  • JTS 1.18.1
  • GeoFence 3.4.7
  • Upgrade oshi-core from 5.4.0 to 5.5.0 for new Apple hardware support
  • Freemarker 2.3.31

We do not get a chance to talk about the code-base that makes up GeoServer often, but recent changes and improvements deserve some praise. The GeoServer team has really embraced automating code checks, starting with simply formatting the code in a consistent fashion, to more advanced techniques checking for common mistakes.

  • Switch most of the unit tests from JUnit 3 to JUnit 4
  • Remove usage of Vector/Hashtable, replace with ArrayList and HashMap, add PMD rule to enforce it
  • Remove un-necessary casts from code, add PMD rule to enforce it
  • Replace try/finally with try-with-resources, add a PMD rule to enforce it
  • Collapse catch statements with the same body in a multi-catch, add PMD rule to enforce it
  • Avoid assertTrue for tests that can be expressed with dedicated assertions. Add PMD rule to enforce it.
  • Replace iterator loops with enhanced for loops, add a QA rule to enforce it.
  • Run PMD checks on test sources as well.
  • Use Collection.isEmpty() when checking for item availability
  • Remove explicit types when diamond operator can be used instead. Added a PMD rule to enforce it.
  • Remove or suppress unchecked casts, enable the Java compiler lint option for it.

Although all these changes sound small in isolation, the fact that they are performed on the entire codebase, and checked each time a pull-request is proposed, really provides confidence in the technology we publish.

Thanks to Andrea for this valuable work.

And more!

There are several other new features and improvements, including:

Find out more in the release notes.

About GeoServer 2.19

Additional information on GeoServer 2.19 series:

Read More

GeoServer 2.17.5 Released

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

This release is made in conjunction with GeoTools 23.5. This is a maintenance release recommended for production systems.

The GeoServer 2.17.x has reached end-of-life and this is the last scheduled release fo the 2.17.x branch. Production systems are advised to use 2.17.5 release as a temporary measure, and schedule your upgrade to 2.18.

Thanks to everyone who contributed, and Gabriel Roldan & Jody Garnett (GeoCat) for making this release.

Improvements and Fixes

Fixes included in this release:

  • GEOS-9879 - app-schema extension fix for feature collection count
  • GEOS-9897 - JTS upgrade breaks geofence integration
  • GEOS-9880 - Monitor failure when maxSize is set to unbound
  • GEOS-9881 - SldService failure when percentages and continuous parameters both set to true
  • GEOS-9895 - Override transformation operations ignored for bounding box computation
  • GEOS-9911 - Params-extractor plugin, wrong url in getCapabilities when having context with addition “/”

For more information check the 2.17.5 release notes.

About GeoServer 2.17

Features, presentations and reference material on the 2.17 series:

Read More

GeoServer 2.18.2 Released

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

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

Thanks to everyone who contributed, and Alessandro Parma, Andrea Aime (GeoSolutions) for making this release.

Improvements and Fixes

This release includes a number of fixes in core and extensions:

  • Improved GWC seeding scalability (also check GWC 1.18.2 release notes).
  • Fixed back-links generation during WPS asynchronous requests, when a proxy base URL is used.
  • Fixed a GeoFence server packaging issue.
  • A number of dependent libraries have been upgraded, including the PostgreSQL and MySQL JDBC drivers, HTTP components, Guava.

Community Updates

Things get really interesting when looking at functionality provided by community modules:

  • The new support for COGs based on ImageIO Ext landed in a community module, adding it adds support for COG in both the GeoTIFF reader and image mosaic. Support for harvesting COG granules is also added in the REST API.
  • A deadlock in JDBCConfig has been resolved, along with issues related to high load when GeoServer has just started up.
  • The WPS download “map” and “animation” processes sport improved legend support.

For more information check the 2.18.2 release notes.

About GeoServer 2.18

Additional information on GeoServer 2.18 series:

Read More

GeoServer 2.17.4 Released

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

This release is made in conjunction with GeoTools 23.4 and GeoWebCache 1.17.4. This is a maintenance release recommended for production systems. You are reminded that this is most likely to be the last release made on the 2.17 branch and you should consider moving to the stable 2.18 branch as soon as possible.

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

Improvements and Fixes

This release includes a number of improvements. Notable improvements:

  • [GEOS-9753] - Features-templating plug-in allows env parametrization on vendorOptions
  • [GEOS-9765] - Add IP Address range to GeoFence UI
  • [GEOS-9780] - status page shows (read-only) loopback partitions

Fixes included in this release:

  • [GEOS-9689] - WFS-NG Other SRS in URN OGC format are not matched by WMS Request SRS
  • [GEOS-9750] - WPS processes fail with missing CSV dependencies
  • [GEOS-9754] - Not consistent array element enumeration in flat GeoJson output format
  • [GEOS-9758] - CRS Panel overrides URN SRS format with EPSG:XXXX format
  • [GEOS-9791] - GeoJSON bounding box axis order wrongly encoded when CRS axis order is NORTH-EAST
  • [GEOS-9816] - Download links from the result of an asynchronous process will not honor the proxy base URL, if it uses HTTP header variables

For more information check the 2.17.4 release notes.

About GeoServer 2.17

Features, presentations and reference material on the 2.17 series:

Read More

GeoServer 2.18.1 Released

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

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

Thanks to everyone who contributed, and Alessandro Parma, Andrea Aime (GeoSolutions) for making this release.

Improvements and Fixes

This release includes a number of improvements. Notable improvements:

  • New option allow to tile cache WMS requests that align to gridsets, even if tiled=true is not present.
  • New process grouping features by attribute, and then selecting a single one out of the group, in particular, the feature with the min or max value of a given attribute. Can be used either as a rendering transformation or a stand-alone WPS process.
  • GeoFence integrated UI allows to configure security rules by IP address ranges.

Fixes included in this release:

  • Better WPS packaging, including the required CSV libraries.
  • Better support for WMS XML post requests in workspace local services.
  • Addressed incompatibility with macOS 11 preventing startup

For more information check the 2.18.1 release notes.

Community Updates

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

  • The “feature template” module has received assorted improvements

About GeoServer 2.17

Additional information on GeoServer 2.18 series:

Read More

GeoServer 2.17.3 Released

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

This release is made in conjunction with GeoTools 23.3 and GeoWebCache 1.17.3. This is a maintenance release recommended for production systems.

Thanks to everyone who contributed, and Alessandro Parma, Andrea Aime (GeoSolutions) for making this release.

Improvements and Fixes

This release includes a number of improvements. Notable improvements:

  • SLDService can now advertise supported classification methods (for future proofing clients, in case new methods are added later down the road). A new standard deviation based classification method has been added.
  • App-schema generating simple feature outputs (pure mapping) can now be used with all the common simple feature formats too, like shapefile, CSV, KML and so on.
  • It’s possible to disable auto-complete of the UI login
  • Importer has been optimized to avoid full directory scans while importing single files. This coupled with similar optimizations in image mosaic harvesting, speeds up significantly harvesting new files via importer, when contained in directories having many files.
  • The vector tiles output can now get full benefit from a pre-generalized data source, reading the features at the resolution required to generate the vector tiles (was previously using the highest resolution available).
  • The Jiffle process/rendering transformation can now generate multi-band outputs, and its performance received a few improvements.

Fixes included in this release:

  • Memory management of raster GDAL sources has been improved.
  • Layer preview with strict WMS compliance was not working any longer, this has been fixed.

For more information check the 2.17.3 release notes.

Community Updates

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

  • The wfs-templating module has received a few improvements, and has been renamed to features-templating, to clarify it can be used with OGC API - Feautures, as well as WFS.

About GeoServer 2.17

Features, presentations and reference material on the 2.17 series:

Read More

GeoServer 2.18.0 Released

The GeoServer community is pleased to share the availability of GeoServer 2.18.0 Release. Downloads are available (zip and war) along with documentation and more than 40 extensions.

This GeoServer release is made in conjunction with GeoTools 24.0 and GeoWebCache 1.18.0.

We would like to thank everyone who contributed to this release, and helped with testing it.

Thanks to Jukka Rahkonen, Jody Garnett and Brad Hards for initial testing of this release. This release was carried out by Ian Turton of Astun Technology and the support of the UK Hydrographic Office.

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 jms-clustering
  • Change to use of allow-list / deny-list
  • Changed to use of key store 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 edit detailed settings. These pages now consistently use:

  • OK: modify settings, returning to page being edited so they can be saved.
  • Cancel: abandon any changes and return to the page being edited.

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"?>
<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 request 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 data, 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 report:

  • 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 in-line 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 road map 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 Maths 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 the GeoServer 2.18 Series

Additional information on GeoServer 2.18 series:

Read More