GeoTools

OSGeo

Tuesday, October 20, 2026

GeoTools 33.7 Released

The GeoTools team is pleased to announce the release of the latest maintenance version of GeoTools 33.7:

This release is also available from the OSGeo Maven Repository and is made in conjunction with GeoServer 2.27.7 and GeoWebCache 1.27.6.

This release includes security fixes. Details will be shared once the associated advisories are published; we encourage everyone to update.

We are grateful to Peter Smythe (AfriGIS) for carrying out the release.

Release notes

See Release Notes from 33.7

Bug

GEOT-7975 Validate schema imports and includes consistently under strict parsing

Improvement

GEOT-7938 Improve redirect-following checks in PreventLocalEntityResolver

GEOT-7971 Styling: do not build a fill, stroke or graphic that the symbolizer constructor replaces

Task

GEOT-7956 SchemaCache checks and logging

GeoTools 34.6 Released

The GeoTools team is pleased to announce the release of the latest maintenance version of GeoTools 34.6:

This release is also available from the OSGeo Maven Repository and is made in conjunction with GeoServer 2.28.6 and GeoWebCache 1.28.6.

This release includes security fixes. Details will be shared once the associated advisories are published; we encourage everyone to update.

We are grateful to Peter Smythe (AfriGIS) for carrying out the release.

Release notes

See Release Notes from 34.6

Bug

GEOT-7920 JDBCDataStore visitor optimization logs a stack trace and falls back on direct record visit when the filter matches no records

GEOT-7940 DGGS feature collection may not return features when both bbox and properties selections are on the query

GEOT-7960 MySQL 8 geographic SRS geometries are read/written with swapped axis order

GEOT-7963 Measured geometry types lead to faulty GML output

GEOT-7966 ZonalStatistics return unexpected values when no pixel has been matched

GEOT-7970 CQL can throw unwrapped exceptions that can cause issues for downstream users

GEOT-7974 Vector graphic fills are not aligned across adjacent tiles

GEOT-7975 Validate schema imports and includes consistently under strict parsing

Improvement

GEOT-7938 Improve redirect-following checks in PreventLocalEntityResolver

GEOT-7969 Support GDAL 3.12+ new Raster Attribute Table data types

GEOT-7971 Styling: do not build a fill, stroke or graphic that the symbolizer constructor replaces

Task

GEOT-7919 DuckDB: Update to version 1.5.3

GEOT-7956 SchemaCache checks and logging

GEOT-7964 Bump imageio-ext

GeoTools 35.2 Released

The GeoTools team is pleased to announce the release of the latest stable version of GeoTools 35.2:

This release is also available from the OSGeo Maven Repository and is made in conjunction with GeoServer 3.0.2 and GeoWebCache 2.0.2.

This release includes security fixes. Details will be shared once the associated advisories are published; we encourage everyone to update.

We are grateful to Jody Garnett (GeoCat) for carrying out the release.

Release notes

See Release Notes from 35.2

Bug

GEOT-7920 JDBCDataStore visitor optimization logs a stack trace and falls back on direct record visit when the filter matches no records

GEOT-7924 Cascaded WMS regression on unencoded UTF-8 characters in the capabilities URLs

GEOT-7954 interoperability issue with gt-geojson-core 35.0 and Jackson module auto-discovery

GEOT-7960 MySQL 8 geographic SRS geometries are read/written with swapped axis order

GEOT-7963 Measured geometry types lead to faulty GML output

GEOT-7965 Javadoc error in gt-coverage

GEOT-7966 ZonalStatistics return unexpected values when no pixel has been matched

GEOT-7970 CQL can throw unwrapped exceptions that can cause issues for downstream users

GEOT-7974 Vector graphic fills are not aligned across adjacent tiles

GEOT-7975 Validate schema imports and includes consistently under strict parsing

Improvement

GEOT-7938 Improve redirect-following checks in PreventLocalEntityResolver

GEOT-7955 Merge adjacent/touching H3Cell ranges before spitting out BETWEEN filters

GEOT-7969 Support GDAL 3.12+ new Raster Attribute Table data types

GEOT-7971 Styling: do not build a fill, stroke or graphic that the symbolizer constructor replaces

GEOT-7976 Update to imageio-ext 2.1.4

Task

GEOT-7919 DuckDB: Update to version 1.5.3

GEOT-7951 ImageN 0.9.3 Update

GEOT-7956 SchemaCache checks and logging

GEOT-7964 Bump imageio-ext

Friday, August 14, 2026

GeoTools 35.1 Released

The GeoTools team is pleased to announce the release of the latest stable version of GeoTools 35.1:

This release is also available from the OSGeo Maven Repository and is made in conjunction with GeoServer 3.0.1 and GeoWebCache 2.0.1.

This release addresses security vulnerability CVE-2026-76904 (PostGIS SQL injection in the jsonArrayContains function); we encourage everyone to update.

We are grateful to Andrea Aime (GeoSolutions) for carrying out the release.

Release notes

See Release Notes from 35.1

Bug

