GeoTools

OSGeo

Tuesday, March 31, 2020

GeoTools 23-RC Release Candidate Available

The GeoTools team is pleased to share the availability GeoTools 23-RC:
This release candidate is also available from our maven repository, and is made in conjunction with GeoServer 2.17-RC.

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 when we need it most.

This release is an easy upgrade with only API additions!
Please test this release and let us know of any regression before we release GeoTools 23 in April.

Rendering

New capabilities have been added:
  • markAlongLine vendor option for LineSymbolizer, defining a stroke made up of a continuous well-known-mark along a line.
  • Fixed excessive space between lines when Arabic characters are used.
  • Labeling with a background graphic has been slightly adjusted and should result in more labels being placed
  • Labeling now uses less memory
  • DataStores can now supply a clipping area when rendering features, used to better respect MBTiles rendering model
  • Detected that autoharp and follow line cannot both be used at the same time
  • Vendor option to disable SLD gray square fallback (if no graphic or mark provided)
A new listener has been added to keep track of the rendering process, this is primarily used to track the rendering time.
  • RenderListener.layerStart(layer)
  • RenderListener.layerEnd(layer)
  • RenderListener.labellingStart()
  • RenderListener.labellingEnd()
  • RenderListener.renderingComplete()
For more details see the change proposal by Marco Volpini (GeoSolutions).

New Mapbox Style Extension

New to this release is a MBStyle Extension providing parsers, functions and icon factories to support the rendering content using the Mapbox Style specification.

Thanks to Andrea (GeoSolutions) for extensive quality assurance comparing rendered output to Mapbox.GL:

  • GeoTools now supports hsl/hsla color expressions
  • Extensive work to reverse engineer an appropriate font name when provided a glyphs reference
  • Fix halo default color to black
  • Ignore partials=true which allowed labels to be cut off at the edge map boundaries (making it impossible to stitch tiles together in a legible fashion).
  • Symbols are now generated into the TextSymbolizer and subject to conflict resolution along side labeling resulting in much improved legibility. This change required an API change to TextSymbolizer to support use of a graphic offset to match the functionality of PointSymbolizer.
  • Fix to ExponentialFunction to match appearance between GeoTools and Mapbox.GL.
  • Fix zoom / property interpolation for line gaps and text anchors with the introduction of additional functions.
  • Fix zoom / property interpolation when using floating point values.
  • Transform text offset defined in wms to pixels for GeoTools use.
  • Fix for zoom level rendering (it was off by one resulting in a different visual appearance)
  • Missing symbols are no longer shown, rather than marked with an SLD default square.
  • Dash array now scaled by line width
  • Use "group" and "labelAllGroup" labeling options to prevent lines being labeled multiple times (when split across several tiles).
  • Label priority defined based on MBStyle layer order to match visual appearance of Mapbox.GL
Thanks to Jody (GeoCat) for packing this up as an extension.


MBStyles is recognized as an extension (rather than a plugin) as it provides additional functionality that builds on-top of the core GeoTools library.

New CSV DataStore Plugin

Ian Turton has been improving GeoTools CSV DataStore:
  • Extensive fixes including: consistent handling of WKT Geometry, and correctly handling an empty line at the end of the file, correct axis order for LatLonStrategy, 
  • Support a new "writeprj" connection parameter to support the use of an external prj file
  • Can now create a new file
Thanks to Ian's work this module has now graduated from "unsupported" status and included as part of the GeoTools library. The CSV module is a considered a "plugin" as it does not provide any additional API and is picked up by the core GeoTools library as an additional file format.

GeoPackage DateTime Support

GeoPackage correctly handles DateTime field (both respecting encoding as string and handling of Date across timezones). Thanks to David Blasby and Richard Duivenvoorde for this work.
This fixed revealed a considerable performance penalty which Andrea was able to resolve with a strategic change to the VisitorResult classes:
  • VisitorResult.getResultType(Class[] inputs)

Improvements and Fixes

Public service announcement:

  • Java 8u212 onward has slightly changed the handling of File references on windows shares; please keep this in mind when upgrading.

