GeoTools

OSGeo

Showing posts with label release candidate. Show all posts
Showing posts with label release candidate. Show all posts

Monday, March 4, 2024

GeoTools 31-RC Release Candidate

 The GeoTools team is pleased share a release candidate  GeoTools 31-RC:

This release candidate is also available from the OSGeo Maven Repository and is made in conjunction with GeoServer 2.25-RC. The release was made by Jody Garnett (GeoCat).

Testing a Release Candidate is one of the most effective ways to help out the GeoTools team. Upgrade your project, try out the release candidate, and let us know you find anything. 

There are no special update instructions this release cycle, but we are looking forward to hearing from our community.

Release notes

See Release Notes from 31-RC.

Release notes

Bug

GEOT-7458 JDBCDataStore: Unique visitor not always compatible with sortBy

GEOT-7472 After the org.opengis package removal, gt-api jar is not included in bin download

GEOT-7475 Conversion of GeneralBounds to ReferencedEnvelope fails for envelopes wrapping the dateline

GEOT-7476 ColorMapBuilder should enable extended mode when necessary

GEOT-7477 DuplicatingStyleVisitory does not copy RasterSymbolizer vendor options

GEOT-7478 Add support for GDAL RasterAttributeTable in GeoTIFF, Image Mosaic, GDAL readers

GEOT-7485 ReferencedEnvelope.setFrameFromCenter(Point2D center, Point2D corner) returns wrong coordinates - zoomin/zoomout

GEOT-7486 CSS literal single space squashed to empty string

GEOT-7503 GeoTiffIIOMetadataDecoder doesn't support inf/-inf

GEOT-7504 MapContent.moveLayer() doesn't change the Layer's order in the MapLayerTable.

GEOT-7510 GridCoverage Rendering's equality check on CRSs is not recognizing equal ProjectedCRS.

GEOT-7522 NetCDFMosaicReaderTest failure

GEOT-7535 Per layer interpolation setting not honored with rendering transformation and oversampling

Improvement

GEOT-7411 App-schema performance improvement in setting attribute values

GEOT-7428 Support of jsonPointer function for Oracle

GEOT-7451 Upgrade org.json:json to 20230618

GEOT-7452 Remove deprecated constructors from WFSContentComplexFeatureCollection

GEOT-7453 Remove deprecated SimpleHTTPResponse

GEOT-7467 ESRI Shapefile read DBF-only data

GEOT-7471 WMTS Reader debug flag for 404 tiles

GEOT-7491 ShapeFileDataStore should use GeometryFactory of DataStore

GEOT-7498 Upgrade DB2 JDBC driver from 11.5.6.0 to 11.5.9.0

GEOT-7501 There is no way to serialise a ReferencedEnvelope that can be parsed back to a ReferencedEnvelope

GEOT-7502 FlatGeobuf DataStore missing startIndex optimization

GEOT-7508 Optimize execution of NearestVisitor in Vector Mosaic store

GEOT-7538 Use gt-http logging for request/response

New Feature

GEOT-7419 New function: lin (in function for list)

GEOT-7488 GDAL, GeoTIFF and ImageMosaic ignore nodata when it's NaN

Task

GEOT-7483 Update jai-ext to 1.1.25

GEOT-7529 Update Apache Commons-lang3 to version 3.14 for Java 17 and Java 21 support

Friday, September 22, 2023

GeoTools 30-RC released

  The GeoTools team is pleased to share the availability GeoTools 30-RC :

org.opengis package removal

The main novelty in this release is the renaming of all "org.opengis" packages into "org.geotools.api" ones, to satisfy a request coming from OGC members that manage the "GeoAPI" project, using the same package space.

While this is an extensive breakage, we have prepared migration scripts that can help automating the switch, and which have been used for migration of GeoWebCache and GeoServer, along with MapFish print and GeoFence, with only a small amount of manual changes left to make.  In particular, GeoServer was the only project requiring any manual intervention.

In addition to the package rename, we leveraged the occasion to perform some more API clean-ups, including:
  • The core data API has been moved from "org.geotools.data" to "org.geotools.api.data"
  • The ISO geometry interfaces, left without implementation for a few years, have been removed. The few bits that used them has been migrated to JTS geometries.
  • Most of the "org.geotools.metadata" package is gone, as these classes and interfaces had no usage in GeoTools, GeoWebCache or GeoServer.
  • Internationalized error message support has been removed.
  • "org.opengis.geometry.Envelope" has been renamed "org.geotools.api.geometry.Bounds" and some of the confusion related to the proliferation of envelope-related classes has been cleared.
