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