Calculate Modified Two-Step Floating Catchment Area (M2SFCA) accessibility scores
Source:R/03-spax_e2sfca.R
spax_m2sfca.RdImplements the Modified Two-Step Floating Catchment Area (M2SFCA) method (Delamater, 2013). M2SFCA is identical to [spax_e2sfca()] in step 1, but in step 2 the supply-to-demand ratios are weighted by the **squared** distance decay. This discounts accessibility in sub-optimally configured systems – where demand and supply are both far apart yet still within the catchment – which standard 2SFCA/E2SFCA cannot distinguish.
Usage
spax_m2sfca(
demand,
supply,
distance,
decay_params = list(method = "gaussian", sigma = 30),
demand_normalize = "identity",
id_col = NULL,
supply_cols = NULL,
indicator_names = NULL,
snap = FALSE
)Arguments
- demand
SpatRaster representing spatial distribution of demand
- supply
vector, matrix, or data.frame containing supply capacity values
- distance
SpatRaster stack of travel times/distances to facilities
- decay_params
List of parameters for decay function:
method: "gaussian", "exponential", "power", or "binary"
sigma: decay parameter controlling the rate of distance decay
Additional parameters passed to custom decay functions
- demand_normalize
Character specifying normalization method:
"identity": No normalization (original weights)
"standard": Weights sum to 1 (prevents demand inflation)
"semi": Normalize only when sum > 1 (prevents deflation)
- id_col
Character; column name for facility IDs if supply is a data.frame
- supply_cols
Character vector; names of supply columns if supply is a data.frame
- indicator_names
Character vector; custom names for output accessibility layers
- snap
Logical; if TRUE enable fast computation mode (default = FALSE)
Details
Step 1 (unchanged from E2SFCA): \(R_j = S_j / \sum_i P_i W(d_{ij})\).
Step 2 (modified): \(A_i = \sum_j R_j \, W(d_{ij})^2\).
M2SFCA is not a separate engine here: it is the shared FCA recipe with the access-side kernel squared. It is exactly equivalent to `compute_fca(demand, supply, demand_kernel = W, access_kernel = W^2)`.