GeoTools

OSGeo

Wednesday, December 22, 2021

GeoTools 25.4 released

The GeoTools team is pleased to announce the release GeoTools 25:

GeoTools 25.4 is published to repo.osgeo.org for direct build integration. This release is made in conjunction with GeoServer 2.19.4. The GeoTools team is grateful to GeoSolutions for allowing Andrea Aime the time to prepare this release.

Bug Fixes

This is a maintenance release and includes the following improvements:
  • GEOT-7020 Add ProjectionHandler for orthographic
  • GEOT-7007 Shapefile set files search may take very long on big shapefile directories
And the following bug fixes and tasks:
  • GEOT-7040 Don't linearize warp transformations while oversampling
  • GEOT-7022 Concurrent CRS Factories access can result in deadlock
  • GEOT-7038 Update log4j to a version that does not support RCE
It's worth noting that GeoTools does not directly use Log4J, but adopts the Java Logging Framework. However, it has a plugin allowing to redirect all the logging calls to Log4J, for which we have made a fix in GEOT-7038. Please read more about the vulnerability assessment of Log4J 1.2.17 vulnerabilities in this GeoServer blog post.

About GeoTools 25 Series 

For more information see the release notes (25.425.3 | 25.2 | 25.1 | 25.0 | 25-RC ).
  • Repackaged downloads with html readme and license files and ready-to-use bin download
  • New gt-http module, allowing gt-wms and gt-wps-client to use your choice of http library
  • Massive code-cleanup with PMD integrated into our build chain
  • Quality of life improvements with increased use of variable arguments, abd revised Map<String?> datastore connection parameters.

Wednesday, November 17, 2021

GeoTools 26.1 Released

The GeoTools team is pleased to share the availability GeoTools 26.1 

This release is also available from the OSGeo Maven Repository and is made in conjunction with GeoServer 2.21

About GeoTools 26 Series

For more information see the release notes (26.1 | 26-RC).
  • main is now the default branch
  • GML support improved with support for surface, multi curves, curved polygons and arcs with more than three control points
  • Krovak North Orientated, used for EPSG:5514

Friday, October 22, 2021

GeoTools 25.3 Released

The GeoTools team is pleased to announce the release GeoTools 25.3:

GeoTools 25.3 is published to repo.osgeo.org for direct build integration. This release is made in conjunction with GeoServer 2.19.3. The GeoTools team is grateful to Astun Technology for allowing Ian Turton the time to prepare this release.

Bug Fixes

This is a maintenance release and includes the following bug fixes:
  • GEOT-6982 Update Mongo DB driver to 4.0.6 to mitigate CVE-2021-20328
  • GEOT-6959 SimpleHttpClient does support proxy
  • GEOT-6958 ImageMosaic stores made of multiple coverages (homogeneous + heterogeneous) may fail on heterogeneous read
  • GEOT-6944 Deadlock at org.geotools.xsd.XSD.getSchema
  • GEOT-6937 AppSchema JdbcMultipleValue will fill wrong values if targetColumn is a PK
  • GEOT-6881 GreaterThanEqualTo and LessThanEqualTo incorrectly marked as unsupported in WFS query
  • GEOT-6410 Conversion from boolean true/false in geoserver to SQL Server bit 0/1, is broken

About GeoTools 25 Series 

For more information see the release notes (25.325.2 | 25.1 | 25.0 | 25-RC ).
  • Repackaged downloads with html readme and license files and ready-to-use bin download
  • New gt-http module, allowing gt-wms and gt-wps-client to use your choice of http library
  • Massive code-cleanup with PMD integrated into our build chain
  • Quality of life improvements with increased use of variable arguments, abd revised Map<String?> datastore connection parameters.

Monday, October 18, 2021

GeoTools 26.0 released

The GeoTools team is pleased to share the availability GeoTools 26.0 

This release candidate is also available from the OSGeo Maven Repository and is made in conjunction with GeoServer 2.20 and JTS 1.18.2.