From our issue tracker release-notes:
  • Added AUTO:97003 for an auto Azimuthal Equidistant projection
  • WMTS can now access contact information, and the "image/jpgpng" format.
  • You can now create oval vector grids
  • Databases can now make use of UUID as a primary key.
  • Fixed issues with Query sortBy field not being considered when testing if two queries are the same, or when combining two queries together.
  • The type model has a series of fixes to better support the use of user data associated with each feature.
  • Our type model was initial developed with GML in mind and had some restrictions around the use of special characters such as ":", these restrictions have been removed when working with other data sources such as CSV and GeoJSON).
  • PostGISDataStore.getSQLTypeNames() performance improved for for PostGIS databases with 20k tables.
  • wms-client fixes to use default image format specified in GetCapabilities, and timeout listing published styles. The API for WMSLayer and WMSCoverage reader were updated to support this fix.
  • Fix PostGIS prepared statements use of TWKB to request point geometry
  • MongoDB no longer supports the "org.geotools.data.mongodb.complex.useLegacyPaths" flag
  • Resolved difficulty reading shapefile with the FEATURE_2D enabled
  • Application Schema correctly handles an empty collection (when using a multi-valued join)
  • KML DataStore checks file extension

Research and Development Updates

Our "unsupported" module area remains a hot-bed of research and development. We invite developers to contribute to the following work-in-progress:
  • GeoJSON DataStore respect of axis order and use of Jackson library to handle variable schemas
  • Andrea has started an mbtiles-vector datastore for reading an mbtiles file stitching vector content features from the tiles, using the maximum zoom level, and a lower zoom level if geometry distance hints are provided.
  • An elastic search community module has been provided by by Stephen Gaffigan, building on from ElasticGeo starting point.
  • The ArcSDE datastore is no longer actively maintained and is now an unsupported module.
  • Solr DataStore fixes to tests and encoding of BBOX filter
  • WFS client was tripping up on WFS 2.0 services, it now recognizes that the internal filter PropertyIsEqualTo can be encoded as WFS 2.0 EqualTo, thanks to Matthias for the fix.
  • WFS client can now be configured with a larger connection pool when handling multiple concurrent requests, thanks to Mike Glazer for the fix.
  • A new Flatgeobuf DataStore experiment has been started by 
If you are interested in contributing to these modules, or starting your own research and development activity, please see our developers guide for details.

About GeoTools 23 Series

GeoTools 23:
For more information see the release notes (23-RC)

Monday, February 24, 2020

GeoTools 21.5 Released


The GeoTools team is happy to announce the release of GeoTools 21.5:
This release is a maintenance release provided for production systems. This is the final planned 21 series maintenance release scheduled, and we encourage migrating to 22 series at this time.

This release is made in conjunction with GeoServer 2.15.5.

This release is made with OpenJDK 8 and is compatible with both Java 8 and Java 11.

Improvements

  • [GEOT-6377] - Add support for ANY clause optimization in PostGIS driver
  • [GEOT-6416] - Allow dynamic label Font shrinking during text symbolizer rendering for polygons
  • Our release process has changed to using OpenJDK 8 (previous release were made with Oracle JDK 8)
  • Additional DataUtilities isMatch methods to provide a choice of comparing attribute name, or attribute name + data type.
  • CSS Styling now supports text labels when defining color map entries for improved legend generation
  • GridCoverageReaderHelper now respects "Accurate Resolution Computation" parameter
  • AbstractGridCoverageWriter dispose() now releases both output stream and destination   
  • The ECQL and CQL grammar are now aligned, our implementation of CQL supported a prefix comparison operators experiment that was not included in ECQL.

Bug Fixes

  • [GEOT-6367] - Url encoding issue for GetFeature operation having special chars in PropertyName
  • [GEOT-6502] - Add Geometry.class as context in FilterFunction_toWKT
  • Improvements to GeoTools Feature Type model
    • ChoiceAttributeType respects min and max value
    • DataUtilities isMatch fixed to correctly compares attribute name and type
  • Expressions using arithmetic operators now work with complex attributes
  • ContendDataStore local transaction support fixed to return correct query results while editing
  • SQL generation fixed when using a function with LIKE expression
  • CSVDatastore fix to respect LatLon stratagy coordinate order
  • Documentation correction for goodnessOfFit behaviour
  • Fix for GRIB2 range check when used with time and custom dimension
  • For more fixes see the release notes: (21.5 |  21.4 | 21.3 | 21.2 | 21.0 | 21.0 | 21-RC | 21-M0 )

