GeoTools

OSGeo

Monday, May 21, 2018

GeoTools 19.1 Released

The GeoTools team is pleased to announce the release of GeoTools 19.1:
This release is the current stable release and as such users and downstream projects should consider moving from older releases to this one.

This release is made in conjunction with GeoServer 2.13 and GeoWebCache 1.13.


Highlights from our issue tracker release-notes:

Tasks and Improvements:
  • Move MongoDB unsupported module to plugins
  • Update MySql jdbc driver to version 5.1.46
Bug Fixes:
  • GeoTools wfs.xsd outdated, reports a LockFeature without AbstractQueryExpression as invalid
  • Minor coefficient error in Transverse Mercator inverse transform
  • Image mosaic initialization can stop abruptly if one of the granule acceptors throws an exception
  • WMS client may return an opaque image when cascading a transparent output from MapXTreme

See release notes for this and previous 19.x releases for more details (19.1 19.0 19-RC1 19-beta).

Wednesday, April 25, 2018

GeoTools 18.3 Released

The GeoTools team is pleased to announce the release of GeoTools 18.3:
Thanks to everyone who contributed to this release. This release is made in conjunction with GeoServer 2.12.3.

This release is a maintenance release providing bug fixes and security updates for production systems and is not recommended for new development.

Fixes includes:
  • Series of improvements to rendering stability including representation of polygons when zoomed out, preventing multiple threads from loading the same SVG
  • GML 3.2 output gains the GML2 ability limit the number of decimal places used
  • RasterZonalStatistics pixel count now includes pixels that are zero or negative
For more information see release notes (18.3 18.2 18.1 | 18.0 | 18-RC1).

Monday, March 19, 2018

GeoTools 19.0 released

The GeoTools team is pleased to announce the release of GeoTools 19.0:
This is the first release of the 19.x series, now marked as stable and deemed suitable for production systems, while 18.x switches to maintenance mode and 17.x gets out of support.

This release is made in conjunction with GeoServer 2.13. This release includes a two major changes, both related to Java 9 compatibility, and a significant set of new features and improvements.

FactorRegistry Refactoring

In JDK 9 javax.imageio.spi.ServiceRegistry verifies that it is extended by JDK-classes only. For GeoTools' org.geotools.factory.FactoryRegistry that means that an exception is thrown, thus crashing GeoTools. To fix this, it was necessary to reimplement the ServiceRegistry functionality that is needed by GeoTools in FactoryRegistry.

For most users, this should not require any changes to make your project compatible. However, if you are accessing the FactorRegistry directly, there are some API changes that you will need to handle. For more details, refer to the FactoryRegistry Refactoring for Java 9 Compatibility proposal.

Java 9 Compatibility

More generally, GeoTools as a whole has been updated to be able to run on Java 9.

If your project depends on GeoTools 19.x, and you want to use it with Java 9, you will need to add the following flags to your JVM runtime arguments:
--add-modules=java.xml.bind --add-modules=java.activation

These add-modules runtime arguments enable the JAXB and Activation modules to the Java Runtime.  The Java startup system has been changed, splitting the Java Runtime into modules for a smaller foot print. The jaxb and activation modules are no longer turned on by default.

The add-modules runtime argument is only used in Java 9. To allow your application to start in Java 8  or Java 9 include:
-XX:+IgnoreUnrecognizedVMOptions

GeoTools on Java 9 introduces a few functional changes:
  • XML pretty-print behaviour has changed, so that CDATA tags will now be on their own lines. These changes are only cosmetic - there are no functional changes to the XML. 
  • Certain math functions are more precise on Java 9. This can result differences in the last digit of double values between Java 8 and Java 9. In particular, this has been observed when dealing with reprojected coordinates.
  • Small changes in horizontal offset have been observed in labels following lines.

GeoPackage performance improvements

GeoPackage reading and rendering performance improved significantly, up to two times faster on large datasets full extractions and 50% faster on small bounding box searches, bringing GeoPackage on par with PostGIS. We also have a Google spreadsheet with more details.

Shapefile remains king of full dataset extractions and the fastest data source for pure spatial driven queries.

Support for more PostGIS data types