GEOT-7915 Rendering can fail on ND Geometries (N>2, i.e. MultiLineStringZM) when the store is not honoring FEATURE_2D hint

GEOT-7917 PropertyCoordinateOperationFactory not properly handling the inverse case

GEOT-7921 GeoJSONDataStoreFactory uses wrong class name to determine if available

GEOT-7922 PreventLocalEntityResolver disallows entity resolution on DescribeFeatureType schema url

GEOT-7923 PolygonLabeler returns the wrong datatype and thus gives a null

GEOT-7930 PMTiles reads a zoom level too deep compared to on screen display

GEOT-7931 Geometry type mismatch in GML 3.2

GEOT-7932 Allow caching small images used by ImageMosaic in memory

GEOT-7933 Upgrading to current versions of HttpComponents 5 throws ZipException: Not in GZIP format on compressed response

GEOT-7937 DGGSFeatureCollection.accepts continues processing after delegating geometryless visitors

GEOT-7940 DGGS feature collection may not return features when both bbox and properties selections are on the query

GEOT-7942 Coordinate Frame Rotation datum shift negates the wrong parameter

GEOT-7943 PropertyCoordinateOperationFactory does not use the EPSG predefined operations

GEOT-7944 Resample2D and some vector reprojecting code paths do not use all referencing authorities

Improvement

GEOT-7918 Add GeoParquet/DuckDB S3 Endpoint and Resource Limit Configuration

GEOT-7935 GeoParquet: make primary key detection optional when no id column exists

GEOT-7945 Accurate resolution computation in raster rendering should be tolerant to projection exceptions

GEOT-7946 Reduce allocation and regex cost in geostationary valid area cache

GEOT-7947 Reduce contention over Coverage Processor

GEOT-7948 Mosaic/Crop reduction

GEOT-7950 Update ImageIO-Ext to 2.1.1

Task

GEOT-7919 DuckDB: Update to version 1.5.3

GEOT-7951 ImageN 0.9.3 Update

GEOT-7958 Increase FiltertoSqlHelper test coverage

GEOT-7959 [CVE-2026-76904] PostGIS SQL Injection int the jsonArrayContains Function

Wednesday, June 10, 2026

GeoTools 35.0 released

The GeoTools team is pleased to announce the release of the latest stable version of GeoTools 35.0 :

This release is also available from the OSGeo Maven Repository and is made in conjunction with GeoServer 3.0.0 and GeoWebCache 2.0.0.

We are grateful to Peter Smythe (AfriGIS) for carrying out the release.

Release notes

See Release Notes from 35.0

Bug

GEOT-5824 Cannot store a image mosaic index in a geopackage

GEOT-7625 SSL mode property is passed incorrectly in jdbc-postgis

GEOT-7645 Fallback method getDimensionFromFirstGeo() from PostGIS Dialect doesn't return the coordinate dimension

GEOT-7827 String literal enum value not wrapped in single quotes for SQL

GEOT-7835 Cannot read a GeoPackage with incomplete transaction from a readonly filesystem

GEOT-7840 ImageWorker addBands is not including the original source image

GEOT-7843 String literal enum values not wrapped in single quotes for filter chains

GEOT-7853 DateTimeParser uses 'mm' to select Month precison in long list of 'else if'

GEOT-7854 Support feature types without a CRS in the geometry column

GEOT-7863 MBStyle line-dasharray with zoom-interpolated line-width causes Java2D crash

GEOT-7874 ImageWorker is clipping nodata on rescale operation

GEOT-7876 CircularArc.linearize(...) can emit Infinity/NaN for collinear and near-collinear arcs

GEOT-7877 Fix json nested property access

GEOT-7891 Close the opened HTTP connection if the initialization of the WFSFeatureReader fails

GEOT-7894 NPE on GeoJSonDataStore#getFeatureSource() when schema is set, but typeName is null

GEOT-7899 Allow SimpleFeaturePropertyAccessorFactory to access any attribute in a simple feature

GEOT-7908 GeoTIFFWriter should provide a reference image when building the image output stream

GEOT-7912 Overview decimation bug in heterogeneous CRS mosaic with direct reproject path

Improvement

GEOT-7810 Migrate to ImageN

GEOT-7829 Using external datastore with app-schema

GEOT-7830 Support optional fixed "resolution" in DGGS datastores

GEOT-7849 Make WKTP optional for CSV encoding with WKTStrategy

GEOT-7850 Support common parameters in VectorMosaic for DGGS datastore wrapping delegate params

GEOT-7851 Support BLOB columns in GeoPackages

GEOT-7852 Refactor long list of 'if/else if' construct in GeoPkgDialect

GEOT-7855 Mosaic cleanup should remove wrapper config files and geopackage indexes

GEOT-7856 Errors from the chart plugin disappear.

GEOT-7857 Supporting Numeric zone identifier in DGGS.

GEOT-7858 Speed up GeoPackage setup and tests

GEOT-7859 Migrating to Jackson 3 for serializing geometric objects

GEOT-7865 ImageMosaic Supporting PamDataset stored in TIFFMetadata

