Version: [4973] PlanX 4.10.1

## [4.10.1] - 2026-07-15

QGIS 4 / Qt6 readiness and a fully clean security scan. No functional
change.

### Changed
- **Scoped every Processing and geometry enum**
(`QgsProcessing.SourceType.*`, `QgsProcessingParameterNumber.Type.*`,
`QgsProcessingParameterField.DataType.*`, `QgsWkbTypes.Type.*` /
`.GeometryType.*`, `QgsFeatureSink.Flag.*`,
`QgsProcessingParameterDefinition.Flag.*`,
`QgsProcessingParameterFile.Behavior.*`,
`QgsVectorDataProvider.Capability.*`) across all algorithms so the
QGIS Hub Qt6 compatibility check reports zero issues. These resolve
and run identically on QGIS 3.28+ (Qt5) and QGIS 4.x (Qt6); minimum
QGIS is now **3.28**.
- **Fully "Validated" security scan**: the betweenness source-sampling
`random` call (Bandit B311) is replaced by a self-contained seeded
generator and the `.bandit` config was removed, so the Hub scan passes
with no developer-supplied suppressions. Sampling stays deterministic
per seed.

## [4.10.0] - 2026-07-15

Network resilience: Link Criticality tool.

### Added
- **Link Criticality (Network Robustness) algorithm**
(`planx:linkcriticality` / `algorithms/alg_link_criticality.py`):
ranks every street segment by how badly the network would suffer if it
were lost - the road-network vulnerability view (Network Robustness
Index; Scott et al. 2006 / Jenelius et al. 2006). Over a supplied
origin-destination demand (or all pairs among the origins), it routes
the intact network, removes each segment in turn and re-routes, and
reports the extra travel cost forced (`criticality` as a fraction of
baseline, `extra_cost` in absolute units), the demand it severs
(`n_disconnected`) and how many shortest paths run over it
(`used_by`); only segments carrying a shortest path are re-tested.
Outputs a per-segment criticality map to style for a
network-vulnerability picture.
- **Network robustness engine** (`engine/robustness.py`): pure NumPy
on the embedded predecessor-tracking Dijkstra; edge-removal is a CSR
mask so no external routing plugin or graph rebuild is needed.
- **New tool icon**: `tool_linkcriticality.png`.

### Improved
- OD Routes, OD Cost Matrix and Nearest Facility Allocation help now
spells out the cost-field contract: the router minimises the SUM of
the chosen network-layer column, so it must be an additive per-segment
quantity (a time or weighted length, never a speed - conversion
formula included); net_cost, CUTOFF and k-nearest inherit the column's
units; NULL costs read as 0 (free segments) and values must be
non-negative; Walking Slope Comfort's time_fwd_min is the ready-made
slope-aware cost; the detour ratio is a pure ratio only under the
default length cost.

yes

geo140195philo

2026-07-14T23:56:17.520051+00:00

3.28.0

4.99.0

None

no

Version management

Plugin details