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).