Install
openclaw skills install swmm-paramsDeterministic mapping from land use and soil texture to SWMM runoff/subarea and Green-Ampt infiltration parameters. Use when generating first-pass subcatchment parameter tables for swmm-builder.
openclaw skills install swmm-paramsPart of Agentic SWMM — install the project first for the executable toolchain (aiswmm CLI, SWMM solver, MCP servers).
[SUBCATCHMENTS] + [SUBAREAS] defaults[INFILTRATION] (Green-Ampt) defaultsscripts/landuse_to_swmm_params.py
subcatchment_id + landuse_class to runoff/subarea parametersscripts/soil_to_greenampt.py
subcatchment_id + soil_texture to Green-Ampt infiltration parametersscripts/merge_swmm_params.py
swmm-builderBy default, scripts read bundled lookup CSVs:
skills/swmm-params/references/landuse_class_to_subcatch_params.csvskills/swmm-params/references/soil_texture_to_greenampt.csvYou can override lookup paths with CLI flags.
Land use input CSV:
subcatchment_id, landuse_classSoil input CSV:
subcatchment_id, soil_textureExample files are provided under examples/.
Each mapper writes explicit JSON containing:
records (row-level audit trail)sections (SWMM-oriented lists keyed by subcatchment)unmatched_* lists (rows that used fallback)counts summaryThe merge script writes:
sections (subcatchments, subareas, infiltration)by_subcatchment (combined record per subcatchment ID)incomplete_ids (IDs missing one or more sections)All three scripts share these optional flags:
--strict — fail instead of using the DEFAULT fallback row when an input key is missing from the lookup table. Useful for auditable production runs where silent fallback would mask a data gap.landuse_to_swmm_params.py also accepts:
--subcatchment-column <col> — override the CSV column used as the subcatchment ID (default: subcatchment_id).--landuse-column <col> — override the CSV column used as the land use class (default: landuse_class).soil_to_greenampt.py also accepts:
--subcatchment-column <col> — override the CSV column used as the subcatchment ID (default: subcatchment_id).--soil-column <col> — override the CSV column used as the soil texture/type (default: soil_texture).MCP wrapper location:
mcp/swmm-params/server.jsExposed tools:
map_landuse (inputCsvPath, optional lookupCsvPath, outputPath)map_soil (inputCsvPath, optional lookupCsvPath, outputPath)merge_params (landuseJsonPath, soilJsonPath, outputPath)Quick start:
npm --prefix mcp/swmm-params install
npm --prefix mcp/swmm-params run start
DEFAULT for land use, - or DEFAULT for soil)..inp.python3 skills/swmm-params/scripts/landuse_to_swmm_params.py \
--input skills/swmm-params/examples/landuse_input.csv \
--output runs/swmm-params/example_landuse.json
python3 skills/swmm-params/scripts/soil_to_greenampt.py \
--input skills/swmm-params/examples/soil_input.csv \
--output runs/swmm-params/example_soil.json
python3 skills/swmm-params/scripts/merge_swmm_params.py \
--landuse-json runs/swmm-params/example_landuse.json \
--soil-json runs/swmm-params/example_soil.json \
--output runs/swmm-params/example_builder_params.json