GeoTrellis 0.9 Released

GeoTrellis 0.9 Released

After several release candidates and getting the hang of a new review and release process as part of GeoTrellis’ journey to be a LocationTech-incubated project, we’re proud to announce that GeoTrellis 0.9 – codenamed “Avalon” – is officially released!

We’re excited to celebrate the fact that GeoTrellis 0.9 has more contributions from unique committers than any previous GeoTrellis release.  ejc123 has continued as a committer to the project since the release of 0.8.2, providing bug fixes and operation upgrades in this release; ameetkini, from DigitalGlobe, has been making contributions to GeoTrellis particularly in the form of integrating Apache Spark for fast batch processing of large raster data on clusters; and wzjchen and Markko have joined the project as part of the UCOSP program, contributing several new geoprocessing operations during their semester. It is awesome to see this growth in the GeoTrellis community and we only hope it continues!

At the technical level, GeoTrellis 0.9 is a substantial release with a number of improvements, all of which are detailed in the extensive release notes as well as an Azavea Labs post.  As an overview though, we’ll go over some of the highlights here.

Probably the most significant change in GeoTrellis 0.9 is a thorough refactor of the API.  In GeoTrellis 0.8 and earlier, users would manually create their own geoprocessing operations, and pass raster datasets as arguments to those operations.  The new paradigm in GeoTrellis 0.9 is to have objects called “DataSources” that represent the source of raster data.  The geoprocessing operations that transform or combine that data are methods off of these “DataSource” objects.  These methods are not stateful; that is to say, geoprocessing methods return new DataSource objects as they are called.  These and other API changes mean that any code written for GeoTrellis 0.8 or earlier will probably be very broken.  Let us know on the mailing list or in #geotrellis on freenode IRC if you’re upgrading and we’ll be happy to help you transition to 0.9.

File input/output has also been improved, sometimes by an order of magnitude or more, and running multiple operations over tiled data sets has been sped up as well.  The reason behind this is straightforward: previously, code to resample and crop rasters was run upon reading them from disk.  Now, this has been moved to the new “Warp” object – which can simultaneously crop the extent of and resample rasters, either when they are loaded from disk (like before) or if the raster is already in memory.

New geoprocessing operations have also been added – Ordinary Kriging Interpolation, Hydrology operations (Fill, Flow Accumulations, Flow Direction), and Inverse Distance Weighting Interpolation. Other operations have been revised as well.

Other improvements that you can read about in the notes or blog include a restructuring of the “geotrellis-server” project; clustering improvements; new macros for checking “NoData” raster values; and an implicit server object.

The team is happy to have “Avalon” out the door, but we’re not resting on our laurels, and plans have already been made for the next GeoTrellis release, version 0.10, to integrate Apache Spark and support for operating on data in the Hadoop Distributed File System (HDFS).

Are you curious about GeoTrellis or think you have a possible use case for the project?  Feel free to ping any of us in the #geotrellis IRC channel on Freenode, or send a note to the mailing list.  We’d love to hear your ideas.  In the meantime, meet our Facebook Open Academy Team of contributors and hear what they’ve been up to through this 4-minute video.  Finally, Rob and I are thrilled to welcome Eugene Cheipesh on the GeoTrellis team.