← 返回 Skills 市场
zhonghao1995

Swmm Network

作者 Zhonghao Zhang · GitHub ↗ · v0.7.3 · MIT-0
cross-platform ✓ 安全检测通过
47
总下载
0
收藏
0
当前安装
2
版本数
在 OpenClaw 中安装
/install swmm-network
功能描述
Build, validate, and route SWMM pipe-network models for urban drainage from raw municipal shapefiles or structured GIS/CAD exports. Use when handling junctio...
使用说明 (SKILL.md)

SWMM Network (pipe-system layer)

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

What this skill provides

  • A stable JSON schema for SWMM drainage-network structure.
  • Two complementary import paths:
    • Raw municipal shapefile path (prepare_storm_inputsinfer_outfallreorient_pipesimport_city_networkqa) for typical city storm-pipe + manhole layers that arrive as bare LineString shapefiles.
    • Structured asset-DB path (import_city_network directly, or import_network for a fully field-mapped GeoJSON/CSV) when the source already contains explicit from/to nodes, inverts, and diameters.
  • A subcatchment-to-network wiring step (assign_subcatchment_outlets) that ensures surface runoff actually enters the pipe network at a real upstream junction rather than dumping straight to the outfall.
  • Topology / hydraulic-attribute QA (qa).
  • Lightweight introspection (summary).
  • Export from network JSON to core SWMM INP sections (export_inp).

When to use this skill

Use when a SWMM model needs a real pipe network. Specifically:

  • You have municipal storm-pipe shapefile(s) and want them imported into a SWMM-ready network.json.
  • You have a structured CAD/asset-DB export (CSV / GeoJSON with explicit topology) and want the same.
  • You need to attach subcatchments to upstream junctions instead of letting them dump to the outfall.
  • You need to QA an existing network.json before handing it to swmm-builder.

Do not use this skill when the user only wants subcatchment delineation (use swmm-gis) or only wants to run a finished INP (use swmm-runner).

MCP tools

mcp/swmm-network/server.js exposes nine tools. Pick by what stage of the pipeline you're at.

Raw-shapefile preparation chain

  1. prepare_storm_inputs — clip raw \x3Cmunicipal>StormGravityMain.shp (+ optional \x3Cmunicipal>StormManhole.shp) to a basin polygon and emit pipes.geojson, manholes.geojson, and a filled mapping.json from a template.

    • Args: pipesShpPath, manholesShpPath (optional), basinClipGeojsonPath, mappingTemplatePath, outDir, caseName, sourceDescription, diameterPolicy (optional).
    • Use templates/city_mapping_raw_shapefile.template.json as the mapping template.
    • Does not pick the outfall, fix flow direction, or snap drifting endpoints (those are separate tools).
  2. snap_pipe_endpoints — cluster nearby pipe endpoints (sub-millimetre to centimetre vertex drift) and snap each cluster to its centroid so adjacent pipes share identical endpoint coordinates. Without this, import_city_network infers separate junctions for drifting endpoints and the network ends up as disconnected fragments. Also drops pipes whose two endpoints collapse into the same cluster (self-loop conduits that SWMM rejects).

    • Args: pipesGeojsonPath, toleranceM, outPath.
    • Reports pipes_in / pipes_out / pipes_dropped_as_self_loops / clusters_merged / max_snap_distance_m.
    • Reasonable starting tolerance: 0.5–3 m for municipal storm pipe layers. Inspect the report before raising further.
  3. infer_outfall — pick a single outfall point from pipe endpoints. Two modes:

    • endpoint_nearest_watercourse (default; needs a watercourse GeoJSON).
    • lowest_endpoint (uses min y, no watercourse needed; assumes a projected, north-positive CRS).
    • Args: pipesGeojsonPath, watercourseGeojsonPath (mode-dependent), mode, outPath.
    • Emits a single-Point outfalls.geojson (node_id=OUT1, type=FREE, invert_elev=0.0).
  4. reorient_pipes — BFS from outfall vertices to flip LineString direction so it matches flow direction. Real municipal pipes are usually digitised arbitrarily and would otherwise produce bogus from_node/to_node assignments.

    • Args: pipesGeojsonPath, outfallsGeojsonPath, outPath, coordinatePrecision (default 3).
    • Reports pipes_reversed, pipes_unreached so connectivity gaps are visible.

Network assembly

  1. import_city_network — main adapter. Takes the prepared pipes+outfalls geojsons (or any structured pipe table) plus a mapping.json and emits network.json with inferred junctions if needed.

    • Args: pipesCsvPath OR pipesGeojsonPath, outfallsCsvPath OR outfallsGeojsonPath, optional junctions, mappingPath, outputPath.
    • For mapping.json: see templates/README.md (raw-shapefile vs structured-export shapes).
  2. import_network — older field-mapped import for GeoJSON/CSV when topology and inverts are explicit per row. Prefer import_city_network for new work.

Subcatchment wiring (REQUIRED for the pipe network to actually carry water)

  1. assign_subcatchment_outlets — rewrite the outlet column of a subcatchments CSV so each subcatchment drains into a real upstream node (not the literal outfall). Without this step the pipe network sits idle in the SWMM model.
    • Args: subcatchmentsCsvIn, subcatchmentsGeojson, outCsv, mode.
    • Modes:
      • nearest_junction (default; needs networkJsonPath)
      • nearest_catch_basin (needs candidatesGeojsonPath + candidatesIdField)
      • manual_lookup (needs lookupCsvPath with columns subcatchment_id,outlet_node_id)

