Sunday, September 20, 2020

GeoTools 24.0 Released

 The GeoTools team is pleased to share the availability GeoTools 24.0:

This release is also available from the OSGeo Maven Repository and is made in conjunction with GeoServer 2.18.0, GeoWebCache 1.18.0 and JTS 1.17.1.

This release was carried out by Ian Turton of Astun Technology, with thanks to the support of UKHO.

Visuals and Rendering

New capabilities have been added:
  • Add a ProjectionHandler for Homolosine
  • WrappingProjectionHandler can now handle a rotated polar fitted Coordinate System
  • Implement Polyconic spherical case (as used by US Census TIGER dataset)

Add functionality to GeoPackage with GeoPkgExtension

Read/write support of GeoPackage has been available as a GeoTools DataStore for some time, this release Andrea (GeoSolutions) has really upped our game defining a GeoPkgExtension for modules to hook in and provide additional functionality:
  • GeoPkgMetadataExtension: Supports the GeoPackage metadata extension, defined as a "registered extension" in the GeoPackage standard .
  • GeoPkgSchemaExtension: Allowing to declare more information about columns and eventually express constraints on them.
  • This approach is already opening up a host of possibilities, with GeoServer experimenting with including styling and semantic annotations.
The GeoPackage module is under active development with new support for Support compact enumerations, speed improvements when adding content, and

Mapbox Style Dynamic Expressions

The MBStyle Extension continues to be improved with this release adding support for dynamic expressions.
Expressions allow Mapbox Style to dynamically style features using attribute values ( [ "get","attribute"] ), and respond to changes of scale ( ["zoom"] ), and make use of functions (["rgb",255,0,0] ):
{ "circle-radius": [
    "interpolate", ["linear"], ["zoom"],
    0, ["get", "rating"],
    10, ["*", 4, ["get", "rating"]]
The previous, now deprecated, function stop approach remains supported:
{ "circle-color": {
    "property": "temperature",
    "stops": [[0, 'blue'],[100, 'red']]
Thanks to Jody (GeoCat) for this improvement offering greater Mapbox.GL parity. For more information see user guide on Expressions .

Updated Libraries

Each major release is an opportunity to update the libraries that GeoTools uses:
  • Bump to 1.3.10
  • Update to JSR-385 units 2.0
  • Update to Oracle JDBC driver (now available as maven dependency)
  • Upgrade FlatGeobuf library to 3.3.0
  • Upgrade from Apache Commons Collections v3 to Apache Commons Collections v4
  • Upgrade NetCDF to 4.6.15
  • Update to SQL Server 8.2.2.jre8 driver
  • Upgrade SnakeYAML to 1.26
  • Upgrade to JTS Topology Suite 1.17.1
  • Upgrade to sqlite-jdbc 3.31.1
  • Upgrade to jgridshift 1.3
  • Upgrade to commons-beanutils from 1.9.2 to 1.9.4
Please note if you have made use of the JSR-385 units library change your imports from "import*"  to "import tech.units.indriya.*". For additional information on upgrading your application see our User Manual "upgrading" page.

Improvements and Fixes

Public service announcement:
  • The imagemosaic-jdbc module (storing rasters in the database) does not have an active developer and has been downgraded to unsupported status.
  • The unmaintained ogr-bridj module has been removed.
  • GeoTools code of conduct pledge, following OSGeo policy.
From our issue tracker release-notes:
  • Ensure PostGIS DataStore respects force2D hint, applying ST_Force2D function to allow rendering of 3D Geometry
  • Address GeoPackage data store aggregates performance regression introduced when adding temporal support
  • Updates to MapBox Style Specification in GeoTools User Manual, now linked to by the GeoServer extension documentation to avoid duplication.
  • Image mosaic configuration now checks suggested image format will work, and makes a note of the format used for subsequent harvesting.
  • Preventing several failures during image mosaic harvesting encountered when working with multiple files in different coordinate reference systems.
  • Improve GeoJSONDataStore parameter checks when working with a provided URL.
  • New array function to allow literal array creation
  • Add support for restricting an attribute to a fixed set of valid values
  • Rendering speed improved with MemoryFilterOptimizer converting slow OR expressions into faster IN functions when possible.
  • Fix for SAP-HANA-datastore when working with views and no SRID found
  • PostGIS datastore option to simplify using ST_SimplifyPreserveTopology function
  • Shapefile now supports Charset coding in the DBF file header, so attribute names are no longer restricted to "iso-8859-1" names.
  • Ian Turton fixed a very frustrating Shapefile java.lang.NoSuchMethodError: java.nio.ByteBuffer.clear() error when working with Java 11
  • Change to user-agent "Geotools HTTP client" to restore programatic access OSM tiles
  • WMTS client support for longitude first coordinate reference systems
  • A fix for OracleDatastore allowing use of reserved words as column names
Many of these fixes were made after testing of our 24-RC release, we would like to thank Mark Prins and Jody Garnett for testing.

Research and Development Updates

Our "unsupported" module area is provided for the developer community to collaborate on research and development. We invite developers to contribute to the following work-in-progress:
  • A new DataStore to access ogc-api features
  • A new module supporting Esri compact cache TPK format
  • ElasticGeo continutes to improve with support for aliasing / short names,
  • For additional topics check out the "unsupported" page in our User guide.
If you are interested in contributing to these modules, or starting your own research and development activity, please see our developers guide for details.

About GeoTools 24 Series

For more information see the release notes ( 24.0 | 24-RC ).