GeoTools

OSGeo

Thursday, December 29, 2022

GeoTools 27.3 released

   The GeoTools team is pleased to share the availability  GeoTools 27.3 

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

Fixes and improvements

Bug
  • GEOT-6324 WFS-NG online tests don't extend OnlineTestCase
  • GEOT-7222 Image Mosaic excessive memory usage when mosaicking many little images
  • GEOT-7244 Constructor GridGeometry2D(Rectangle, Rectangle2D) looses CRS
  • GEOT-7247 ImageMosaic with RGBA images fails to respect transparency on overlaps
  • GEOT-7248 app-schema GetFeature numberMatched breaks with views/tables without PK
  • GEOT-7256 SLDTransformer fails to encode raster symbolizer vendor options
  • GEOT-7257 GeoCSS misses support for labelInFeatureInfo and labelAttributeName vendor options
  • GEOT-7258 geojson-core is too lenient parsing as dates strings that are actually not
  • GEOT-7261 WFSContentComplexFeatureSource.getBounds will end up in StackOverflowException
  • GEOT-7264 Image mosaic: handle alpha channel as ROI for excess granule removal purposes
  • GEOT-7268 GeoTools can create GML output that is not valid XML
  • GEOT-7271 ImageMosaic should read band statistics from GDAL_METADATA tiff tags, when available

Improvement

  • GEOT-6914 AbstractWfsDataStoreOnlineTest bases service availability on the result of URL.openStream
  • GEOT-7241 Expose column comments in FeatureType descriptions on selected JDBC stores
  • GEOT-7252 Rename GET_COLUMN_REMARKS to GET_REMARKS to accomodate future table comments support
  • GEOT-7270 GeoTIFFReader should expose GDAL band specific metadata when available
  • GEOT-7275 Add If_Then_Else support to ExpressionTypeVisitor
  • GEOT-7277 Expose assets as a selectable property in STACDataStore


Task


Monday, November 21, 2022

GeoTools 28.0 released

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

Improvements and fixes in this release

Bug

GEOT-6324 WFS-NG online tests don't extend OnlineTestCase
GEOT-7242 Simplification fails for geographic shapes in HANA
GEOT-7244 Constructor GridGeometry2D(Rectangle, Rectangle2D) looses CRS
GEOT-7246 GeoJSON writer throws NPE if no geometry is present in the feature being written
GEOT-7248 app-schema GetFeature numberMatched breaks with views/tables without PK
GEOT-7256 SLDTransformer fails to encode raster symbolizer vendor options
GEOT-7257 GeoCSS misses support for labelInFeatureInfo and labelAttributeName vendor options
GEOT-7258 geojson-core is too lenient parsing as dates strings that are actually not
GEOT-7264 Image mosaic: handle alpha channel as ROI for excess granule removal purposes

Improvement

GEOT-6914 AbstractWfsDataStoreOnlineTest bases service availability on the result of URL.openStream
GEOT-7220 Support datetime2 and datetimeoffset in JDBC SQL Server plugin
GEOT-7230 Implement a HINT parameter as part of the HANA plug-in

Also see the GeoTools 28-RC changes for more information on this series.

Thursday, November 17, 2022

GeoTools 28-RC released

 The GeoTools team is pleased to share the availability GeoTools 28.0-RC :

Improvements and fixes in this release

Bug

