GeoTools

OSGeo

Sunday, September 20, 2020

GeoTools 24.0 Released

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

This release is also available from the OSGeo Maven Repository and is made in conjunction with GeoServer 2.18.0, GeoWebCache 1.18.0 and JTS 1.17.1.

This release was carried out by Ian Turton of Astun Technology, with thanks to the support of UKHO.

Visuals and Rendering

New capabilities have been added:
  • Add a ProjectionHandler for Homolosine
  • WrappingProjectionHandler can now handle a rotated polar fitted Coordinate System
  • Implement Polyconic spherical case (as used by US Census TIGER dataset)

Add functionality to GeoPackage with GeoPkgExtension

Read/write support of GeoPackage has been available as a GeoTools DataStore for some time, this release Andrea (GeoSolutions) has really upped our game defining a GeoPkgExtension for modules to hook in and provide additional functionality:
  • GeoPkgMetadataExtension: Supports the GeoPackage metadata extension, defined as a "registered extension" in the GeoPackage standard .
  • GeoPkgSchemaExtension: Allowing to declare more information about columns and eventually express constraints on them.
  • This approach is already opening up a host of possibilities, with GeoServer experimenting with including styling and semantic annotations.
The GeoPackage module is under active development with new support for Support compact enumerations, speed improvements when adding content, and

Mapbox Style Dynamic Expressions

The MBStyle Extension continues to be improved with this release adding support for dynamic expressions.
Expressions allow Mapbox Style to dynamically style features using attribute values ( [ "get","attribute"] ), and respond to changes of scale ( ["zoom"] ), and make use of functions (["rgb",255,0,0] ):
{ "circle-radius": [
    "interpolate", ["linear"], ["zoom"],
    0, ["get", "rating"],
    10, ["*", 4, ["get", "rating"]]
  ]
}
The previous, now deprecated, function stop approach remains supported:
{ "circle-color": {
    "property": "temperature",
    "stops": [[0, 'blue'],[100, 'red']]
  }
}
Thanks to Jody (GeoCat) for this improvement offering greater Mapbox.GL parity. For more information see user guide on Expressions .

Updated Libraries

Each major release is an opportunity to update the libraries that GeoTools uses:
  • Bump no.ecc.java-vector-tiles to 1.3.10
  • Update to JSR-385 units 2.0
  • Update to Oracle 19.7.0.0 JDBC driver (now available as maven dependency)
  • Upgrade FlatGeobuf library to 3.3.0
  • Upgrade from Apache Commons Collections v3 to Apache Commons Collections v4
  • Upgrade NetCDF to 4.6.15
  • Update to SQL Server 8.2.2.jre8 driver
  • Upgrade SnakeYAML to 1.26
  • Upgrade to JTS Topology Suite 1.17.1
  • Upgrade to sqlite-jdbc 3.31.1
  • Upgrade to jgridshift 1.3
  • Upgrade to commons-beanutils from 1.9.2 to 1.9.4
Please note if you have made use of the JSR-385 units library change your imports from "import tec.uom.se.*"  to "import tech.units.indriya.*". For additional information on upgrading your application see our User Manual "upgrading" page.

Improvements and Fixes

Public service announcement:
  • The imagemosaic-jdbc module (storing rasters in the database) does not have an active developer and has been downgraded to unsupported status.
  • The unmaintained ogr-bridj module has been removed.
  • GeoTools code of conduct pledge, following OSGeo policy.
