GeoTools

OSGeo

Monday, July 6, 2020

GeoTools 22.4 released

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

What's new

Improvements:
  • The ImageMosaic plugin supports storing the index in SQL Server
  • The PostgreSQL JDBC driver has been updated to the latest release, as well as the MongoDB connector
  • New filter function, "mapGet", retrieves an entry from a Map (useful when your simple features do contain a map, e.g., when using a hstore column in PostgreSQL).
Other assorted fixes can be found in release notes.

About GeoTools 22 Series




Monday, June 8, 2020

GeoTools 23.1 Released

The GeoTools team is pleased to share the availability GeoTools 23.1:
This release is published to the osgeo maven repository, and is made in conjunction with GeoServer 2.17.1. This is a stable release and is a recommended upgrade for all users of the GeoTools library.

Improvements and Fixes

Public service announcement:
  • The spatialite data store has been removed, it had not been released for sometime.
From our issue tracker release-notes:
  • New! Classification functions can now be used to compute a percentage of elements per class
  • Fix for GeoPackage spatial index creation, was failing when feature type name was an SQL resurveyed word.
  • GeoJSON can now read from any URL and no longer checks for a json extension.
  • Several fixes to improve transparency fill was previously restricted to byte data, and one line transparent stripes
  • Geometry clipper now accounts for cases where a multi-polygon is produced
  • Shapefile fixed to read polygon z shape files into PackedCoordinateSequence
  • MongoDB DataStore fixed handling of $not operator

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:
  • The MBTiles DataStore now supports geometry generalization
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.1,23.023-RC)

Thursday, May 21, 2020

GeoTools 22.3 released

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

Fixes and Improvements

Improvements:
  • Maven Repository switched to https://repo.osgeo.org/repository/release/
  • Preferred image format setting for WMS cascading
  • Upgraded SQL Server module to the latest open source JDBC driver by Microsoft
  • Heterogeneous CRS mosaics can now produce output in the native CRS, when a single granule is requested.
  • MarkAlongLine vendor option allowing to continuously drape a linear symbol along a line
  • Support for curves in SQL Server driver
  • Extended SLD to support background fill
  • Classifier filter functions can now add a percentage of occupation in resulting classes
  • Allow to place a text symbolizer Graphic at an offset vs its own label
Fixes:
  • Raster to vector rendering transformations now supporting continuous map wrapping
  • Various small fixes in the SAP HANA store and GeoPackage one
  • PostGIS store not requesting point data when using TWKB along with prepared statements
Get all details in the release notes.

About GeoTools 22 Series




Wednesday, April 22, 2020

GeoTools 23.0 released

The GeoTools team is pleased to share the availability GeoTools 23.0:
This release is published to our new osgeo maven repositoryand is made in conjunction with GeoServer 2.17.0.

OpenSource is a team effort and we would like to thank everyone who helped to test the release candidate: Ian Turton, Andrea Aime, Jody Garnett and the team at GeoCat, Jim Hughes and Emilio Lahr-Vivaz from CCRi, and Mark Prins. Thanks also to Ian Turton and Andrea Aimie for making this release.

This release is an easy upgrade with only API additions!

New Features

New Maven repository

The GeoTools project is taking advantage of the new repo.osgeo.org maven repository, and has changed from using our long standing downloads.osgeo.org webdav folder.

This change effects all projects using GeoTools and requires a change to your pom.xml. For detailed instructions on how upgrade, or how to continue to use an older version, please see our user guide.
Thanks to OSGeo system admin committee for this service, and Jody Garnett and Torben Barsballe for making the change.

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, sponsored by Alamon  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)

ImageMosaic

When using ImageMosaic using with a mix of granules from different coordinate reference systems requests with a coordinate reference system matching a gradual are no longer forced to retroject via WGS84.

To support this GridCoverageRendererUtilities avoids resampling the first coverage.

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:
  • Adds ability to read in Measure values from shapefiles. There are 3 variants of each geometry e.g. POINT, POINTM and POINTZ. Z values always carry an M value. These changes allow GeoTools 23.0 to read in and handle these M values when present.
  • GeoPackage support for two special srs_id -1 and 0 that match to generic CRSs
  • Fix ImageWorker getHistogram cache, so a new value is calculated if low, highs or binsNum  change.
  • Fix a GeoPackage test verifying handling of SQL "in" statements
  • Shapefile DataStore was fixed work around a Java API change to java.nio.ByteBuffer.clear()
  • 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 (Sponsored by Alamon)
  • 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 
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.023-RC)

Monday, April 13, 2020

Change to maven repositories

The osgeo and boundlessgeo maven repositories used by the GeoTools projects have been migrated to a new repository manager setup by the Open Source Geospatial Foundation.

We tried adding a redirect to continue to allow builds to run with out modification ... but maven is not setup to follow redirects safely.

Reference:

download.osgeo.org/webdav/geotools releases

The main geotools release repository has been moved to:
<repositories>
  <repository>
    <id>osgeo</id>
    <name>OSGeo Release Repository</name>
    <url>https://repo.osgeo.org/repository/release/</url>
    <snapshots><enabled>false</enabled></snapshots>
    <releases><enabled>true</enabled></releases>
  </repository>
</repositories>

To fix your build please update your project pom.xml as shown above, or define the following ~/.m2/settings.xml mirrors:
<mirrors>
  <mirror>
    <id>osgeo-release</id>
    <name>OSGeo Repository</name>
    <url>https://repo.osgeo.org/repository/release/</url>
    <mirrorOf>osgeo</mirrorOf>
  </mirror>
  <mirror>
    <id>geoserver-releases</id>
    <name>Boundless Repository</name>
    <url>https://repo.osgeo.org/repository/Geoserver-releases/</url>
    <mirrorOf>boundless</mirrorOf>
  </mirror>
</mirrors>

References:

repo.boundlessgeo.com snapshots

The boundless repository was used by our build server to publish snapshots, it is moved to:
<repository>
  <id>osgeo-snapshot</id>
  <name>OSGeo Snapshot Repository</name>
  <url>https://repo.osgeo.org/repository/snapshot/</url>
  <snapshots><enabled>true</enabled></snapshots>
  <releases><enabled>false</enabled></releases>
</repository>

Please note that this is populated by our build server for the active master, stable and maintenance branches. Snapshots for historical builds are not being generated! If you find a project built using a snapshot from an archived version of GeoTools please update to the appropriate release.

Reference:


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