GEOT-2063 CRS decode error
GEOT-5911 MongoDB CQL_Filter not working anymore
GEOT-6259 ShapefileReadWriteTest fail on Windows
GEOT-6888 PostGIS - fixed columns lengths when using prepared statements
GEOT-7081 Choose correct EPSG library
GEOT-7150 Name of type in AttributeDescriptor are wrong
GEOT-7154 Sphinx build failure with extlinks (new warnings in Sphinx build)
GEOT-7159 JDBCDataStore : some error messages are inconsistent
GEOT-7161 Aggregate queries with non-database supported queries fail
GEOT-7162 Postgis Partition tests fail on postgres versions below 11
GEOT-7174 Jiffle band selection optimization is not working properly on readers that cannot perform band selection
GEOT-7177 Remove randomSupportedCRS from WMTSCoverageReader
GEOT-7183 STAC datastore community module: part one, STAC client
GEOT-7185 WMS 1.3.0 - GetCapabilities: Tolerate empty Online Resource in Service definition
GEOT-7186 HanaDialect SRID of geometries in columns w/o SRID constraint not detected
GEOT-7187 MockHTTPResponse cannot be replayed, will only work once
GEOT-7198 GeoTIFF native band selection does not work in heterogeneous CRS mosaics
GEOT-7200 GeoTiffReader NegInfinity NoData Handling
GEOT-7203 Split package introduced in gt-geojson-core
GEOT-7208 Missing YSLD support for channel name expressions
GEOT-7210 YSLD styles does not parse/encode layer name
GEOT-7215 Try harder to use bbox and datime search properties in stac-datastore
GEOT-7216 Properly encode BBOX filters in CQL2
GEOT-7217 Allow to specify properties per coverage, in addition to global ones, in indexer.xml
GEOT-7218 Remove ScanForTypeNames property in ImageMosaic, it's not actually used
GEOT-7219 Add a query caching capability to image mosaic
GEOT-7222 Image Mosaic excessive memory usage when mosaicking many little images
GEOT-7225 Assertion in ShpFilesTestStream depends on environment
GEOT-7226 ParameterTypeFactoryTest fails for certain locales
GEOT-7227 FlatGeobufFeatureReader throws a NPE when query filter Literal Expression is a ReferencedEnvelope
GEOT-7229 WMTSCapabilities throws NPE for misconfigured capabilities
GEOT-7231 Z values shapefiles don't handle NaN M values correctly
GEOT-7237 Compile error in gt-ogcapi-client

Improvement

GEOT-6384 Upgrade EJML to 0.38
GEOT-7093 WMTSCoverageReader shouldn't have instance variables for single requests
GEOT-7130 Automated tests for the SAP HANA data store
GEOT-7139 Migrate JDBC tests from JUnit3 to JUnit4
GEOT-7152 Use table spatial_ref_sys to create CRS unknown to the EPSG database
GEOT-7156 Use dialect to customize the desired table type to return the PrimaryKey
GEOT-7157 Support linked table for H2 database
GEOT-7166 Fix jdbc-informix plugin failed test
GEOT-7169 When GeoJsonReader parses a complex nested object, it should capture it as a Jackson JSONNode
GEOT-7172 GeoJSONReader extension to handle top level attributes as well in order to support STAC
GEOT-7173 Oracle DataStore - Allow configuring time out properties for login and socket connection
GEOT-7175 Add native band selection support to the GeoTIFF reader
GEOT-7178 Create a PropertyAccessor that can use XPath to retrieve JSONNode attribute children
GEOT-7179 Upgrade app-schema Jetty test dependency to 9.4.48.v20220622
GEOT-7181 GeoJSONReader should handle paged GeoJSON collections
GEOT-7188 Make GeoJSON reader tolerant to geometry and properties elimination
GEOT-7190 Improve fetching performance while paging through STAC search response
GEOT-7192 STAC datastore: allow full HTTP client configuration
GEOT-7193 STAC datastore: support CQL2 filter encoding
GEOT-7195 WMTS requests can fail as the tilematrixset is double url encoded
GEOT-7204 Allow image mosaic to use the STAC datastore as a granule catalog
GEOT-7205 STAC store: allow configuring number of items used to guess a collection feature type
GEOT-7207 Use parameters instead of hard-coded values for BBOX filters
GEOT-7211 Fix suppressed PMD warnings and add missing file headers in gt-jdbc-hana
GEOT-7212 Support geometry simplification in gt-jdbc-hana
GEOT-7233 Add support for sequences to SQL Server dialect

New Feature

GEOT-7202 Vector Mosaicing Data Store

Task

GEOT-7109 gt-swt module docs update
GEOT-7167 Upgrade JTS to 1.19.0
GEOT-7189 STAC datastore: first implementation
GEOT-7191 Allow users to set a hard limit on how many STAC items a request can fetch, at the store level
GEOT-7221 Upgrade SnakeYAML to 1.32



GEOT-7235 Deprecate org.geotools.util.Java6

Wednesday, September 14, 2022

GeoTools 26.6 released

  The GeoTools team is pleased to share the availability  GeoTools 26.6 

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

Fixes and improvements

Bug

GEOT-7186 SRID of geometries in columns w/o SRID constraint not detected properly

GEOT-7182 TransformFeatureSource can lose paging information while transforming query

Improvement

GEOT-7212 Support geometry simplification in gt-jdbc-hana

GEOT-7207 Use parameters instead of hard-coded values for BBOX filters

GEOT-7179 Upgrade app-schema Jetty test dependency to 9.4.48.v20220622

Task

GEOT-7197 Bump postgresql from 42.3.3 to 42.4.1

About GeoTools 26 Series

  • main is now the default branch, repository now includes .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, 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