LocationTech GeoTrellis 3.0.0 Release Review

Type
Release
State
Successful
End Date of the Review Period

Reviews run for a minimum of one week. The outcome of the review is decided on this date. This is the last day to make comments or ask questions about this review.

Release

3.0.0

Description

Added

  • RasterSources API #3053
  • geotrellis.layer package to group functionality related to tiled layers.
    • SpatialKey, SpaceTimeKey, TemporalKey, Bounds, Boundable, EmptyBounds, KeyBounds, TemporalProjectedExtent, EmptyBoundsError, SpatialComponent, TemporalComponent, LayoutDefinition, LayoutScheme, LayoutLevel, LocalLayoutScheme, FloatingLayoutScheme, ZoomedLayoutScheme, MapKeyTransform, etc.
  • geotrellis.store package to group interfaces related to saving and reading tiled layers. Implementations save moved to:
    • geotrellis.store.accumulo
    • geotrellis.store.cassandra
    • geotrellis.store.hbase
    • geotrellis.store.hadoop
    • geotrellis.store.s3
  • geotrellis.vectortile.MVTFeature which properly conforms to the MVT 2.0 spec. Specifically, MVTFeatureadds id: Option[Long] property.
  • RangeReader SPI produced an instance of the reader from URI #2998
  • geotrellis.raster.mapalgebra.focal.ZFactor to improve slope calculations #3014
  • A sparseStitch method on geotrellis.layer.stitch.SpatialTileLayoutCollectionStitchMethods. Note that SpatialTileLayoutCollectionStitchMethods now has the additional constraint geotrellis.raster.prototype.TilePrototypeMethods on type V. This should be transparent for users of the geotrellis.raster.Tile and geotrellis.raster.MultibandTile types #3017
  • geotrellis.util.np package which contains linspace and percentilemethods that match NumPy functionality. An implicit class was also added to geotrellis.raster which provides the percentile method for geotrellis.raster.Tile #3067
  • Conversion from raster to features of cells #3117
  • io.circe JSON encoders and decoders for GeoTiffInfo and related classes #3128

Changed

  • geotrellis.raster.summary.polygonal.[Multi]TilePolygonalSummaryHandler replaced with geotrellis.raster.summary.polygonal.PolygonalSummary. Users should expect to implement concrete subclasses of geotrellis.raster.summary.GridVisitor and pass those to the new polygonalSummary methods. There are a number of default implementations provided for simple operations in geotrellis.raster.summary.visitors
  • Polygonal summaries on raster RDDs of RDD[(SpatialKey, T <: Grid[Int])] with Metadata[TileLayerMetadata[SpatialKey]] can now be performed with far less boilerplate using the same visitor pattern as the new raster polygonal summary API. See RDDPolygonalSummary.scala for additional details.
  • geotrellis.raster.Grid.dimensions is now Dimensions[N] instead of (N, N) #3124
  • GeoTiffInfo moved out of GeoTiffReader into containing package #3128
  • Replaced use of internal Mergable trait with cats' Semigroup
  • The slope focal method now requires a ZFactor instance.
  • Use the AWS S3 SDK v2 instead of v1 #2911.
  • The implicit/package structure of the geotrellis.raster package has changed such that it's now possible to import almost all features/extensions with import geotrellis.raster._ #2891
  • geotrellis.pro4j.WKT object conversion methods to and from EPSG codes have changed. All now return Options rather than silently unwrap. Methods that convert from EPSG code to WKT string are now prefixed consistently with fromEpsg and methods that convert from WKT string to EPSG code are now prefixed consistently with toEpsg.
  • geotrellis.util.CRS.fromWKT now returns Option[CRS] instead of CRS after silently unwrapping an optional internally
  • The geotrellis.vectortile.{Layer, VectorTile} interfaces now uses MVTFeature instead of geotrellis.vector.Feature.
  • Change from scala-logging to log4s #3116
  • Update dependencies #2904.
  • Update dependencies #3053.
  • Bump ScalaPB version up with some API enhancements #2898.
  • Artifacts in Viewshed have been addressed, the pixels/meter calculation has also been improved #2917.
  • Fix map{X|Y}ToGrid function behavior that could give a bit incorrect results #2953.
  • Fix COG layer update bug related to COGLayerMetadata zoom ranges ordering #2922.
  • Use original ZoomRanges on COG layer update #2956.
  • ArrayTile equality will now check the cols, rows, and cellType of the two tiles #2991.
  • Fix incorrect Deflate compressor usage in GeoTiff reading #2997.
  • Refactor IO thread pool usage #3007.
  • S3RangeReader will now optionally read the HEADER of an object #3025.
  • FileRangeReaderProvider can now handle more types of URIs #3034.
  • Bump proj4 version to fix multiple performance issues #3039.
  • Fix HttpRangeReader swallows 404 error #3073
  • Add a ToSpatial function for the collections API #3082.
  • Fix TIFFTagsReader to skip unsupported tags #3088.
  • reprojectExtentAsPolygon should be more deterministic #3083.
  • AmazonS3URI.getKey now returns an empty string instead of null if no key was provided #3096.
  • Improved handling of null prefix for S3AttributeStore. Prefer use of S3AttributeStore.apply to take advantage of this improved handling #3096.
  • Fix Tiled TIFF BitCellType Segments conversion #3102
  • Updated computeResolution in IterativeCostDistance to match Iterative Viewshed #3106

Removed

  • Scala wrappers of JTS Geometry in geotrellis.vector #2932
  • geotrellis.etl package has been removed. The code has been archived at https://github.com/geotrellis/spark-etl #2969.
  • The S3Client wrapper that was used to support AWS SDK v1 has been removed in favor of directly using AWS SDK S3Client #2911.
  • geotrellis.s3-testkit has been removed; testing now depends on an external min.io server which mocks the S3 API. #2911.
  • geotrellis.slick has been removed. Slick support will now reside in geotrellis-contrib #2902.
Conforms To UI/UX Guidelines
Not verified