Skip to content

v.1.5.0

Latest

Choose a tag to compare

@julian-belina julian-belina released this 24 Jun 22:47
· 21 commits to dev since this release
7547cd4

GLAES 1.5.0

⚠️ Note: GLAES is now tested against Linux and Windows only. It can still be installed on macOS, but results may differ. Multiprocessing is only available on Linux.

✨ New Features

  • excludeRasterType, excludeVectorType, excludePrior (via PriorSet.regionIsOkay), shrinkAvailability, pruneIsolatedAreas, and distributeItems.
  • New checkMultiProcessingAvailability() helper automatically disables multiprocessing on Windows/macOS (raising a GeokitMultiProcessingWarning), since process spawning there cannot serialize GeoKit objects. On Linux, processes are forked and multiprocessing is used as requested.
  • New ExclusionCalculator properties:
    • percentAvailableAreaGeometries — the percent of the region covered by distributed area geometries (after distributeAreas() / distributeItems(asArea=True)), reflecting reductions from e.g. pruneIsolatedAreas().
    • regionArea — the total area of the region, in units of the SRS used to initialize the calculator.

♻️ Changes & Deprecations

  • SRS handling in the constructor was overhauled:
    • The default srs changed from 3035 to "LAEA" (a region-centered Lambert Azimuthal Equal Area projection).
    • The legacy "LAEA:<lat>,<lon>" / "LAEA"-prefixed string pattern is deprecated. Use 'LAEA' for a region-centered SRS, or pass a preprocessed LAEA SRS instance when a specific lon/lat center is required.
    • Integer EPSG codes are now properly resolved to SRS instances, and matching SRS is enforced when a geokit.RegionMask is passed as the region.
  • Improved error messages and added an atol tolerance for intermediate extent checks (with the same matrix enforced across the check).

🐛 Bug Fixes

  • #77 — Fixed a pixelRes/pixel-size bug; the example GeoTIFF is now written correctly.
  • #105 — Generate a proper SRS instance when an integer EPSG code is provided during save/export.
  • Fixed tuple/list handling of geometry vertices in excludePoints().

📦 Dependencies

  • Requires Python 3.10–3.13.
  • GeoKit >=1.7.1 (previously >=1.4.0).
  • Updated supported ranges: numpy >=1.26,<=2.5, pandas >=1.4,<=3.0.3, scipy >=1.10,<1.18, matplotlib <=3.10.5.
  • Removed the direct GDAL pin (now provided transitively via GeoKit) and removed unused dependencies (descartes, scikit-learn).

🏗️ Packaging & Build

  • Migrated from setup.py to pyproject.toml (hatchling build backend).
  • Added a conda recipe.yaml for building the package.
  • License/copyright information updated.

📚 Documentation

  • New MkDocs Material documentation site with ReadTheDocs config, auto-generated API reference, and getting-started / installation / further-reading / legal-notice pages.
  • Reworked example notebooks: new 00_basic_workflow_new.ipynb, a greatly expanded 01_Placement_algorithm.ipynb, and a new 02_extended_methods.ipynb, with bundled example data (WDPA, GWA wind speed, ERA5 wind direction, DEM tiles). Duplicate notebook copies were removed.
  • README overhaul: updated ICE-2 institute branding, Codecov badge, a development-installation guide (editable GeoKit + GLAES), and an OS-support disclaimer.

✅ CI & Testing

  • Switched to centralized, reusable CI workflows; added push / pull-request / manual dependency-range workflows and GitLab mirror workflows.
  • Enabled Codecov coverage reporting (badge added) and significantly expanded the test suite (~82% coverage), including new SRTM .hgt test data.
  • Testing restricted to Linux — Windows and macOS were removed from the test matrix.
  • Migrated linting/formatting to Ruff (0.14.1).