From our issue tracker release-notes:
  • Ensure PostGIS DataStore respects force2D hint, applying ST_Force2D function to allow rendering of 3D Geometry
  • Address GeoPackage data store aggregates performance regression introduced when adding temporal support
  • Updates to MapBox Style Specification in GeoTools User Manual, now linked to by the GeoServer extension documentation to avoid duplication.
  • Image mosaic configuration now checks suggested image format will work, and makes a note of the format used for subsequent harvesting.
  • Preventing several failures during image mosaic harvesting encountered when working with multiple files in different coordinate reference systems.
  • Improve GeoJSONDataStore parameter checks when working with a provided URL.
  • New array function to allow literal array creation
  • Add support for restricting an attribute to a fixed set of valid values
  • Rendering speed improved with MemoryFilterOptimizer converting slow OR expressions into faster IN functions when possible.
  • Fix for SAP-HANA-datastore when working with views and no SRID found
  • PostGIS datastore option to simplify using ST_SimplifyPreserveTopology function
  • Shapefile now supports Charset coding in the DBF file header, so attribute names are no longer restricted to "iso-8859-1" names.
  • Ian Turton fixed a very frustrating Shapefile java.lang.NoSuchMethodError: java.nio.ByteBuffer.clear() error when working with Java 11
  • Change to user-agent "Geotools HTTP client" to restore programatic access OSM tiles
  • WMTS client support for longitude first coordinate reference systems
  • A fix for OracleDatastore allowing use of reserved words as column names
Many of these fixes were made after testing of our 24-RC release, we would like to thank Mark Prins and Jody Garnett for testing.

Research and Development Updates

Our "unsupported" module area is provided for the developer community to collaborate on research and development. We invite developers to contribute to the following work-in-progress:
  • A new DataStore to access ogc-api features
  • A new module supporting Esri compact cache TPK format
  • ElasticGeo continutes to improve with support for aliasing / short names,
  • For additional topics check out the "unsupported" page in our User guide.
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 24 Series

For more information see the release notes ( 24.0 | 24-RC ).

Friday, September 4, 2020

GeoTools 24-RC Release Candidate

The GeoTools team is pleased to share the availability GeoTools 24-RC :
This release candidate is also available from the OSGeo Maven Repository and is made in conjunction with GeoServer 2.18-RC and JTS 1.17.1.

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 right 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 24 later this month  

Visuals and Rendering

New capabilities have been added:
  • Add a ProjectionHandler for Homolosine
  • WrappingProjectionHandler can now handle a rotated polar fitted Coordinate System
  • Implement Polyconic spherical case (as used by US Census TIGER dataset)

Add functionality to GeoPackage with GeoPkgExtension

Read/write support of GeoPackage has been available as a GeoTools DataStore for some time, this release Andrea (GeoSolutions) has really upped our game defining a GeoPkgExtension for modules to hook in and provide additional functionality:
  • GeoPkgMetadataExtension: Supports the GeoPackage metadata extension, defined as a "registered extension" in the GeoPackage standard .
  • GeoPkgSchemaExtension: Allowing to declare more information about columns and eventually express constraints on them.
  • This approach is already opening up a host of possibilities, with GeoServer experimenting with including styling and semantic annotations.
The GeoPackage module is under active development with new support for Support compact enumerations, speed improvements when adding content, and

Mapbox Style Dynamic Expressions

The MBStyle Extension   continues to be improved with this release adding support for dynamic expressions.
Expressions allow Mapbox Style to dynamically style features using attribute values ( [ "get","attribute"] ), and respond to changes of scale ( ["zoom"] ), and make use of functions ( ["rgb",255,0,0] ):
{ "circle-radius": [
    "interpolate", ["linear"], ["zoom"],
    0, ["get", "rating"],
    10, ["*", 4, ["get", "rating"]]
  ]
}
The previous, now deprecated, function stop approach remains supported:
{ "circle-color": {
    "property": "temperature",
    "stops": [[0, 'blue'],[100, 'red']]
  }
}
Thanks to Jody (GeoCat) for this improvement offering greater Mapbox.GL parity. For more information see user guide on Expressions .

Updated Libraries

