Skip to content

Changelog

v1.10.2 (4/11/2025)

Fixed

  • Detect if to_geotiff is being targetted at a GDAL virtual file, in which case don't use a temporary directory.

v1.10.1 (4/11/2025)

Added

  • Added sizeof to the DataType enumeration to get number of bytes a given type requires.

v1.10.0 (1/11/2025)

Added

  • Support for reverse operators, so that now you can write 1 + layer just as you could write layer + 1, rather than having to cast left hand constants to yg.constant(1) + layer
  • Implemented common subexpression elimination to improve performance.

Changed

  • Area and Window @dataclass types are marked as frozen (i.e., are immutable).
  • Test elements for isin can now include sets, not just lists and tuples.

Fixed

  • Grow on Window class calculated updated y offset incorrectly, which impacted conv2d usage.

v1.9.5 (25/10/2025)

Added

  • Added from_array method to generate layer from numpy array directly.

v1.9.4 (23/10/2025)

Added

  • Exposed the callback parameter to to_geotiff.

v1.9.3 (10/10/2025)

Changed

  • Unit tests now covered by mypy checks
  • Exposed operator functions on top level, so you can do yg.where rather than yg.operators.where, ready for 2.0.

Fixed

  • Calling show with too little data gave a downsample skip of zero. Now don't downsample if data is too few.

v1.9.2 (9/10/2025)

Added

  • Added a show method to layers/expressions to render them using matplotlib.

v1.9.1 (1/10/2025)

Changed

  • Moved latlng_for_pixel and pixel_for_latlng to LayerMathMixin so they can be called on expressions as well as concrete layers.

v1.9.0 (26/9/2025)

Added

  • Added code of conduct to project.
  • Added the ability to call read_array on expressions (before you could only call it on layers).

Changed

  • The first argument of MapProjection, the string defining the projection used is now validated with the pyproj library, and can be in any from the pyproj from_string takes: Well Known Text (WKT) or "epsg:4326" or "esri:54009" etc. The name function still returns the WKT representation for backwards compatibility.
  • The functions pixel_from_latlng and latlng_from_pixel will work regardless of the underlying map projection.

v1.8.1 (25/9/2025)

Fixed

  • Fixed issue whereby calling set_window_for_intersection would fail if the pixel alignment on a vector layer was rounded unfortunately.

Changed

  • More documentation updates.

v1.8.0 (24/9/2025)

Added

  • Mkdocs based documentation.

Changed

  • Modernised type hints to use latest Python standards.

v1.7.9 (23/9/2025)

Fixed

  • Fix type inference for expressions so that to_geotiff selects correct GeoTIFF file type to store results as.

Changed

  • Improved typing of methods that take a filename to use both Path and str.

v1.7.8 (17/9/2025)

Added

  • Added marker for mypy that Yirgacheffe has type annotations

v1.7.7 (8/9/2025)

Added

  • Automatically set rlimit for NOFILES so that parallel operations of machines with many cores don't run out of file descriptors.

Removed

  • Removed internal classes LayerOperation, LayerMathMixin, and LayerConstant from public interface.

v1.7.6 (20/8/2025)

Fixed

  • Fixed issue whereby vector layers without explicit projection would use the abstract rather than concrete area value when generating a target raster.

Added

  • Added a core wrapper constant to save people using ConstantLayer explicitly
  • Added a core wrapper read_narrow_raster to save people using UniformAreaLayer explicitly

v1.7.5 (19/8/2025)

Changed

  • Minor improvements to GitHub Actions workflows

v1.7.4 (19/8/2025)

Fixed

  • Fixed bug whereby reads from within a single tile that has nodata values in a group layer used the wrong numpy call to check for nan.

Added

  • Added isnan operator.

v1.7.3 (18/8/2025)

Fixed

  • Fixed an issue introduced in 1.7.0 where find_intersection and find_union used the raw, non-pixel aligned area envelope.

v1.7.2 (14/8/2025)

Changed

  • Added the option to set parallelism=True rather than just a number when calling to_geotiff, allowing Yirgacheffe to select the number of CPU cores to use for parallel operations.

v1.7.1 (14/8/2025)

Fixed

  • Fixed an issue whereby if you used the MLX backend and called read_array the return value was sometimes an mlx array rather than a numpy array.

v1.7 (14/8/2025)

Added

  • Support the ability to create VectorLayers that don't have a pixel scale or projection added. These layers will have the correct pixel scale and projection calculated when calculations on layers are saved or aggregated based on the other raster layers used in the calculation.
  • Added MapProjection object to replace PixelScale objects and projection strings being separate parameters.