Upgrade

There is no specific incompatibilities noted for this release (see User Manual "upgrading" page):
  • Deprecated HTTPClient interfaces are now removed (previously these were deprecated after being relocated to a new package in the 25.x series)
  • Changes occurred in some internal handling of units of measure, as a result of units library upgrade. Should not be of concern for most users.

Updated Libraries

Each major release is an opportunity to update the libraries that GeoTools uses: 
  • JTS 1.18.2
  • commons-io 2.10.0
  • Upgraded JDBC drivers
    • oracle ojdbc9 19.12.0.0
    • mysql-connector-java 8.0.26
    • postgresql 42.2.23
    • mysql-jdbc 9.4.0.jre8
    • db2 bcc 11.5.6.0
  • solr 8.9.0
  • httpclient 4.5.13
  • batik 1.14

Improvements and Fixes 

Public service announcement:
  • Removed unsupported epsg-oracle, georest, imagemosiac-jdbc, jdbc-ingres, gtopo30 modules.
  • Removed dependency on xpp3 (now use standard StAX API).
  • main is now the default branch.
  • Ongoing quality assurance improvements covering topics from refactoring complicated methods to catching accidentally committed System.out.println statements
From our issue tracker release notes: 
  • Introduce vendor options for rules
  • A new vendor option used to mark individual rules, symbolizers, or feature type style elements to be ignored (when rendering Maps or Legends).
  • WPS 2.0 EMF model and xml binding configuration
  • GML support has improved for unsupported wfs-ng module, with a separate gt-gml module created for improvements including surface, multi curves, curved polygons and arcs with more than three control points
  • Krovak North Orientated, used for EPSG:5514
  • Improve shapefile quadtree build performance
  • MultithreadedHTTPClient now sets the user agent to "GeoTools".

About GeoTools 26 Series

For more information see the release notes (26.0 | 26-RC).
  • main is now the default branch
  • GML support improved with support for surface, multi curves, curved polygons and arcs with more than three control points
  • Krovak North Orientated, used for EPSG:5514

Tuesday, September 14, 2021

GeoTools 26-RC Release Candidate

  The GeoTools team is pleased to share the availability GeoTools 26-RC 

This release candidate is also available from the OSGeo Maven Repository and is made in conjunction with GeoServer 2.20-RC and JTS 1.18.2.

Please Test this Release Candidate 

A release candidate is your chance to both try out new features and contribute to the project with valuable feedback right when we need it most. 

Please test this release with your project and let us know of any regression before we release GeoTools 26 later this month.  

Upgrade

There is no specific incompatibilities noted for this release (see User Manual "upgrading" page):
  • Deprecated HTTPClient interfaces are now removed (previously these were deprecated after being relocated to a new package in the 25.x series)

Updated Libraries

Each major release is an opportunity to update the libraries that GeoTools uses: 
  • JTS 1.18.2
  • commons-io 2.10.0
  • Upgraded JDBC drivers
    • oracle ojdbc9 19.12.0.0
    • mysql-connector-java 8.0.26
    • postgresql 42.2.23
    • mysql-jdbc 9.4.0.jre8
    • db2 bcc 11.5.6.0
  • solr 8.9.0
  • httpclient 4.5.13
  • batik 1.14

Improvements and Fixes 

Public service announcement: 
  • remove unsupported epsg-oracle, georest, imagemosiac-jdbc, jdbc-ingres, gtopo30 modules
  • removed dependency on xpp3 (now use standard StAX API)
  • main is now the default branch
  • ongoing quality assurance improvements covering topics from refactoring complicated methods to catching accidentally committed System.out.println statements
From our issue tracker release-notes
  • Introduce vendor options for rules
  • A new vendor option used to mark individual rules, symbolizers, or feature type style elements to be ignored (when rendering Maps or Legends).
  • WPS 2.0 EMF model and xml binding configuration
  • GML support has improved for unsupported wfs-ng module, with a separate gt-gml module created for improvements including surface, multi curves, curved polygons and arcs with more than three control points
  • Krovak North Orientated, used for EPSG:5514
  • Improve shapefile quadtree build performance

