Commit e373a99
committed
Add MCDA module for spatial multi-criteria decision analysis (#1030)
New xrspatial.mcda subpackage covering the four stages of raster MCDA:
Standardize (6 value functions):
linear, sigmoidal, gaussian, triangular, piecewise, categorical
Weight derivation:
AHP eigenvector method with consistency ratio, rank-order weighting
(ROC, rank sum, reciprocal of ranks)
Combination methods:
WLC, WPM, OWA, fuzzy overlay (AND/OR/sum/product/gamma), boolean overlay
Validation:
Constraint masking, one-at-a-time and Monte Carlo sensitivity analysis
All operations are element-wise or reductions across layers, so they work
on numpy, cupy, dask+numpy, and dask+cupy without ArrayTypeFunctionMapping
dispatch. No new dependencies.
148 tests covering correctness, edge cases (degenerate triangles, inf/NaN
propagation, single-criterion datasets, AHP validation, dask graph safety,
weight boundary clamping, MC reproducibility), and a full end-to-end
suitability workflow.
Includes docs reference page, README feature matrix section, and user
guide notebook (35_MCDA.ipynb).1 parent f9d1eb3 commit e373a99
File tree
12 files changed
+3367
-0
lines changed- docs/source/reference
- examples/user_guide
- xrspatial
- mcda
- tests
12 files changed
+3367
-0
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
441 | 441 | | |
442 | 442 | | |
443 | 443 | | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
444 | 461 | | |
445 | 462 | | |
446 | 463 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
15 | 15 | | |
16 | 16 | | |
17 | 17 | | |
| 18 | + | |
18 | 19 | | |
19 | 20 | | |
20 | 21 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
0 commit comments