The above-mentioned script is performing refactors to adapt downstream code for the above changes as well.
The detailed list of changes, as well as the migration scripts, can be found in the GeoTools upgrade guide.

Some downstreams projects also started adapting the script to other languages, this ticket contains an example for Scala, from the GeoMesa project.

We urge all users to test out the migration scripts as soon as possible and report eventual issues before 30.0 is released, roughly in two weeks from this announcement.

Support for planetary CRSs, EPSG assumption removal

The new gt-iau-wkt module provides support for planetary CRSs, sourced from the International Astronomical Union. This allows to manage GIS data over the Moon, Mars, or even the Sun, with well known, officially supported codes.

In addition to that, many bug fixes occurred in the management of CRSs and their text representations (plain codes, URL, URIs) so that the EPSG authority is no longer assumed to be the only possibility.
The code base has seen this assumption for twenty years long, and while we made a good effort to eliminate the assumption, it could be still lurking in some places. Please test and let us know.

Allow to exercise control over remote, user-provided graphics and marks 

Much of the code dealing with OGC protocols is designed to follow URLs, some of which might be originating from user requests or from remote server responses.

The new URLChecker interface, along with its associated SPI interface, allows to plug-in custom checks to confirm a particular URL should be followed. Currently checks are implemented for remote graphics and marks, with more checks to be implemented in the future.

All other changes


Bug

GEOT-6266 Generating GeoPackage fails when layer name has spaces or dashes

GEOT-7224 Error in pom <project> lines.

GEOT-7266 WMTSCapabilities throws NPE for missing title

GEOT-7267 GML encoding forces URL SRS syntax on one-dimensional CRS

GEOT-7313 gt-geobuf: Failed to decode a SimpleFeature with a property name of "geom"

GEOT-7318 Unit of measure not escaped in DWithin filter

GEOT-7324 NPE on WMTS single tile request on missing GetTile operation in capabilities

GEOT-7325 WMTS multi tile request is not compatible with RESTful servers

GEOT-7338 Child feature ClientProperties are duplicated on Complex features parent container elements from the child feature

GEOT-7344 Child feature ClientProperties are duplicated on no-GML XML element parent container from the child elements

GEOT-7357 Rendering problem with polygon marker fills

GEOT-7359 GeoTiffMetadata2CRSAdapter improperly parses custom CRS definitions

GEOT-7366 Document FilterToSQL is not thrad safe

GEOT-7383 Distance element of DWithin filter should have an attribute "uom"

GEOT-7386 Shape://dot is too small to see on screen

GEOT-7389 GeoTIFF writer does not dump custom CRSs correctly

GEOT-7390 Extend GML CRS encoding to support multiple authorities

GEOT-7392 ReprojectFeatureResult.getBounds() does not report target CRS

GEOT-7393 WFS multi-Feature collection encoding fails when collections don't share the same CRS

GEOT-7397 PostGIS online tests fail on recent postgresql due to double comparison issue

GEOT-7404 Add SQLite Connection Timeout in case of hung GeoPackage connections

GEOT-7442 Make ErrorProne run on Windows

GEOT-7444 HanaGeographyOnlineTest.testBounds is failing in CI

Improvement

GEOT-7352 Add false easting and northing support in Robinson projection

GEOT-7354 Add support for standard parallel in equirectangular projection

GEOT-7360 DWITHIN support for mongo DB

GEOT-7361 Support non EPSG authorities in DataUtilities type spec, and property data store

GEOT-7368 Expose IAU authority in both axis orders

GEOT-7387 Improve URL checking

GEOT-7398 Support other CRS authorities in PostGIS

GEOT-7413 Avoid needless type conversions in InterpolateFunction

GEOT-7414 Speed up style evaluation during rendering, by simplifying its expressions before execution

GEOT-7416 org.geotools.feature.NameImpl.compareTo creates garbage objects

GEOT-7418 Add a configuration parameter to the ElasticSearch plugin to support response greater than 100mb

GEOT-7421 Caching WKT parsing results

GEOT-7425 Add support for extended colorMap in CSS

GEOT-7431 Support custom HTTP headers for WFS-Client (and underlying HTTP-Client)

