GeoTools

OSGeo

Monday, August 1, 2022

GeoTools 27.1 Released

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

Improvements and fixes in this release

Bug:

  • GEOT-7182 TransformFeatureSource can lose paging information while transforming query
  • GEOT-7170 StreamingRenderer might throw NPE with complex features when no default Geometry attribute is set
  • GEOT-7162 Postgis Partition tests fail on postgres versions below 11
  • GEOT-7161 Aggregate queries with non-database supported queries fail
  • GEOT-7153 Removing NetCDF granules from a mosaic can cause spurious netcdf index re-inits
  • GEOT-7147 Add support for missing CSS label vendor options

Improvement:

  • GEOT-7179 Upgrade app-schema Jetty test dependency to 9.4.48.v20220622
  • GEOT-7166 Fix jdbc-informix plugin failed test
  • GEOT-7164 Make it easier to move mosaics of NetCDF around

Task:

  • GEOT-7171 Cleanup the RenderedSampleDimension.create static method
  • GEOT-7109 gt-swt module docs update

Friday, July 1, 2022

GeoTools 26.5 released

 The GeoTools team is pleased to share the availability  GeoTools 26.5 

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

Fixes and improvements

  • Grid aggregation in the ElasticSearch community module has been improved
  • Fix aggregate queries optimization when the filter contains a function that cannot be encoded in SQL
  • Faster (external) overview lookup for GeoTIFFs
  • Improved ability to move around files in a mosaic of NetCDF files
For more information see the 26.5 Release Notes.

About GeoTools 26 Series

  • main is now the default branch, repository now inclues .gitattributes file for consistent linefeed handling.
  • 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

Monday, May 30, 2022

GeoTools 27.0 Released

The GeoTools team is pleased to share the availability GeoTools 27.0 

Improvements and fixes in this release

New Feature

  • GEOT-7104 Clarify GeoTools.init() workflow and logging setup and configuration
  • GEOT-7100 Migrate Log4JLoggerFactory to reload4J library
  • GEOT-7099 Introduce LogbackLoggerFactory for integration with SLF4J API
  • GEOT-7054 Like Query Support for GeoPackage
  • GEOT-7053 TransformFeatureCollection visitor delegation can result in infinite recursion
  • GEOT-7050 VSI Virtual File System support
  • GEOT-7019 Add AppSchema support for GeoPackage
  • GEOT-6988 Add process to provide a centre line to label irregular polygons
  • GEOT-6875 Add DataStore plugin for Informix