About GeoTools 21 Series

Wednesday, January 22, 2020

GeoTools 22.2 released

The GeoTools team is pleased to announce the release of GeoTools 22.2:
GeoTools 22.2 is a stable release and is recommended for new development and production systems. This release is made in conjunction with GeoServer 2.16.2.

Fixes and Improvements

Improvements:
  • Added preferred image format support in WMSLayer and WMSCoverageReader
  • Upgraded Jackson to 2.10.1
  • Improved performance of AttributeExpressionImpl.evaluate(...) under concurrency
Fixes:
  • Fixes for SQL conversion of Like predicates using expressions (e.g., a nested function)
  • URL-encode special characters when issuing GetFeature in WFS DataStore
  • Fixed misaligned tile contents when rendering heterogenenous CRS mosaics, with reprojection, APH enabled, and high oversampling
  • Fixed documentation for goodnessOfFit text labelling vendor option
  • Fixed MongoDbB appschema support fails when iterating over an empty collection

About GeoTools 22 Series

  • Functions for working with list content and JSON text strings added
  • Release notes ( 22.1 | 22.0 | 22-RC1 )



Thursday, December 19, 2019

GeoTools 21.4 Released

GeoTools 21.4 released

The GeoTools team is happy to announce the release of GeoTools 21.4:
This release is a maintenance release provided for production systems. This is the last 21 series maintenance release scheduled, and we encourage migrating to 22 series at this time.

This release is made in conjunction with GeoServer 2.15.4.

This release is made with OpenJDK 8 and is compatible with both Java 8 and Java 11.

Improvements

  • Our release process has changed to using OpenJDK 8 (previous release were made with Oracle JDK 8)
  • Additional DataUtilities isMatch methods to provide a choice of comparing attribute name, or attribute name + data type.
  • CSS Styling now supports text labels when defining color map entries for improved legend generation
  • GridCoverageReaderHelper now respects "Accurate Resolution Computation" parameter
  • AbstractGridCoverageWriter dispose() now releases both output stream and destination   
  • The ECQL and CQL grammar are now aligned, our implementation of CQL supported a prefix comparison operators experiment that was not included in ECQL.

Bug Fixes

  • Improvements to GeoTools Feature Type model
    • ChoiceAttributeType respects min and max value
    • DataUtilities isMatch fixed to correctly compares attribute name and type
  • Expressions using arithmetic operators now work with complex attributes
  • ContendDataStore local transaction support fixed to return correct query results while editing
  • SQL generation fixed when using a function with LIKE expression
  • CSVDatastore fix to respect LatLon stratagy coordinate order
  • Documentation correction for goodnessOfFit behaviour
  • Fix for GRIB2 range check when used with time and custom dimension

  • For more fixes see the release notes: (21.421.321.2 | 21.0 | 21.0 | 21-RC | 21-M0 )

About GeoTools 21 Series

Monday, November 25, 2019

GeoTools 22.1 Released

The GeoTools team is pleased to announce the release of GeoTools 22.1:
GeoTools 22.1 is a stable release and is recommended for new development and production systems. This release is made in conjunction with GeoServer 2.16.1.

Note: Our test cases caught a regression in URL handling using Oracle JDK 8u221, as a result this was made with the earlier Oracle JDK 8u202. We intended to use OpenJDK 8 for subsequent releases of GeoTools.

Update: Jody would like to apologize for accidentally releasing "22.2" while testing out JDK versions above. The maven repository folders have been renamed "22.2-mistake" to avoid causing problems. GeoTools 22.2 is scheduled for January.

Fixes and Improvements

Improvements:
  • CSS styling raster-color-map definitions can now include labels
  • DataUtilities isMatch(attributeDescriptor, attributeDescriptor) now respects both attribute name and type binding. An optional strict parameter can be used to mimic prior behaviour.
  • The ECQL parser can now handle EQ, NEQ, GT, LT, GTE, LTE keywords. This change restores ECQL as a superset of CQL allowing applications to smoothly "upgrade". Please note that these keywords are more typically represented as operators (and were not included in the final OGC CQL definition).
  • The behaviour of GridCoverageReader now correctly respects "accurate resolution computation" parameter. When disabled the prior technique of using an affine transformation to determine resolution is used.
  • grid coverage writers fixed to consistently release destination and output stream when disposed.