About GeoTools 26 Series 

For more information see the release notes ( 26-RC ).
  • In addition to release notes above, see query for a summary of fixes unique to release-candidate

Friday, August 20, 2021

GeoTools 24.5 released

   The GeoTools team is pleased to share the availability of GeoTools 24.5 :


This release is published to the OSGeo maven repository, and is made in conjunction with  GeoServer 2.18.4. This is a maintenance release and is a recommended upgrade for all users of the GeoTools library.

This is the last release of the 24.x series, users are encouraged to upgrade to 25.x now, or wait for 26.0 to be released in September 2021.

We would like to thank everyone who contributed to this release.
 

Highlights from our issue tracker release-notes:

Bug fixes

  • GEOT-6958: ImageMosaic stores made of multiple coverages (homogeneous + heterogeneous) may fail on heterogeneous read
  • GEOT-6881: ImageMosaic stores made of multiple coverages (homogeneous + heterogeneous) may fail on heterogeneous read

About GeoTools 24 Series

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

Sunday, July 18, 2021

GeoTools 25.2 Released

  The GeoTools team is pleased to announce the release GeoTools 25.2

GeoTools 25.2 is published to repo.osgeo.org for direct build integration. This release is made in conjunction with GeoServer 2.19.2.

Repackaged Downloads

The above GeoTools downloads have been repackaged to include html readme and license files, as part of this update some license files have been updated to reflect components used by the GeoTools library.

In addition the geotools-25.2-bin.zip release above has been repackaged with the following folder structure:
  • lib - geotools library, extensions and plugins
  • optional - plugins requiring additional configuration such as gt-epsg-postgresql and gt-epsg-wkt
  • licenses
  • src - tutorial Quickstart sample code
Using this setup geotools is now ready to try out of the box:

java -cp "lib/*" org.geotools.util.factory.GeoTools

And the Quickstart tutorial can be tried in a few lines of code:

mkdir bin
javac -cp "lib/*" -d bin src/org/geotools/tutorial/quickstart/Quickstart.java 
java -cp "lib/*:bin" org.geotools.tutorial.quickstart.Quickstart

These changes are intended to make it easier to try out GeoTools.

Release notes

From our issue tracker release notes:

Bug

GEOT-6921 GeoTools primary key finder always query the table gt_pk_metadata even if it doesn't exists

GEOT-6916 "WGS 84 / UPS South (N,E)" is rendered with flipped axis

GEOT-6912 Special characters in shp file name are not correctly encoded

GEOT-6899 Resource (CPU/Heap) starvation building shapefile spatial index

GEOT-6898 Read only GeoPackages fail when using the new GPKG application id

GEOT-6894 WMTS fails when initial url contains query parameters

GEOT-6172 Missing jars (units etc.) in geotools-20.0-bin.zip

GEOT-2972 Character set from CPG files

Improvement

GEOT-6938 Image mosaic: avoid sorting on CRS when doing a "dry run" check after finding no granules in the target area

GEOT-6918 Implement NowFunction

GEOT-6917 Add support for timeUnit on dateDifference function

GEOT-6902 Improve NetCDF datasets access performances with caching

GEOT-6900 Shapefile quadtree build performance

GEOT-6891 GeoTIFF Writer should unwrap an outputStreamAdapter to get the underlying ImageOutputStream

GEOT-6877 Upgrade to imageio-ext 1.3.6 (tiff 32 bit with deflate/lzw support)

About GeoTools 25 Series 

For more information see the release notes ( 25.225.125.025-RC ).
  • Repackaged downloads with html readme and license files and ready-to-use bin download
  • New gt-http module, allowing gt-wms and gt-wps-client to use your choice of http library
  • Massive code-cleanup with PMD integrated into our build chain
  • Quality of life improvements with increased use of variable arguments, abd revised Map<String?> datastore connection parameters.

