{"name": "PlanX", "package_name": "planx", "version": "2.5.0", "experimental": false, "qgis_min": "3.22.0", "qgis_max": "4.99.0", "downloads": 126, "uploaded_by": "geo140195philo", "upload_datetime": "2026-06-11T10:33:55.950628", "changelog": "## [2.5.0] - 2026-06-11\r\n\r\nMicroclimate II + per-tool icons: three new tools \u2014 22 algorithms total.\r\n\r\n### Added\r\n- **Sun Hours (DSM)** (Microclimate): hours of direct sunlight per cell\r\n  over one full day in a single run \u2014 the day is swept at a configurable\r\n  interval (default 30 min), each step casts the DSM shadow mask with the\r\n  embedded NOAA sun position. Replaces the old \"run Shadow Casting in\r\n  Batch mode\" workaround. Right-to-light checks, courtyard/playground sun\r\n  audits; the log reports the site's potential daylight.\r\n- **Solar Irradiation (DSM)** (Microclimate): clear-sky daily global\r\n  irradiation per cell (kWh/m\u00b2) \u2014 ASHRAE-style beam (Masters 2004) blocked\r\n  by cast shadows + isotropic diffuse weighted per cell by the sky view\r\n  factor. Quick screening of roofs and open spaces for solar potential or\r\n  summer heat exposure; flat-ground reference reported for comparison.\r\n- **Heat Island Risk Grid** (Microclimate): vector UHI screening from the\r\n  layers every plan already has \u2014 building footprints (with optional\r\n  height field), green areas and water polygons. Per cell: built fraction,\r\n  area-weighted mean height, green/water fractions and a **fixed-scale\r\n  0\u2013100 risk score** (weights are parameters; the scale is set by the\r\n  weights, not stretched to the data, so scenarios stay comparable) with\r\n  Low/Moderate/High/Very High classes.\r\n- **Eigenvector centrality** in Network Centrality (Bonacich power\r\n  iteration on A + I \u2014 the shift makes it converge on bipartite street\r\n  graphs; max-normalized to 1), new `eigen` field on junction output.\r\n- **Population-weighted summary** in Multi-Amenity Access Score: optional\r\n  population field on origins reports total population, weighted mean\r\n  score, share with full access and share with no category reachable.\r\n- **Per-tool icons**: all 22 algorithms now carry their own meaningful\r\n  icon (colour-coded by group) in the Processing toolbox and the PlanX\r\n  Studio dock; the Plan Dashboard menu action got the report icon.\r\n  Generator: `scratch/make_planx_tool_icons.ps1` (GDI+, 256 px PNG).\r\n- `engine/solar.py`: `sun_hours`, `clear_sky_irradiance`,\r\n  `daily_irradiation`, `heat_risk_index`; `engine/centrality.py`:\r\n  `eigenvector` (all pure NumPy, unit-tested).\r\n\r\n### Fixed\r\n- Shadow casting could crash (negative-slice broadcast in the array\r\n  shifter) and wastefully over-scan at very low sun altitudes: shifts\r\n  beyond the raster now short-circuit and the sweep is capped at the\r\n  raster diagonal.\r\n\r\n### Tests\r\n- Engine suite 111 \u2192 131 checks; e2e harness 90 \u2192 109 assertions \u2014\r\n  verified on QGIS 3.44 LTR and QGIS 4.0.2 (including icon coverage).", "external_deps": null, "download_url": "https://plugins.qgis.org/plugins/planx/version/2.5.0/download/"}