Fixes:
  • Arithmetic operations fixed to work with complex attributes (as provided by app-schema and several json datastore).
  • ChoiceAttributeTypeImpl fixed to correctly report min and max values
  • A series of wfs-ng client fixes allow use of WFS 2.0 DescribeFeatureType 
  • Fix correcting bounding box parameters for SolrDataaStore
  • CSVDataStore LatLonStratagy fixed to respect order columns are defined in
  • jdbc-hana implementation fixed to allow queries where SRID is unknown (allowing use of views)
  • ContentDataStore fixed handling of queries during a transaction. This change affects implementations like ShapefileDataStore that do not natively support transaction independence.
  • Fixed failure with GRIB2 files making use of time and custom dimensions

About GeoTools 22 Series




Tuesday, September 24, 2019

GeoTools 21.3 released

GeoTools 21.3 released

The GeoTools team is happy to announce the release of GeoTools 21.3:
This release is a stable release and is recommend for new development and production systems.

This release is made in conjunction with GeoServer 2.15.3.

Improvements

  • XS DateTime encoder doesn't support Local DateTime Handling System property
  • Hint to preserve chained affines operations from being merged together
  • Interpolate function performs a number of dynamic expression evaluations, and generates a lot of transient objects, for each call to "evaluate"
  • MongoDB OR filters are not executed on native search engine leading to wrong results on queries.
  • Improve NetCDF coordinateAxis unit management (km conversion)

Bug Fixes

  • Schema cache autoconfiguration fails for empty GeoServer data directory
  • Zoomed in small bbox causes java.lang.ArithmeticException: / by zero
  • Add support for scale/offset value rescaling GeoTiff files
  • tolerate geotiff_coverage as the coverageName
  • If an error happens when creating an App-Schema data store, included data stores are not unregistered correctly.
  • Dateline wrapping heuristic cannot handle large earth objects
  • GML 2 temporal data is not being formatted like GML 3 encoding.
  • gt-epsg-hsql gets dragged in by gt-wmts through gt-tile-client
  • JMapPane doesn't set the background color of the map on startup causing flashing
  • ImageUtilities may setup a partially initialized ImageLayout which may result into an IllegalArgumentException
  • WFSDataStore uses the wrong parameters for DescribeFeatureType operation when using WFS 2.0 strategy
  • Wrong expression encoding for BBOX filters on Solr datastore
  • For more fixes see the release notes: (21.321.2 21.0 21.0 | 21-RC | 21-M0 )

About GeoTools 21 Series

Wednesday, September 18, 2019

GeoTools 22 released

The GeoTools team is pleased to announce the release of GeoTools 22.0:
This stable release is recommended for new development and production systems. This release is made in conjunction with GeoServer 2.16.0.

This release includes a various major changes.

Module Updates
  • JDBC Hana module moved to supported
  • Added PostGIS raster unsupported module
  • OGR unsupported module has been updated and returned to the build after it was moved to unsupported for the 20 series (OGR is still an unsupported module, but is once again built by default).
  • VPF unsupported module updated and returned to the build.
  • SWT unsupported module removed from the build for incompatibility with Java 11.
  • Oracle EPSG unsupported module removed from build for depreciated dependencies.
  • Unsupported Excel module removed from GeoTools for lack of support.
  • Unsupported App-Schema web service module removed from GeoTools for lack of support.

Assorted improvements

Other highlights from our issue tracker release-notes:
  • Upgrade to imageio-ext 1.3 with GDAL 2.x bindings
  • Make gt-swing able to load resources from OSGI bundles
  • Expose PostgreSQL driver SSL mode
  • Add support for TWKB transfer in PostGIS datastore
  • SimpleFeatureIO doesn't allow to encode big string attributes (bigger then 65535 bytes)
  • Improve coordinateAxis unit management
  • XS DateTime encoder doesn't support Local DateTime Handling System property
  • GeoTools cannot open the GDA94 -> GDA2020 grid shift files
  • MongoDB file schema generation uses only the first object from the collection
There is also a large set of bug fixes. For more information see the 22.0 release notes as well as the 22-RC release notes.