This high-level wrapper runs the core evacpath pipeline: read/project inputs,
create an evacuation grid, identify escape/safety points, build a road mask,
create a slope-based conductance surface, calculate minimum least-cost distance
to safety, and create evacuation-time polygons.
Usage
run_evacpath(
hazard_zone,
roads,
dem,
target_crs = NULL,
region_name = NULL,
escape_zone = NULL,
roads_for_escape = NULL,
escape_roads_inset_x_m = 0,
escape_roads_inset_y_m = 0,
road_aware_escape_zone = FALSE,
escape_zone_road_buffer_m = NULL,
escape_zone_crop_buffer_m = NULL,
study_area = NULL,
road_exclude = NULL,
grid_resolution = NULL,
grid_resolution_factor = 5,
road_buffer_m = 2,
escape_buffer_m = 5,
final_road_buffer_m = 3,
region_buffer_m = 5000,
dem_resolution = NULL,
max_origins = NULL,
max_destinations = NULL,
seed = 23401,
walking_speed_mps = 1.22,
lcp_cost_function = "tobler",
lcp_neighbours = 16,
lcp_crit_slope = 12,
lcp_max_slope = NULL,
lcp_args = list(),
clip_mode = c("hazard", "road_hazard", "hazard_plus_roads", "none"),
progress = FALSE,
progress_every = 1L,
lcp_check_locations = FALSE,
keep_routes = FALSE
)Arguments
- hazard_zone
Hazard/inundation zone as
SpatRaster,SpatVector, or path. This should usually be the land-only area where evacuation origins and final output surfaces are mapped.- roads
Road/pathway network as
SpatVectoror path.- dem
Elevation raster as
SpatRasteror path.- target_crs
Optional projected CRS in meters, for example
"EPSG:32748".- region_name
Optional region name stored in output polygons.
- escape_zone
Optional boundary zone used only to identify escape/safety points. For tsunami workflows, pass the land-inundation-plus-water zone from
prepare_tsunami_zones()here. IfNULL,hazard_zoneis used.- roads_for_escape
Optional road/pathway layer used only for escape-point detection. If
NULL,roadsis used. This is useful when the full road dataset extends beyond the reliable hazard-zone study extent.- escape_roads_inset_x_m
Optional x-direction inset applied to
roads_for_escapebefore escape-point detection. This prevents roads from intersecting artificial study-area extent boundaries.- escape_roads_inset_y_m
Optional y-direction inset applied to
roads_for_escapebefore escape-point detection.- road_aware_escape_zone
Logical. If
TRUE, bufferedroads_for_escapeare combined withescape_zonebefore escape points are generated. This preserves bridge, causeway, and walkway corridors over water that can be lost when the tsunami layer is split into land and water masks.- escape_zone_road_buffer_m
Road buffer used when
road_aware_escape_zone = TRUE.- escape_zone_crop_buffer_m
Additional buffer used when
road_aware_escape_zone = TRUE.- study_area
Optional local study area for limiting escape-point search.
- road_exclude
Optional list passed to
clean_roads().- grid_resolution
Evacuation-grid resolution. If
NULL, calculated fromterra::res(dem) * grid_resolution_factor.- grid_resolution_factor
Multiplier applied to DEM resolution when
grid_resolution = NULL.- road_buffer_m
Road buffer distance.
- escape_buffer_m
Escape-point buffer distance.
- final_road_buffer_m
Output clipping buffer around roads.
- region_buffer_m
Buffer around
study_areaused when finding escape points.- dem_resolution
Optional DEM resolution used before conductance creation.
- max_origins
Optional maximum number of road origin points.
- max_destinations
Optional maximum number of escape/safety destination points. This is useful for quick tests in regions where roads intersect the hazard boundary many times.
- seed
Random seed used when
max_originsormax_destinationsis supplied.- walking_speed_mps
Walking speed in meters per second. This controls conversion of modeled route distances into evacuation times. It does not change route geometry.
- lcp_cost_function
Character string or function passed to
leastcostpath::create_slope_cs(). This changes conductance and may change route geometry.- lcp_neighbours
Neighbourhood passed to
leastcostpath::create_slope_cs(). Use4,8,16,32,48, or a custom matrix accepted byleastcostpath.- lcp_crit_slope
Numeric critical slope passed to
leastcostpath::create_slope_cs().- lcp_max_slope
Optional numeric maximum traversable slope passed to
leastcostpath::create_slope_cs().- lcp_args
Named list of additional arguments passed to
leastcostpath::create_slope_cs(), such asexaggeration. Explicitlcp_*arguments take precedence over duplicate entries in this list.- clip_mode
Output clipping mode. The default
"hazard"creates a continuous time-grid polygon surface clipped to the land-only hazard zone. Use"road_hazard"for the older road-buffer-limited output,"hazard_plus_roads"to retain both, or"none"for unclipped Voronoi polygons.- progress
Logical. Print progress while running least-cost paths.
- progress_every
Integer. Print progress every
norigins whenprogress = TRUE.- lcp_check_locations
Logical passed to
leastcostpath::create_lcp(). Default isFALSEfor speed after projection/cropping checks.- keep_routes
Logical. If
TRUE, retain the selected least-cost route for each reachable origin inresult$routes. The default isFALSEto avoid the additional memory cost.
Details
For tsunami applications, hazard_zone and escape_zone should often be
different. Use a land-only hazard_zone for origins and output mapping, but
use a water-combined escape_zone for escape-point detection so the coastline
is not treated as an artificial safety boundary. The helper
prepare_tsunami_zones() creates both objects.
Examples
dem <- terra::rast(nrows = 7, ncols = 7, xmin = 0, xmax = 7, ymin = 0, ymax = 7,
vals = 1, crs = "EPSG:3857")
hazard_raster <- terra::crop(dem, terra::ext(1, 6, 1, 6))
hazard <- terra::as.polygons(hazard_raster, dissolve = TRUE)
roads <- terra::vect(matrix(c(0, 3.5, 7, 3.5), ncol = 2, byrow = TRUE),
type = "lines", crs = "EPSG:3857")
result <- run_evacpath(
hazard_zone = hazard,
roads = roads,
dem = dem,
grid_resolution = 1,
road_buffer_m = 0.2,
escape_buffer_m = 0.3,
final_road_buffer_m = 0.2,
max_origins = 2,
max_destinations = 2,
seed = 1
)
#> calculating slope...
#> Applying tobler cost function
#> 1 least-cost paths could not be calculated from origin to destination as these share the same location
result
#> <evacpath_result>
#> Outputs:
#> - hazard_zone (land-only output/origin zone)
#> - escape_zone (base escape zone)
#> - escape_boundary_zone (road-aware/inset-adjusted boundary used for escape points)
#> - roads_for_escape
#> - evac_grid
#> - escape_points
#> - road_points
#> - distance_points
#> - evac_polygons / time_grid