Wednesday, June 23, 2021

GeoTools 24.4 released

  The GeoTools team is pleased to share the availability of GeoTools 24.4 :


This release is published to the osgeo maven repository, and is made in conjunction with  GeoServer 2.18.4. This is a maintenance release and is a recommended upgrade for all users of the GeoTools library.

We would like to thank everyone who contributed to this release.
 

Highlights from our issue tracker release-notes:

Bug fixes

  • GEOT-6916 "WGS 84 / UPS South (N,E)" is rendered with flipped axis
  • GEOT-6912 Special characters in shp file name are not correctly encoded
  • GEOT-6899 Resource (CPU/Heap) starvation building shapefile spatial index
  • GEOT-6898 Read only GeoPackages fail when using the new GPKG application id
  • GEOT-6886 Raster to Vector rendering transformations with reprojection can generate incorrect images
  • GEOT-6885 RasterAsPointCollectionProcess hemisphere error with some projections
  • GEOT-6883 Fix edge cases in the date time parser
  • GEOT-6880 Rendering process fails if vendor option sortByGroup is used
  • GEOT-6860 SchemaCache doesn't follow redirect when downloading from HttpConnection
  • GEOT-6856 Replace new Collection method invocation via reflection with new ArrayList in ComplexAttributeImpl class

Improvements

  • GEOT-6900 Shapefile quadtree build performance
  • GEOT-6877 Upgrade to imageio-ext 1.3.6 (tiff 32 bit with deflate/lzw support)
  • GEOT-6874 Add support for count distinct aggregations in gt-jdbc

New Feature

  • GEOT-6867 Add the possibility to prune Rule, Symbolizer, FeatureTypeStyle elements when rendering Maps or Legends


About GeoTools 24 Series

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

Monday, May 24, 2021

GeoTools 25.1 Released

  The GeoTools team is pleased to announce the release GeoTools 25.1

GeoTools 25.1 is published to repo.osgeo.org for direct build integration. This release is made in conjunction with GeoServer 2.19.1 and GeoWebCache 1.19.1.

DuplicatingStyleVisitor vendor options

The SLD vendor options renderingLegend and renderingMap can be used to filter style content when copying. These vendor options can be used to control which FeatureTypeStyle, Rule and Symbolizer elements are used for rendering.

Release notes

From our issue tracker release notes:

Bug

GEOT-6871 AppSchema, defining nested attribute with root attribute filter might return 0 on count

GEOT-6865 PostGIS: SQL translation of DateDifference function fails against DATE columns

GEOT-6863 Datastores with Character parameters can't be reopened

GEOT-6855 AppSchema JDBCMultipleValue might generate ambiguous query when ClientProperty is defined

GEOT-6854 AppSchema JDBCMultipleValue directive fails to encode ClientProperties if targetValue is not specified

GEOT-6849 NetCDF read sometime fails on corner cases grid Geometries involving 1 pixel read

GEOT-6848 Vendor options in RasterSymbolizer are not parsed

GEOT-6832 WFS-NG doesn't apply acrgis strategy for versions that are not 2.0.0

GEOT-6820 WMTS REST regression for getCapabilities not having templates for image/png outputformat

GEOT-6807 Enabling densification on reprojection can cause OOMs with large/complex geometries, and requests hitting small areas

GEOT-6806 Add identifier to DefaultGeographicCRS.WGS84

GEOT-6804 AppSchema fails when pagination occurs and mappings doesn't have IdExpression

GEOT-6803 AppSchema queries fails when mappings have no IdExpression

GEOT-6796 Concurrent usage of image mosaic with heterogeneous CRS, against a database index, can cause deadlock

GEOT-6794 AppSchema count works for filter with root attribute only

GEOT-6757 Tile client throwing exception while downloading

GEOT-6703 Dwithin old syntax no longer supported

Improvement

GEOT-6861 Add support for Krovak North Orientated