GEOT-7871 GeoParquet: Rely on Covering bbox metadata for bbox filtering.

GEOT-7875 Support abs, ceil, floor, round Mapbox math expressions in mbstyle module

GEOT-7887 Register ImageN registry classes via RegistryAllowListProvider SPI for allowlist-based startup

GEOT-7895 Avoid not needed casts for JSON in jdbc-postgis plugin

GEOT-7897 Reduce thread contention while laying out labels

GEOT-7904 Clean up gt-arcgisrest dependencies

GEOT-7909 Improve PAM dataset merge handling for partial or inconsistent PAM inputs

New Feature

GEOT-7834 Update GeoPackage reader to support curved geometry types

GEOT-7847 Add AWS credential chain authentication support for GeoParquet S3 access

GEOT-7881 App-Schema: Add inter-schema support for JDBC joinning feature chaining and nested filtering

GEOT-7883 DefaultEntityResolver

Task

GEOT-6101 Upgrade SOLR dependency to latest stable (10.0.0)

GEOT-7825 Update MSSQL driver from 9.4.0.jre8 to 13.2.1.jre11

GEOT-7826 Update MySQL driver from 9.1.0 to 9.4.0

GEOT-7828 Migrate GeoTools to Jakarta EE 10

GEOT-7832 Migrate to ImageN 0.9.1 including renaming registryFile.jai to registryFile.imagen

GEOT-7833 Parse null valued GeoJSON properties to null instead of some default primitive values

GEOT-7836 Update PostgreSQL JDBC Driver from 42.7.7 to 42.7.8

GEOT-7838 Use SPDX license identifier in pom file

GEOT-7848 Move image mosaic over to GeoPackage

GEOT-7860 Update 'com.google.code.gson' dependency version

GEOT-7861 Update 'commons-jxpath' dependency version

GEOT-7868 Update ElasticSearch client to 9.3.0

GEOT-7878 Update PostgreSQL JDBC version to 42.7.10

GEOT-7879 Update Oracle JDBC driver to 23.26.1.0.0

GEOT-7880 Update MySQL JDBC driver to 9.6.0

GEOT-7886 Remove H2/DB based index and binary index from CoverageMultidim/NetCDF stores.

GEOT-7889 Remove gt-jdbc-h2

GEOT-7890 Upgrade to ImageIO-Ext 2.1.0 and ImageN 0.9.2

GEOT-7896 Update Jackson to 2.21.0

GEOT-7898 QA: Library wide use of GeoTools.getEntityResolver(hints)

GEOT-7901 NetCDF indexer handling of temporary direcrtory

GEOT-7911 Update sqlite-jdbc from 3.51.1.0 to 3.53.1.0

Monday, May 25, 2026

GeoTools 34.4 released

The GeoTools team is pleased to announce the release of the latest stable version of GeoTools 34.4 :

This release is also available from the OSGeo Maven Repository and is made in conjunction with GeoServer 2.28.4 and GeoWebCache 1.28.4.

Please note that while this .4 was initially scheduled to be a maintenance version, it is still a stable version, pending the slightly delayed release of 35.x (for GeoServer 3.0.x)

We are grateful to Peter Smythe (AfriGIS) for carrying out the release.

Release notes

See Release Notes from 34.4

Bug

GEOT-7891 Close the opened HTTP connection if the initialization of the WFSFeatureReader fails

GEOT-7894 NPE on GeoJSonDataStore#getFeatureSource() when schema is set, but typeName is null

Improvement

GEOT-7895 Avoid not needed casts for JSON in jdbc-postgis plugin

New Feature

GEOT-7883 DefaultEntityResolver

Task

GEOT-7901 NetCDF indexer handling of temporary direcrtory

Friday, March 20, 2026

 

GeoTools 34.3 released

The GeoTools team is pleased to announce the release of the latest stable version of GeoTools 34.3:

This release is also available from the OSGeo Maven Repository and is made in conjunction with GeoServer 2.28.3 and GeoWebCache 1.28.3.

We are grateful to Andrea Aime (GeoSolutions) for carrying out the release.

Release notes

See Release Notes from 34.3

Bug

  • GEOT-7864 PropertyCoordinateOperationFactory returns the inverse transformation with the wrong source/target CRSs
  • GEOT-7869 Improve accuracy of GeoStationary Satellite around projection limits
  • GEOT-7874 ImageWorker is clipping nodata on rescale operation
  • GEOT-7876 CircularArc.linearize(...) can emit Infinity/NaN for collinear and near-collinear arcs

Improvement

  • GEOT-7865 ImageMosaic Supporting PamDataset stored in TIFFMetadata
  • GEOT-7871 GeoParquet: Rely on Covering bbox metadata for bbox filtering.
  • GEOT-7875 Support abs, ceil, floor, round Mapbox math expressions in mbstyle module

Task

  • GEOT-7878 Update PostgreSQL JDBC version to 42.7.10
  • GEOT-7879 Update Oracle JDBC driver to 23.26.1.0.0
  • GEOT-7880 Update MySQL JDBC driver to 9.6.0