Each major release is an opportunity to update the libraries that GeoTools uses:
  • Bump no.ecc.java-vector-tiles to 1.3.10
  • Remove un-maintained ogr-bridj module
  • Update to JSR-385 units 2.0
  • Update to Oracle 19.7.0.0 JDBC driver (now available as maven dependency)
  • Upgrade FlatGeobuf library to 3.3.0
  • Upgrade from Apache Commons Collections v3 to Apache Commons Collections v4
  • Upgrade NetCDF to 4.6.15
  • Update to SQL Server 8.2.2.jre8 driver
  • Upgrade SnakeYAML to 1.26
  • Upgrade to JTS Topology Suite 1.17.1
  • Upgrade to sqlite-jdbc 3.31.1
  • Upgrade to jgridshift 1.3
Please note if you have made use of the JSR-385 units library change your imports from "import tec.uom.se.*"  to "import tech.units.indriya.*". For additional information on upgrading your application see our User Manual "upgrading" page.

Improvements and Fixes

Public service announcement:
  • The imagemosaic-jdbc module (storing rasters in the database) does not have an active developer and has been downgraded to unsupported status.
  • The unmaintained ogr-bridj module has been removed.
From our issue tracker release-notes:
  • New array function to allow literal array creation
  • Add support for restricting an attribute to a fixed set of valid values
  • Rendering speed improved with MemoryFilterOptimizer converting slow OR expressions into faster IN functions when possible.
  • Fix for SAP-HANA-datastore when working with views and no SRID found
  • PostGIS datastore option to simplify using ST_SimplifyPreserveTopology function
  • Shapefile now supports Charset coding in the DBF file header, so attribute names are no longer restricted to "iso-8859-1" names.
  • Ian Turton fixed a very frustrating Shapefile java.lang.NoSuchMethodError: java.nio.ByteBuffer.clear() error when working with Java 11
  • Change to user-agent "Geotools HTTP client" to restore programatic access OSM tiles
  • WMTS client support for longitude first coordinate reference systems
  • A fix for OracleDatastore allowing use of reserved words as column names

Research and Development Updates

Our "unsupported" module area is provided for the developer community to collaborate on research and development. We invite developers to contribute to the following work-in-progress:
  • A new DataStore to access ogc-api features
  • A new module supporting Esri compact cache TPK format
  • ElasticGeo continutes to improve with support for aliasing / short names,
  • For additional topics check out the "unsupported" page in our User guide.
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 24 Series

For more information see the release notes ( 24-RC ).

Tuesday, July 21, 2020

GeoTools 23.2 Released

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

We would like to thank everyone who contributed to this release. The large number of fixes this release are in part to participation in a bug fix sprint organized by GeoSolutions.

Improvements and Fixes

Public service announcement:
  • The ogr-bridj module has been removed, it had not been released for sometime.
From our issue tracker  release-notes :
  • New! ImageMosaic can now be used with SQL Server index
  • New! PostgreSQL translate jsonPointer function directly SQL
  • GeoPackage support for long integers, and raster tables with special characters in the name
  • Rendering fix when using high oversample combined with reprojection and rendering transformations
  • Rendering fix for composition when when of the layers has a null image
  • WMTS scale fix when requesting tiles
  • WKB FootprintLoader fix when being used by multiple concurrent requests
  • Fix wfs client to avoid duplicate SRS entries for WFS 2.0.0 Layer
  • Fix 16 bits colormap to RGB expansion results for better PNG24 bit encoding
  • WMTS client fix replacing {style} placeholder in getCapabilties document, also more forgiving when parsing ContactInfo and Internationalized Strings.
  • DecoratingFeatureCollection now delegates visitors to wrapped FeatureCollection
  • Shapefile write fails now handles MULTIPOLYGON EMPTY geometries
  • WrappingProjectionHandler::accumulate method fixed to support mixed Geometry typed GeometryCollection
  • WFS-NG GetFeature GET request URL encoding no longer assumed to be UTF-8.
  • Image mosaic STACK merge mode restored
  • Addressed a performance issue with the URL converter "data:" protocol converter accepts any schema without validation
  • Updated versions forEMF, PostgreSQL JDBC Driver, and MongoDB Driver.

About GeoTools 23 Series

GeoTools 23: For more information see the release notes ( 23.2 | 23.1 | 23.0 |  23-RC )

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)