GEOT-6853 ImageMosaic performs full scan aggregation on heterogenous mosaics

GEOT-6846 MongoDB plugin refact FilterToMongo and FilterSplitter

GEOT-6839 Update Batik from 1.13 to 1.14

About GeoTools 25 Series 

For more information see the release notes ( 25.125.025-RC ).
  • New gt-http module, allowing gt-wms and gt-wps-client to use your choice of http library
  • Massive code-cleanup with PMD integrated into our build chain
  • Quality of life improvements with increased use of variable arguments, abd revised Map<String?> datastore connection parameters.

Friday, April 23, 2021

GeoTools 24.3 released

 The GeoTools team is pleased to share the availability of GeoTools 24.3 :


This release is published to the osgeo maven repository, and is made in conjunction with  GeoServer 2.18.3. This is a maintenance release and is a recommended upgrade for all users of the GeoTools library.

We would like to thank everyone who contributed to this release.
 

From our issue tracker release-notes :

Improvement

GEOT-6861 Add support for Krovak North Orientated

GEOT-6853 ImageMosaic performs full scan aggregation on heterogenous mosaics

GEOT-6846 MongoDB plugin refact FilterToMongo and FilterSplitter

GEOT-6839 Update Batik from 1.13 to 1.14

New Feature

GEOT-6769 Refactor ClippingFeatureCollection

Bug

GEOT-6871 AppSchema, defining nested attribute with root attribute filter might return 0 on count

GEOT-6865 PostGIS: SQL translation of DateDifference function fails against DATE columns

GEOT-6863 Datastores with Character parameters can't be reopened

GEOT-6855 AppSchema JDBCMultipleValue might generate ambiguous query when ClientProperty is defined

GEOT-6854 AppSchema JDBCMultipleValue directive fails to encode ClientProperties if targetValue is not specified

GEOT-6849 NetCDF read sometime fails on corner cases grid Geometries involving 1 pixel read

GEOT-6848 Vendor options in RasterSymbolizer are not parsed

GEOT-6832 WFS-NG doesn't apply acrgis strategy for versions that are not 2.0.0

GEOT-6820 WMTS REST regression for getCapabilities not having templates for image/png outputformat

GEOT-6807 Enabling densification on reprojection can cause OOMs with large/complex geometries, and requests hitting small areas

GEOT-6806 Add identifier to DefaultGeographicCRS.WGS84

GEOT-6804 AppSchema fails when pagination occurs and mappings doesn't have IdExpression

GEOT-6803 AppSchema queries fails when mappings have no IdExpression

GEOT-6796 Concurrent usage of image mosaic with heterogeneous CRS, against a database index, can cause deadlock

GEOT-6794 AppSchema count works for filter with root attribute only

GEOT-6757 Tile client throwing exception while downloading

GEOT-6703 Dwithin old syntax no longer supported

Task

GEOT-6824 Update JDBC drivers: Oracle (to 19.10.0.0)

GEOT-6823 Update JDBC drivers: PostgreSQL (to 42.2.19)

GEOT-6822 Update JDBC drivers: MS SQL Server (to 9.2.0.jre8) 

GEOT-6816 include Db2 JDBC driver 11.5.5.0



About GeoTools 24 Series

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

Monday, March 22, 2021

GeoTools 25.0 released

  The GeoTools team is pleased to share the availability GeoTools 25.0 

This release is also available from the OSGeo Maven Repository and is made in conjunction with GeoServer 2.19.0 and JTS 1.18.1.

Change DataStore Parameters Map<String,Serilizable> to Map<String,?>

This API change makes it easier to configure DataStore's with full objects (which may or may not be serializable):

Map<String, Object> connectionDetails = new HashMap<>();
connectionDetails.put("url", url );
DataStore dataStore = DataStoreFinder.getDataStore(map);

As shown above this change does not effect existing client code. If you implement your own DataStore please check out update instructions.

New gt-http library and HTTPClientFinder