The PostGIS data store now has simple support for HStore and JSON columns. HStore is returned as a Map, while JSON is read as a String. In both cases no special query support has been added for those types (but we'd be very happy if someone would work, or sponsor, that functionality too).

Better label position control in map rendering

When setting maxDisplacement on point/polygons the renderer used to search in a circular area around the designated label point. The new displacementMode vendor option allows to control the positioning by specifying the preferred cardinal positions, as a comma separated list.


Shapefile now supporting all Java object types on write

Shapefile used to throw exceptions if unrecognized object types were fed to it (basically, anything but geometries, strings, numbers and dates). From now on it will write unrecognized objects as strings instead.

Assorted improvements

    A single bug fix was applied since 19-beta, fixing an issue with NetCDF data reading. See release notes for this and previous 19.x releases for more details (19.0 19-RC1 19-beta).

    Thursday, March 8, 2018

    GeoTools 19-RC1 Released

    The GeoTools team is pleased to announce the release of GeoTools 19-RC1:
    As a release-candidate, 19-RC1 is not intended for production systems, however the API is stable and we invite everyone to try upgrading their applications, report any issues, and help out with the final round of testing and fixing.

    This release is made in conjunction with GeoServer 2.13-RC1. This release includes a two major changes, both related to Java 9 compatibility, and a significant set of new features and improvements.

    FactorRegistry Refactoring

    In JDK 9 javax.imageio.spi.ServiceRegistry verifies that it is extended by JDK-classes only. For GeoTools' org.geotools.factory.FactoryRegistry that means that an exception is thrown, thus crashing GeoTools. To fix this, it was necessary to reimplement the ServiceRegistry functionality that is needed by GeoTools in FactoryRegistry.

    For most users, this should not require any changes to make your project compatible. However, if you are accessing the FactorRegistry directly, there are some API changes that you will need to handle. For more details, refer to the FactoryRegistry Refactoring for Java 9 Compatibility proposal.

    Java 9 Compatibility

    More generally, GeoTools as a whole has been updated to be able to run on Java 9.

    If your project depends on GeoTools 19.x, and you want to use it with Java 9, you will need to add the following flags to your JVM runtime arguments:
    --add-modules=java.xml.bind --add-modules=java.activation
    

    These add-modules runtime arguments enable the JAXB and Activation modules to the Java Runtime.  The Java startup system has been changed, splitting the Java Runtime into modules for a smaller foot print. The jaxb and activation modules are no longer turned on by default.

    The add-modules runtime argument is only used in Java 9. To allow your application to start in Java 8  or Java 9 include:
    -XX:+IgnoreUnrecognizedVMOptions
    

    GeoTools on Java 9 introduces a few functional changes:
    • XML pretty-print behaviour has changed, so that CDATA tags will now be on their own lines. These changes are only cosmetic - there are no functional changes to the XML. 
    • Certain math functions are more precise on Java 9. This can result differences in the last digit of double values between Java 8 and Java 9. In particular, this has been observed when dealing with reprojected coordinates.
    • Small changes in horizontal offset have been observed in labels following lines.

    GeoPackage performance improvements

    GeoPackage reading and rendering performance improved significantly, up to two times faster on large datasets full extractions and 50% faster on small bounding box searches, bringing GeoPackage on par with PostGIS. We also have a Google spreadsheet with more details.

    Shapefile remains king of full dataset extractions and the fastest data source for pure spatial driven queries.

    Support for more PostGIS data types


    The PostGIS data store now has simple support for HStore and JSON columns. HStore is returned as a Map, while JSON is read as a String. In both cases no special query support has been added for those types (but we'd be very happy if someone would work, or sponsor, that functionality too).

    Better label position control in map rendering

    When setting maxDisplacement on point/polygons the renderer used to search in a circular area around the designated label point. The new displacementMode vendor option allows to control the positioning by specifying the preferred cardinal positions, as a comma separated list.


    Shapefile now supporting all Java object types on write

    Shapefile used to throw exceptions if unrecognized object types were fed to it (basically, anything but geometries, strings, numbers and dates). From now on it will write unrecognized objects as strings instead.

    Assorted improvements

    No significant problems have been reported since our 19-beta release, for more information see the release notes (19-RC1 19-beta).


    The success of Open Source depends on you!

    GeoTools is released using an open source license, helping make you and your software projects a success. But this is only part of the story....

    GeoTools is also an open source community, and depends on your participation to both thrive as a project and to serve you well. As a community this is expressed as a social contract, or an expectation, that goes beyond the terms of our open source license:

    Open Source works, when you work: We invite members of the GeoTools community to help test this release candidate, now, before we seek wider distribution.

    We have a couple testing priorities where we specifically ask for help:
    • Java 9 / Java 18.3: The revised Java roadmap introduce significant changes and we would like to ask for your help testing in these environments.
    • Please try out GeoPackage and all the new features mentioned in this blog post
    More generally we ask you to upgrade to this release, and let us know how it went. We have a code freeze in effect, now is the time to review and catch any regressions as a team!

    Wednesday, February 21, 2018

    GeoTools 19-beta Released

    The GeoTools team is pleased to announce the release of GeoTools 19-beta:
    This release is also available from our Maven repository.
    This release is made in conjunction with GeoServer 2.13-beta.

    This release includes a two major changes, both related to Java 9 compatibility, and a significant set of new features and improvements.

    FactorRegistry Refactoring

    In JDK 9 javax.imageio.spi.ServiceRegistry verifies that it is extended by JDK-classes only. For GeoTools' org.geotools.factory.FactoryRegistry that means that an exception is thrown, thus crashing GeoTools. To fix this, it was necessary to reimplement the ServiceRegistry functionality that is needed by GeoTools in FactoryRegistry.

    For most users, this should not require any changes to make your project compatible. However, if you are accessing the FactorRegistry directly, there are some API changes that you will need to handle. For more details, refer to the FactoryRegistry Refactoring for Java 9 Compatibility proposal.


    Java 9 Compatibility

    More generally, GeoTools as a whole has been updated to be able to run on Java 9.
    If your project depends on GeoTools 19.x, and you want to use it with Java 9, you will need to add the following flags to your JVM runtime arguments:
    --add-modules=java.xml.bind --add-modules=java.activation
    
    This adds the JAXB and Activation modules to the Java Runtime (They are not included by default in Java 9). Strictly speaking, this is only required if your project depends upon certain GeoTools modules, such as gt-imagemosaic.
    Note that these arguments are not supported under Java 8. If you wish to retain compatibility with Java 8, also include:
    -XX:+IgnoreUnrecognizedVMOptions
    
    This tells the JVM to ignore options it doesn’t recognize, so Java 8 won’t throw an error.

    Also note that running GeoTools on Java 9 will introduce a few functional changes:
    • XML pretty-print behaviour has changed, so that CDATA tags will now be on their own lines. These changes are only cosmetic - there are no functional changes to the XML. 
    • Certain math functions are more precise on Java 9. This can result differences in the last digit of double values between Java 8 and Java 9. In particular, this has been observed when dealing with reprojected coordinates.
    • Small changes in horizontal offset have been observed in labels following lines. This may be OS-specific.

    GeoPackage performance improvements

    GeoPackage reading and rendering performance improved significantly, up to two times faster on large datasets full extractions and 50% faster on small bounding box searches, bringing GeoPackage on par with PostGIS. We also have a Google spreadsheet with more details.

    Shapefile remains king of full dataset extractions and the fastest data source for pure spatial driven queries.

    Support for more PostGIS data types

    The PostGIS data store now has simple support for HStore and JSON columns. HStore is returned as a Map, while JSON is read as a String. In both cases no special query support has been added for those types (but we'd be very happy if someone would work, or sponsor, that functionality too).

    Better label position control in map rendering

    When setting maxDisplacement on point/polygons the renderer used to search in a circular area around the designated label point.
    The new displacementMode vendor option allows to control the positioning by specifying the preferred cardinal positions, as a comma separated list.


    Shapefile now supporting all Java object types on write

    Shapefile used to throw exceptions if unrecognized object types were fed to it (basically, anything but geometries, strings, numbers and dates). From now on it will write unrecognized objects as strings instead.

    Assorted improvements

    Highlights from our issue tracker release-notes:
    • Upgrade JDom to version 2.0.6
    • Upgrade to EJML 0.32
    • Upgrade Apache Solar Java client to is last stable release
    • Expose GDAL ASRP/USRP format
    • GML 3.2 encoding misses mandatory gml:id on geometry elements - fast path
    • Cannot export to GeoPackage when GeoServer feature type has Boolean attribute
    • MongoDB support optional milliseconds in ISO8601 date/time string
    • Geometries used in expressions should be cloned during rendering to preserve their original coordinates
    • Improved NoData support in mosaics of NetCDF files
    • JDBCDataStore recognize the "in" function family (including in2, ..., in10) and encode those as native SQL whenever possible. Also, all Instant objects will now be encoded in SQL (before only the Date family was encoded properly).
    There is also a large set of bug fixes. For more information see the 19-beta release notes.

    Please test test test!!

    Java 9 (and the soon-to-be-released Java 10) introduce significant changes, so please test GeoTools on Java 9 if you are able. 
    Please also test GeoPackage and all the new features introduced in this release.

    Monday, February 19, 2018

    GeoTools 17.5 released

    The GeoTools team is pleased to announce the release of GeoTools 17.5:
    This release, which is also available from the GeoTools Maven repository, is made in conjunction with GeoServer 2.11.5.

    GeoTools 17.5 is the last maintenance release of the 17.x series, time to consider upgrading!
    The release mainly fixes bugs but also includes some enhancements: 
    • Allow group extraction in image mosaic regular expression based property collector
    • Allow overriding LabelCache in renderer
    • Allow MetaBufferEstimator to work against a specific feature (to calculate sizes based on attribute values)
    For more information please see the release notes (17.517.4 | 17.3 | 17.2 | 17.1 | 17.0 | 17-RC1 | 17-beta).

    About GeoTools 17

    • The wfs-ng module has now replaced gt-wfs.
    • The NetCDF module now uses NetCDF-Java 4.6.6.
    • Image processing provided by JAI-EXT 1.0.15.
    • YLSD module providing a plain-text representation of styling.

    Upgrading

    • The AbstractDataStore has finally been removed. Please transition any custom DataStore implementations to ContentDataStore (tutorial available).

    Tuesday, January 23, 2018

    GeoTools 18.2 Released

    The GeoTools team is pleased to announce the release of GeoTools 18.2:
    Thanks to everyone who contributed to this release. This release is made in conjunction with GeoServer 2.12.2.

    This release is the current stable release recommended for new development.

    Release highlights:
    • Image moasic fix for hetrogeneous mosaics crossing the dateline
    • streaming rendering fix to ensure that preparing geometry for display does not interact with geometry use for expressions
    • streaming renderer fix to ensure points with large mark size are not accidentally clipped when just off screen
    • Improvement to CSS styling allowing dynamic expressions and units to be used together.
    For more information see release notes (18.2 | 18.1 | 18.0 | 18-RC1).