360 Secure SkillHub
360 安全技能中心

Swmm Params

通过三个 Python 脚本,把土地利用类别与土壤质地按随附 CSV 查找表确定性映射为 SWMM 子汇水区、子区域及 Green-Ampt 下渗参数,并可合并为单一 JSON;支持自定义查找表路径、列名与 strict 模式,输出包含记录、未匹配项与计数。

zhonghao1995
zhonghao1995
热度 24.24
最近更新 2026-06-12 13:07:33
分类:效率依赖:代码执行 / 读写文件应用场景:数据处理 / 工作流 / 模板

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add swmm-params
Metadata
name
swmm-params
description
Deterministic 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.

SWMM Params (MVP mapping layer)

Part of Agentic SWMM — install the project first for the executable toolchain (aiswmm CLI, SWMM solver, MCP servers).

What this skill provides

  • Transparent CSV-to-JSON mapping for:
    • land use class -> SWMM [SUBCATCHMENTS] + [SUBAREAS] defaults
    • soil texture/type -> SWMM [INFILTRATION] (Green-Ampt) defaults
  • Deterministic, auditable outputs with explicit fallback usage and unmatched-key reporting.
  • Optional merge step that emits one builder-ready JSON artifact.

Scripts

  • scripts/landuse_to_swmm_params.py
    • maps subcatchment_id + landuse_class to runoff/subarea parameters
  • scripts/soil_to_greenampt.py
    • maps subcatchment_id + soil_texture to Green-Ampt infiltration parameters
  • scripts/merge_swmm_params.py
    • merges outputs from the two mapping scripts into one JSON package for future swmm-builder

Default lookup tables

By default, scripts read bundled lookup CSVs:

  • skills/swmm-params/references/landuse_class_to_subcatch_params.csv
  • skills/swmm-params/references/soil_texture_to_greenampt.csv

You can override lookup paths with CLI flags.

Minimal input format

Land use input CSV:

  • required columns: subcatchment_id, landuse_class

Soil input CSV:

  • required columns: subcatchment_id, soil_texture

Example files are provided under examples/.

Outputs

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 summary

The merge script writes:

  • sections (subcatchments, subareas, infiltration)
  • by_subcatchment (combined record per subcatchment ID)
  • incomplete_ids (IDs missing one or more sections)

CLI flags

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

MCP wrapper location:

  • mcp/swmm-params/server.js

Exposed 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

MVP limitations

  • Lookup mapping is key-based only (no spatial interpolation or fuzzy matching).
  • A fallback row is expected in lookup tables (DEFAULT for land use, - or DEFAULT for soil).
  • No unit conversion or calibration logic is included here.
  • This skill only maps parameters; it does not write a full SWMM .inp.

Example commands

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