We noticed that the various web clients (gt-wfs, gt-wms, gt-tile) all had different ways to change between the use of built-in Java URL or an alternative such as Apache HTTP Components implementation.
 
Hints hints = new Hints(Hints.HTTP_LOGGING, "True")
HTTPClient http = HTTPClientFinder.createClient(hints); 
HTTPResponse response = http.get( new URL("https://geotools.org") );

The new gt-http library module is available to integrators providing a single location to configure how the library interacts with web resources. The update instructions provide a table to guide migrating from deprecated implementations to the shared gt-http classes.

Extending use of Variable Arguments making the api easier to use 

An interesting update that simplifies the use of GeoTools, methods that previously worked with array can now be used more easily.

As an example Query.setPropertyNames( String ... propNames ) allows for:

Query q = new Query(tname("ft1"));
q.setPropertyNames("geom", "name");

Existing code that use a String[] array will continue to work just fine, see update instructions for more examples.

GeoPackage Improvements

Several geopackage improvements for this release:
  • Add support for GeoPackage sorting in GeoPackageProcessRequest
  • GeoPackage store fails to register two same named columns, in different tables, both using the schema extension
  • Improve GeoPackage array storage (as JSON structures)

JDBCDataStore Updates

One performance improvement for database use:
  • Native support for average and stddev aggregate functions in jdbc data stores
Updated jdbc drivers:
  • Oracle 19.10.0.0
  • PostgreSQL 42.2.19
  • sqlite-jdbc 3.34.0
  • SQL Server 8.4.1.jre8

Massive Code Cleanup

The GeoTools codebase is easier to work with due to ongoing quality assurance activities, code cleanup and additional "pmd" checks added to our build chain.

The PMD static code analyzer has a motto of "Don't shoot the messenger", what they did not warn us about is that PMD shoots first and shoots often:
  • Remove un-necessary casts from code
  • Remove explicit type when diamond operator can be used
  • Unchecked warnings cleanup, addressing all compiler warnings
  • Replace iterator loops with enhanced for loops
  • Avoid assertTrue for tests that can be expressed with dedicated assertions
  • Collapse catch statements with the same body in a multi-catch
  • Replace try/finally with try-with-resources
  • Remove usage of Vector/Hashtable, replace with ArrayList and HashMap
In each case the entire codebase has been cleaned up to address the concern raised, and then the rule added to our build chain so any future work is called out on poor behaviour. In many cases these checks help catch common errors improving library stability and the confidence of the development team.

All of the above checks are running in continous integration, but more importantly, in the QA build check running on each PR, keeping the code from regressions.

Thanks to Andrea, Ian and everyone involved for making the GeoTools library better.

Updated Libraries

Each major release is an opportunity to update the libraries that GeoTools uses: 
  • JTS 1.18.1
  • jai-ext to 1.1.19
  • commons-beanutils 1.9.4
  • Batik 1.13
  • Jackson 2 libraries 2.10.5 and 2.10.5.1
  • Apache HTTP components to 4.5.13
  • Guava to 30.1-jre
For additional information on upgrading your application see our User Manual "upgrading" page. 

Public service announcement

  • ArcSDE DataStore has been retired due to lack of feedback and active maintainer
  • Validation extension has been retired as it has been unused for some time

About GeoTools 25 Series 

For more information see the release notes ( 25.025-RC ).

Thursday, March 4, 2021

GeoTools 25-RC Release Candidate

 The GeoTools team is pleased to share the availability GeoTools 25-RC 

This release candidate is also available from the OSGeo Maven Repository and is made in conjunction with GeoServer 2.19-RC and JTS 1.18.1.

Please Test this Release Candidate 

A release candidate is your chance to both try out new features and contribute to the project with valuable feedback right when we need it most. 

Please test this release with your project and let us know of any regression before we release GeoTools 25 later this month.  

Change DataStore Parameters Map<String,Serilizable> to Map<String,?>