GEOT-7435 ESRI Shapefile read gzipped input files

New Feature

GEOT-6512 Control remote HTTP requests sent by GeoTools

GEOT-7287 Refactor to remove org.opengis interfaces

Task

GEOT-7317 Upgrade snakeyaml from 1.32 to to 2.0

GEOT-7336 Update to ErrorProne 2.18

GEOT-7341 Update Spotbugs to 4.7.3

GEOT-7347 Update PMD to version 6.55

GEOT-7349 Further support for Saxon

GEOT-7355 New CRS plugin providing IAU CRSs for planetary mapping

GEOT-7364 Bump sqlite-jdbc from 3.34.0 to 3.41.2.2

GEOT-7373 Bump hsqldb from 2.7.1 to 2.7.2

GEOT-7374 Upgrade Jackson to 2.15.2

GEOT-7375 Upgrade guava from 30.1.1 to 32.0.0

GEOT-7376 Upgrade postgresql from 42.4.3 to 42.6.0

GEOT-7378 Upgrade commons-lang3 from 3.8.1 to 3.12.0

GEOT-7379 Upgrade commons-io from 2.10.0 to 2.12.0

GEOT-7394 Upgrade httpclient from 4.5.13 to 4.5.14

GEOT-7396 Upgrade wiremock to 2.35.0

GEOT-7437 Avoid use of yield keyword for JDK 17 compatibility

GEOT-7440 Update maven plugin versions

GEOT-7443 Remove JDK 11 profile and rename associated JDK 11 Test

GEOT-7445 Revert maven javadoc plugin upgrade

Tuesday, September 14, 2021

GeoTools 26-RC Release Candidate

  The GeoTools team is pleased to share the availability GeoTools 26-RC 

This release candidate is also available from the OSGeo Maven Repository and is made in conjunction with GeoServer 2.20-RC and JTS 1.18.2.

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. 

Please test this release with your project and let us know of any regression before we release GeoTools 26 later this month.  

Upgrade

There is no specific incompatibilities noted for this release (see User Manual "upgrading" page):
  • Deprecated HTTPClient interfaces are now removed (previously these were deprecated after being relocated to a new package in the 25.x series)

Updated Libraries

Each major release is an opportunity to update the libraries that GeoTools uses: 
  • JTS 1.18.2
  • commons-io 2.10.0
  • Upgraded JDBC drivers
    • oracle ojdbc9 19.12.0.0
    • mysql-connector-java 8.0.26
    • postgresql 42.2.23
    • mysql-jdbc 9.4.0.jre8
    • db2 bcc 11.5.6.0
  • solr 8.9.0
  • httpclient 4.5.13
  • batik 1.14

Improvements and Fixes 

Public service announcement: 
  • remove unsupported epsg-oracle, georest, imagemosiac-jdbc, jdbc-ingres, gtopo30 modules
  • removed dependency on xpp3 (now use standard StAX API)
  • main is now the default branch
  • ongoing quality assurance improvements covering topics from refactoring complicated methods to catching accidentally committed System.out.println statements
From our issue tracker release-notes
  • Introduce vendor options for rules
  • A new vendor option used to mark individual rules, symbolizers, or feature type style elements to be ignored (when rendering Maps or Legends).
  • WPS 2.0 EMF model and xml binding configuration
  • GML support has improved for unsupported wfs-ng module, with a separate gt-gml module created for improvements including surface, multi curves, curved polygons and arcs with more than three control points
  • Krovak North Orientated, used for EPSG:5514
  • Improve shapefile quadtree build performance

About GeoTools 26 Series 

For more information see the release notes ( 26-RC ).
  • In addition to release notes above, see query for a summary of fixes unique to release-candidate

Thursday, March 4, 2021

GeoTools 25-RC Release Candidate

 The GeoTools team is pleased to share the availability GeoTools 25-RC 

This release candidate is also available from the OSGeo Maven Repository and is made in conjunction with GeoServer 2.19-RC and JTS 1.18.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. 

Please test this release with your project and let us know of any regression before we release GeoTools 25 later this month.  

Change DataStore Parameters Map<String,Serilizable> to Map<String,?>

This API change makes it easier to configure DataStore's with full objects (which may or may not be serializable):

Map<String, Object> connectionDetails = new HashMap<>();
connectionDetails.put("url", url );
DataStore dataStore = DataStoreFinder.getDataStore(map);