Improvement

  • GEOT-7131 Clarify ImageMosaic documentation with an example
  • GEOT-7129 Allow StreamingParser to set the entity resolver
  • GEOT-7132 Disable external entities in PullParser
  • GEOT-7123 GridCoverageRenderer should crop coverages to valid projection area also in the “paint a coverage” path
  • GEOT-7119 Clean up GeoHashGridProcessParameters, make it work properly with tiling
  • GEOT-7118 Allow GeoHashGridProcess to default the grid aggregation definition
  • GEOT-7111 Allows UniqueVisitor to select multiple features’ attributes
  • GEOT-7102 ElasticSearch plugin move aggregation creation from view parameters to Rendering Transformation parameter
  • GEOT-7098 Harden use of regular expressions in Filters and Functions
  • GEOT-7091 ClippingFeatureCollection won’t handle input feature types with generic Geometry columns
  • GEOT-7089 CQL-JSON needs to be updated to support the current state of CQL2
  • GEOT-7075 The jsonPointer function is currently being tested against json columns. Make it work properly against jsonb ones too
  • GEOT-7058 WMTS documentation and examples
  • GEOT-7044 WMTSTileService should use WebMapTileServer to load images
  • GEOT-7041 Add an optional parameter to the PointStacker process to allow a filter to be applied
  • GEOT-7039 Single Points returned from PointStacker should optionaly contain the original attributes
  • GEOT-7035 Add ability to provide the desired database type name when creating a schema in JDBC stores
  • GEOT-7031 Elasticsearch geohash process can fail with NPE in invertQuery
  • GEOT-7028 GetTile request’s in WMTS represents one single tile, not a set
  • GEOT-7014 Move functionality for filtering tiles by the layer’s tileMatrixLimits
  • GEOT-7013 Remove deprecated functions from gt-wmts
  • GEOT-7011 GeoPackage WKB and contents min/max axis order issue
  • GEOT-7009 New hint to stop GeoTiffReader from looking into overviews
  • GEOT-7006 GeoJSONDataStore inefficient handling of ObjectMapper
  • GEOT-7005 Image mosaic, allowing turning off external overview lookups
  • GEOT-7004 Image mosaic, extend multithreaded granule loading
  • GEOT-7003 Image mosaic: allow harvesting from COG URIs (e.g., gsutil style gs://bucket/name)
  • GEOT-7002 Add support for COGs stored in Google Cloud
  • GEOT-6996 Add bands function to extract number of bands from a coverage or image
  • GEOT-6989 Replace method addTileToCache of org.geotools.tile.TileService
  • GEOT-6964 Java 17 compatibility
  • GEOT-5625 Add config level for log4jlogger

Bug

  • GEOT-7143 ElasticSearch GeoHash aggregation does not work when “scrolling” is enabled in the data store config
  • GEOT-7142 ElasticSearch GeoHash aggregation does not work on renamed geometry attributes
  • GEOT-7141 GeoTIFF mask/overview lookup should default to GeoTIFF format
  • GEOT-6888 PostGIS - fixed columns lengths when using prepared statements
  • GEOT-7135 FastBBOX Class cast exception when evaluating on ComplexFeatures
  • GEOT-7125 GetSingleTileRequest doesn’t include TIME in url
  • GEOT-7124 WMTSCoverageReader isNativelySupported should check for equality in CRS rather than SRS
  • GEOT-7122 Visual artifacts when reprojecting ES GeoHashGrid process output
  • GEOT-7110 Special characters in style names cause malformed GetTileRequests when cascading WMTS
  • GEOT-7105 GeoJSON parser fails on strings that can be parsed as a long, but not as an int
  • GEOT-7090 GeoPackage attempts to read from non-existent columns
  • GEOT-7088 Fix shapefile resource leaks
  • GEOT-7087 The number format function should use the machine default not English
  • GEOT-7079 Downgrade jt-jdbc-teradata to unsupported
  • GEOT-7078 Use first style of WMTS layer’s without isDefault set
  • GEOT-7076 Cannot use a start sql script with curly braces that are not in the format of an env variable
  • GEOT-7074 SLD or CSS filter rules using a non existent attribute named ‘type’ causes a generic ClassCastException instead of a specific exception with the right message
  • GEOT-7073 GeoPackage store fails to use spatial indexes when multiple BBOX filters are used at the same time
  • GEOT-7070 In CQL2 “id” is not a reserved word
  • GEOT-7066 ECQL cannot parse geometry predicates using ENVELOPE
  • GEOT-7065 WKTReader2 can’t read EMPTY geometries
  • GEOT-7062 Update pom of gt-arcgisrest
  • GEOT-7061 GrowableInternationalString.getLocales() is fixed to the values of its first invocation
  • GEOT-7060 Count query Prepared Statements values are not set
  • GEOT-7052 OperationsMetadata is optional for RESTful WMTS
  • GEOT-7051 ContourProcess doesn’t extract GridCoverage2D NoData properties
  • GEOT-7040 Don’t linearize warp transformations while oversampling
  • GEOT-7036 WMTS reader doesn’t reproject result
  • GEOT-7034 ImageWorker can error with width=0 while processing images with alpha
  • GEOT-7033 xs:boolean feature mapping error on WFS/GML3+ using Oracle db
  • GEOT-7030 Missing YSLD support for rule vendor options
  • GEOT-7027 Invalid number format when writing geojson features.
  • GEOT-7026 Implement a rendering transformation that returns the granule footprints from a structured reader
  • GEOT-7025 Center is spelt wrong in org.geotools.process.ProcessFactory
  • GEOT-7024 Extend GeoPackage process XSD definition to support arbitrary request parameters for tile layers
  • GEOT-7015 GroupByVisitor JDBC optimization fails on JDBC stores when grouping over geometries
  • GEOT-7001 XmlComplexFeatureParser gives wrong name for ComplexAttribute
  • GEOT-6998 MinVisitor and MaxVisitor avoid NullPointerException and don’t assume Integer
  • GEOT-6997 Improve JiffleProcess support for variable output bands
  • GEOT-6995 StreamingRenderer - Exception when shapefile features (3D points) get loaded into memory and displayed in a 2D coordinate system
  • GEOT-6994 User-Agent must be specified in MultithreadedHttpClient
  • GEOT-6993 Support for multiple CRS in reprojection and application schemas
  • GEOT-6990 TWKB VarInt decoding for PostGIS is limited to 32-bit
  • GEOT-6977 Elasticsearch plugin online tests fail when running with Java 11
  • GEOT-6967 ImageWorker “illegal reflective access” with Java 11++
  • GEOT-6961 WFSContentComplexFeatureSource.getFeatures must use correct namespace
  • GEOT-6887 Bring GeoJsonWriter/GeoJsonReader on par with gt-geojson with handling of empty collections, arrays, lists, datetime and boolean
  • GEOT-6869 MultiSurface not encoded in DWithin filter
  • GEOT-5192 NPE occurs while writing features’ collection to GeoJSON where features have EmptyGeometry.

Task

  • GEOT-7146 Upgrade jai-ext to 1.1.23
  • GEOT-7113 Update jai-ext to 1.1.22
  • GEOT-7101 Update Jackson to 2.13.2
  • GEOT-7086 Introduce Log42JLoggerFactory for integration with Log4j 2 API
  • GEOT-7085 Update GT Pom to depend on ImageIO-EXT 1.4.0 and GDAL 3.2
  • GEOT-7080 Update PMD to v 6.42
  • GEOT-7068 Switch automatic formatting and check to Spotless
  • GEOT-7063 New gt-cql2-text unsupported community module
  • GEOT-7057 Remove junit compile time transitive dependency from json-simple
  • GEOT-7056 Integrate jacoco code coverage in GeoTools
  • GEOT-7055 Split gt-geojsonstore in two modules, gt-geojson-core and gt-geojson-store
  • GEOT-7042 Upgrade jdom dependency
  • GEOT-7038 Update optional log4j support to a version that does not support RCE
  • GEOT-7021 Run ElasticSearch integration tests in GitHub actions
  • GEOT-7018 Remove unnecessary warning suppressions
  • GEOT-7017 Upgrade to ErrorProne 2.10.0
  • GEOT-7010 Update ErrorProne to 2.9.0

Tuesday, April 12, 2022

Unchecked JNDI lookups in GeoTools (CVE-2022-24818)

The recent log4shell vulnerability has brought to our attention that unchecked JNDI lookups are inadvisable. We have isolated the JNDI lookup code responsible in GeoTools and reported the vulnerability as GHSA-jvh2-668r-g75x / CVE-2022-24818.

To address this issue we are pleased to introduce the jndiLookup(String) function:

DataSource dataSource = (DataSource) GeoTools.jndiLookup(name);

This method is provides safe look-ups by default (limited to no-schema and java lookups). You may override this policy for your application by supplying a JNDI Name validator.

Please update your application to one of the patched releases: GeoTools 26.4, GeoTools 25.6 or GeoTools 24.6 (and following the update instructions).

The approach used (limiting lookups to no-schema and java lookups) is the same one taken by the Log4J project. You may wish to review your application for any use of InitialContext.lookup(fixedName), and consider making use of jndiLookup(String) as a resolution. For more information see the GeoTools utility class documentation, and javadocs.

Sunday, February 20, 2022

GeoTools 25.5 released

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

GeoTools 25.5 is published to repo.osgeo.org for direct build integration. This release is made in conjunction with GeoServer 2.19.5. 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 and tasks: 
  • GEOT-7073 GeoPackage store fails to use spatial indexes when multiple BBOX filters are used at the same time
  • GEOT-7071 GetFeatureInfo in WMSLayer has problems in transinformation of I,J params
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.5 |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, and revised Map<String?> datastore connection parameters.

Monday, January 24, 2022

GeoTools 26.2 Released

The GeoTools team is pleased to share the availability  GeoTools 26.2 

This release is also available from the  OSGeo Maven Repository and is made in conjunction with GeoServer 2.21.2
Update: Initial release was accidentially compiled with Java 11, and has been recompiled using Java 8 on Feburary 22, 2020.

Source code

The active GeoTools branches (main, 26.x and 25.x) now include a .gitattributes file specifying how linefeeds are handled for our repository. With this change you are no longer required to set global core.autocrlf=input to prevent conflict with other developers when editing text files.
A number of files with inconsistent line endings were cleaned up as part of this activity.
Use git reset as outlined below if encounter difficulty updating your checkout:
git pull --rebase
git reset --hard

Fixes and improvements

  • Release notes now attached to GitHub tag, no longer stored in Jira as this required a credentials to access
  • Rendering pre-process Mark Factories Hint available allowing improved performance
  • YSLD support for rule vendor options
For more information see the 26.2 Release Notes.

About GeoTools 26 Series

For more information see the release notes ( 26.2 | 26.1 | 26.0 | 26-RC).
  • main is now the default branch, repository now inclues .gitattributes file for consistent linefeed handling.
  • 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

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.