This API change makes it easier to configure DataStore's with full objects (which may or may not be serializable):

Map<String, Object> connectionDetails = new HashMap<>();
connectionDetails.put("url", url );
DataStore dataStore = DataStoreFinder.getDataStore(map);

As shown above this change does not effect existing client code. If you implement your own DataStore please check out update instructions.

New gt-http library and HTTPClientFinder

We noticed that the various web clients (gt-wfs, gt-wms, gt-tile) all had different ways to change between the use of built-in Java URL or an alternative such as Apache HTTP Components implementation.
 
Hints hints = new Hints(Hints.HTTP_LOGGING, "True")
HTTPClient http = HTTPClientFinder.createClient(hints); 
HTTPResponse response = http.get( new URL("https://geotools.org") );

The new gt-http library module is available to integrators providing a single location to configure how the library interacts with web resources. The update instructions provide a table to guide migrating from deprecated implementations to the shared gt-http classes.

Extending use of Variable Arguments making the api easier to use 

An interesting update that simplifies the use of GeoTools, methods that previously worked with array can now be used more easily.

As an example Query.setPropertyNames( String ... propNames ) allows for:

Query q = new Query(tname("ft1"));
q.setPropertyNames("geom", "name");

Existing code that use a String[] array will continue to work just fine, see update instructions for more examples.

GeoPackage Improvements

Several geopackage improvements for this release:
  • Add support for GeoPackage sorting in GeoPackageProcessRequest
  • GeoPackage store fails to register two same named columns, in different tables, both using the schema extension
  • Improve GeoPackage array storage (as JSON structures)

JDBCDataStore Updates

One performance improvement for database use:
  • Native support for average and stddev aggregate functions in jdbc data stores
Updated jdbc drivers:
  • Oracle 19.10.0.0
  • PostgreSQL 42.2.19
  • sqlite-jdbc 3.34.0
  • SQL Server 8.4.1.jre8

Massive Code Cleanup

The GeoTools codebase is easier to work with due to ongoing quality assurance activities, code cleanup and additional "pmd" checks added to our build chain.

The PMD static code analyzer has a motto of "Don't shoot the messenger", what they did not warn us about is that PMD shoots first and shoots often:
  • Remove un-necessary casts from code
  • Remove explicit type when diamond operator can be used
  • Unchecked warnings cleanup, addressing all compiler warnings
  • Replace iterator loops with enhanced for loops
  • Avoid assertTrue for tests that can be expressed with dedicated assertions
  • Collapse catch statements with the same body in a multi-catch
  • Replace try/finally with try-with-resources
  • Remove usage of Vector/Hashtable, replace with ArrayList and HashMap
In each case the entire codebase has been cleaned up to address the concern raised, and then the rule added to our build chain so any future work is called out on poor behaviour. In many cases these checks help catch common errors improving library stability and the confidence of the development team.

All of the above checks are running in continous integration, but more importantly, in the QA build check running on each PR, keeping the code from regressions.

Thanks to Andrea, Ian and everyone involved for making the GeoTools library better.

Updated Libraries

Each major release is an opportunity to update the libraries that GeoTools uses: 
  • JTS 1.18.1
  • jai-ext to 1.1.19
  • commons-beanutils 1.9.4
  • Batik 1.13
  • Jackson 2 libraries 2.10.5 and 2.10.5.1
  • Apache HTTP components to 4.5.13
  • Guava to 30.1-jre
For additional information on upgrading your application see our User Manual "upgrading" page. 

Improvements and Fixes 

Public service announcement: 
  • ArcSDE DataStore has been retired due to lack of feedback and active maintainer
  • Validation extension has been retired as it has been unused for some time