As shown above this change does not effect existing client code. If you implement your own DataStore please check out update instructions.

New gt-http library and HTTPClientFinder

We noticed that the various web clients (gt-wfs, gt-wms, gt-tile) all had different ways to change between the use of built-in Java URL or an alternative such as Apache HTTP Components implementation.
 
Hints hints = new Hints(Hints.HTTP_LOGGING, "True")
HTTPClient http = HTTPClientFinder.createClient(hints); 
HTTPResponse response = http.get( new URL("https://geotools.org") );

The new gt-http library module is available to integrators providing a single location to configure how the library interacts with web resources. The update instructions provide a table to guide migrating from deprecated implementations to the shared gt-http classes.

Extending use of Variable Arguments making the api easier to use 

An interesting update that simplifies the use of GeoTools, methods that previously worked with array can now be used more easily.

As an example Query.setPropertyNames( String ... propNames ) allows for:

Query q = new Query(tname("ft1"));
q.setPropertyNames("geom", "name");

Existing code that use a String[] array will continue to work just fine, see update instructions for more examples.

GeoPackage Improvements

Several geopackage improvements for this release:
  • Add support for GeoPackage sorting in GeoPackageProcessRequest
  • GeoPackage store fails to register two same named columns, in different tables, both using the schema extension
  • Improve GeoPackage array storage (as JSON structures)

JDBCDataStore Updates

One performance improvement for database use:
  • Native support for average and stddev aggregate functions in jdbc data stores
Updated jdbc drivers:
  • Oracle 19.10.0.0
  • PostgreSQL 42.2.19
  • sqlite-jdbc 3.34.0
  • SQL Server 8.4.1.jre8

Massive Code Cleanup

The GeoTools codebase is easier to work with due to ongoing quality assurance activities, code cleanup and additional "pmd" checks added to our build chain.

The PMD static code analyzer has a motto of "Don't shoot the messenger", what they did not warn us about is that PMD shoots first and shoots often:
  • Remove un-necessary casts from code
  • Remove explicit type when diamond operator can be used
  • Unchecked warnings cleanup, addressing all compiler warnings
  • Replace iterator loops with enhanced for loops
  • Avoid assertTrue for tests that can be expressed with dedicated assertions
  • Collapse catch statements with the same body in a multi-catch
  • Replace try/finally with try-with-resources
  • Remove usage of Vector/Hashtable, replace with ArrayList and HashMap
In each case the entire codebase has been cleaned up to address the concern raised, and then the rule added to our build chain so any future work is called out on poor behaviour. In many cases these checks help catch common errors improving library stability and the confidence of the development team.

All of the above checks are running in continous integration, but more importantly, in the QA build check running on each PR, keeping the code from regressions.

Thanks to Andrea, Ian and everyone involved for making the GeoTools library better.

Updated Libraries

Each major release is an opportunity to update the libraries that GeoTools uses: 
  • JTS 1.18.1
  • jai-ext to 1.1.19
  • commons-beanutils 1.9.4
  • Batik 1.13
  • Jackson 2 libraries 2.10.5 and 2.10.5.1
  • Apache HTTP components to 4.5.13
  • Guava to 30.1-jre
For additional information on upgrading your application see our User Manual "upgrading" page. 

Improvements and Fixes 

Public service announcement: 
  • ArcSDE DataStore has been retired due to lack of feedback and active maintainer
  • Validation extension has been retired as it has been unused for some time
From our issue tracker release-notes
  • Add new expression functions to support AND, &&, OR operators
  • Use faster JTS function for pole of inaccessibility
  • SimplifyingFilterVisitor does not account for null values when simplifying negations
  • Speed improvement relaxing FactoryRegistery synchronization
  • gt-renderer: Map rendering of numbers using scientific notation
  • gt-css: Styles don't change the size of a label unless `font-style` is set
  • gt-wfs-ng: WFS 2.0 GetFeature reponse parsing fails on "boundedBy"
  • gt-wmts: HTTP headers set for WMTS isn't used for GetCapabilities calls
  • gt-wmts: WMTSCoverageReader#getMap() in some cases throws IllegalArgumentException
  • gt-wmts: WMTS client code automatically uppercases key names in KVP requests which breaks non standard servers
  • gt-process: Add ability to produce contours from an irregular grid of points.

About GeoTools 25 Series 

For more information see the release notes ( 25-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 ).