QA + export

  1. qa — run topology + required-attribute checks on a network.json. Args: networkJsonPath. Returns a structured QA report (warnings include no_outfall_path, missing inverts, etc.).

  2. export_inp — render a network.json to SWMM INP sections (junctions/outfalls/conduits/xsections/coordinates). Args: networkJsonPath. Used internally by swmm-builder; rarely called directly by an agent.

  3. summary — quick counts (junctions, outfalls, conduits, total length, system_layers, dual-system-ready flag). Args: networkJsonPath. For diagnostics.

Recommended orchestration

For a raw municipal shapefile dataset, the canonical chain is:

prepare_storm_inputs       → pipes.geojson + manholes.geojson + mapping.json
snap_pipe_endpoints        → pipes_snapped.geojson  (heal vertex drift; also drops self-loop pipes)
infer_outfall              → outfalls.geojson
reorient_pipes             → pipes_oriented.geojson
import_city_network        → network.json
qa                         → ok / warnings
assign_subcatchment_outlets → subcatchments_routed.csv  (required if subcatchments came from swmm-gis basin_shp_to_subcatchments)
   ↓
hand off to swmm-builder.build_inp

For a structured CAD export with explicit from/to nodes, skip prepare_storm_inputs/infer_outfall/reorient_pipes and call import_city_network directly with the CSVs.

Templates and examples

  • templates/city_mapping_raw_shapefile.template.json — fully-specified mapping for raw LineString-only pipe shapefiles. The adapter infers junctions from endpoints. Used by the prepare_storm_inputs chain.
  • templates/README.md — decision walkthrough between the two mapping shapes.
  • examples/city-dual-system/mapping.json — fully-specified mapping for structured exports with explicit from/to/x/y/invert columns.
  • examples/import-mapping.json + examples/import-junctions.geojson etc. — example inputs for the older import_network path.

Scripts (Python implementations behind the MCP tools)

  • scripts/prepare_storm_inputs.py — backs prepare_storm_inputs.
  • scripts/infer_outfall.py — backs infer_outfall.
  • scripts/reorient_pipes.py — backs reorient_pipes.
  • scripts/city_network_adapter.py — backs import_city_network.
  • scripts/network_import.py — backs import_network.
  • scripts/assign_subcatchment_outlets.py — backs assign_subcatchment_outlets.
  • scripts/network_qa.py — backs qa.
  • scripts/network_to_inp.py — backs export_inp.
  • scripts/minimal_stub_network.py — emits a 1-junction + 1-outfall stub network.json from a subcatchment shapefile that carries OUTLET/X/Y attrs. Use only for real-data smoke tests when no pipe-network geometry exists yet; the resulting network must not be treated as a calibrated drainage system.
  • scripts/schema/network_model.schema.json — stable schema target.

Conventions

  • Prefer explicit, machine-readable JSON in/out.
  • Keep node/link IDs unique and stable; the adapter generates J_AUTO_\x3Cx>p\x3Cy> IDs for inferred junctions.
  • MVP assumes gravity-network basics first (no pumps/weirs/orifices).
  • Dual-system-ready currently means representation and QA metadata, not fully coupled 1D/2D hydraulics.
  • All polygon area / distance calculations assume a projected CRS — the tools error early if a geographic CRS is supplied.

Known limitations

  • Pipe inverts default to 0.0 m when not provided. A DEM-based invert inference tool is open as BACKLOG.md F12.
  • infer_outfall always emits exactly one outfall (OUT1). Multi-outfall networks need a follow-up tool.
  • snap_pipe_endpoints only heals vertex drift, not physically missing pipes. If a basin clip cuts out a trunk sewer that connects two sub-graphs, the sub-graphs remain disconnected. A future "buffered basin clip" feature in prepare_storm_inputs would address this.
安全使用建议
This appears safe to install as a modeling/data-processing skill. Review the external Agentic SWMM project before installing its separate toolchain or MCP servers, and expect this skill to read municipal drainage/GIS files you point it at and create derived model files at the output paths you provide.
能力标签
crypto
能力评估
Purpose & Capability
The artifacts consistently support SWMM pipe-network import, validation, routing, and export. The metadata capability tag 'crypto' appears mismatched; the inspected artifacts do not implement cryptocurrency behavior.
Instruction Scope
Instructions are scoped to explicit SWMM/GIS tools and user-provided file paths, with no role-change text, hidden directives, credential handling, network callbacks, or unrelated local data access found.
Install Mechanism
The skill references installing the external Agentic SWMM project for the executable toolchain and MCP servers, but this artifact itself does not include automatic install commands, persistence hooks, or package-manager execution.
Credentials
The Python scripts read specified local shapefile, GeoJSON, CSV, JSON, and schema inputs and write specified output files; this is proportionate to the stated modeling purpose.
Persistence & Privilege
No persistence, privilege escalation, startup hooks, background workers, credential/session-store access, destructive cleanup, or broad filesystem indexing were found.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install swmm-network
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /swmm-network 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v0.7.3
Add project link back to the Agentic SWMM repository (install the project for the executable toolchain).
v0.7.2
Initial ClawHub release, aligned with agentic-swmm-workflow v0.7.2.
元数据
Slug swmm-network
版本 0.7.3
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 2
常见问题

Swmm Network 是什么?

Build, validate, and route SWMM pipe-network models for urban drainage from raw municipal shapefiles or structured GIS/CAD exports. Use when handling junctio... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 47 次。

如何安装 Swmm Network?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install swmm-network」即可一键安装,无需额外配置。

Swmm Network 是免费的吗?

是的,Swmm Network 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Swmm Network 支持哪些平台?

Swmm Network 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Swmm Network?

由 Zhonghao Zhang(@zhonghao1995)开发并维护,当前版本 v0.7.3。

💬 留言讨论