From our issue tracker release-notes
  • Add new expression functions to support AND, &&, OR operators
  • Use faster JTS function for pole of inaccessibility
  • SimplifyingFilterVisitor does not account for null values when simplifying negations
  • Speed improvement relaxing FactoryRegistery synchronization
  • gt-renderer: Map rendering of numbers using scientific notation
  • gt-css: Styles don't change the size of a label unless `font-style` is set
  • gt-wfs-ng: WFS 2.0 GetFeature reponse parsing fails on "boundedBy"
  • gt-wmts: HTTP headers set for WMTS isn't used for GetCapabilities calls
  • gt-wmts: WMTSCoverageReader#getMap() in some cases throws IllegalArgumentException
  • gt-wmts: WMTS client code automatically uppercases key names in KVP requests which breaks non standard servers
  • gt-process: Add ability to produce contours from an irregular grid of points.

About GeoTools 25 Series 

For more information see the release notes ( 25-RC ).

Wednesday, March 3, 2021

GeoTools default branch changed to main

A quick public service announcement, the GeoTools default branch has changed to main.

To update your local repository:
git branch -m master main
git fetch upstream
git branch -u upstream/main main

GeoTools is following the development ecosystem (git, gitlab, github, bitbucket) and information technology industry effort to replace the use of word " master " in a professional context.

GeoTools default main branch
GeoTools default main branch

Monday, February 22, 2021

GeoTools 23.5 released

  The GeoTools team is pleased to share the availability of   GeoTools 23.4 :

This release is published to the osgeo maven repository, and is made in conjunction with  GeoServer 2.17.5. This is a maintenance release and is a recommended upgrade for all users of the GeoTools library. 

This is the final scheduled release for the 23.x branch and we advise everyone to upgrade to 24.x at this time.

We would like to thank everyone who contributed to this release, including Gabriel Roldan and Jody Garnett for making the release.

Fixes

From our issue tracker release notes:
  • rendering fix avoiding out of memory issue using densification on reprojection drawing a small part of a large/complex geometry
  • DefaultGeographicCRS.WGS84 and DefaultGeographicCRS.WGS84_3D now include EPSG identifier information and domain of validity.
  • app-schema fix handling of mappings that did not include an Id expression
  • app-schema fix for count, previously only worked for queries that did not use nested properties
  • image-mosaic address deadlock in handling heterogeneous crs
  • shapefile fix out of bounds exception encoding UTF-8 strings
  • Addressed regression in raster to vector process which artifacts such as diagonal lines
  • Tile extension now uses http-client to double check input stream points to an image
  • PostGIS data store now recognizes PARTITIONED TABLE (a parent table made up a number of child tables)

Improvements

A number of dependencies have been updated:
  • Batik svg libraries 1.13
  • sqlite-jdbc 3.34.0
  • Jackson JSON libraries 2.10.5
  • Apache HTTP components 4.5.13
  • Guava 30.1

About GeoTools 23 Series

GeoTools 23:For more information see the release notes ( 23.5 | 23.423.3 | 23.2 | 23.1 | 23.0 |  23-RC )

Wednesday, January 20, 2021

GeoTools 24.2 released

   The GeoTools team is pleased to share the availability of GeoTools 24.2 :

This release is published to the osgeo maven repository, and is made in conjunction with  GeoServer 2.18.2. This is a stable release and is a recommended upgrade for all users of the GeoTools library.

We would like to thank everyone who contributed to this release. The large number of fixes this release are in part to participation in a bug fix sprint organized by GeoSolutions.

Improvements and Fixes

From our issue tracker release-notes :
  • Support for ImageIO-ext based COG readers landed in this release, both for stand-alone GeoTiff and image mosaics (make sure to have the necessary dependencies in the classpath)
  • Ability to limit oversampling while reprojecting rasters, when accurate resolution computation is enabled (on by default)
  • MySQL 8 spatial functions are now supported
  • A bunch of dependencies have been upgraded, including the MySQL JDBC driver, sqlite JDBC (used by GeoPackage), Batik, Apache HTTP components, Guava
  • Other assorted but fixes to shapefile readers, PostGIS datastore, WMTS cascading, the CSS module, and more, check the release-notes for full details.

About GeoTools 24 Series

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