dsh-geo-toolkit: GIS/CAD Map Reading and Spatial Analysis Toolkit for DSH

前言

在 DeepSeek Harness(DSH)里做规划、测绘或管线类任务时,智能体往往需要先看 DXF/DWG 图层结构、再查实体或矢量属性,最后出一张带版式的分析图,而不是通用 CAD 预览。若在插件里调用 GDAL 或外部转换器,DSH 沙箱常会拒绝 spawn 子进程(EPERM),QGIS 的 qgis_process 同样不可用。运维部维护的 dsh-geo-toolkit(GitHub:fengxiforcy/dsh-geo-toolkit)把读图、DWG 转 DXF、版式出图和 GIS 汇总/缓冲/叠加收进同一套 DSH 插件,解析与空间运算以纯 JavaScript 为主,DWG 转换走 WebAssembly 的 dwgdxf。下面介绍它的定位、工具清单、安装方式与典型用法。

这是什么

dsh-geo-toolkit 是 DSH 工作流类插件:面向 GIS + CAD 的数据操作与分析图,不做总平深化或效果图,也不追求「通用 DXF 渲染器」——几何与文字够读图、够出分析图即可。社区目录分类为「工作流」;仓库许可证为 MIT,当前 package 版本为 0.1.0(以仓库 package.json 为准)。插件在 当前 DSH 进程权限 下运行,安装前建议自行查看源码与许可证。

核心功能:11 个工具

工具通过 DSH 暴露给智能体调用,职责如下(依赖列与 README 一致):

工具 做什么 依赖
geo_dxf_info DXF 概览:图层、实体类型分布、块定义、包围盒、单位推断 纯 JS
geo_dxf_query 按图层 / 类型 / 文字关键字 / 范围找实体 纯 JS
geo_dwg_convert DWG → DXF(R13–R2018) dwgdxf(WASM)
geo_map_export DXF → 带版式的分析图(SVG/PNG/JPG/PDF/PSD,A0–A4,72–600dpi) 纯 JS(resvg 光栅化)
geo_style_scan 读 PSD 版式:文字层级 / 区域 / 生成 style 草稿 ag-psd
geo_gis_read 读矢量(SHP / GeoJSON / KML):要素、字段、范围、坐标系、面积/长度合计 纯 JS
geo_gis_query 属性条件 + 范围矩形筛选,返回命中数与面积/长度合计 纯 JS
geo_gis_summary 按字段分组汇总:每类要素数 / 面积 / 长度 / 占比 纯 JS
geo_gis_buffer 缓冲:点/线精确(圆角带),面近似外扩;输出 GeoJSON polygon-clipping(vendor)
geo_gis_overlay 图层叠加:intersect / union / difference,输出 GeoJSON 与面积 polygon-clipping(vendor)
geo_selfcheck 自检:依赖 / 解析 / 版式 / 五格式输出 / GIS 读查与空间运算 / 错误路径 —

CAD 侧要点

  • 单位:插件不信 $INSUNITS;geo_dxf_info 按图形跨度推断单位并标注置信度,坐标从不缩放。
  • DWG:仅支持 R13–R2018;更老或更新版本会失败,需 CAD 另存 DXF。
  • 出图:内容与版式分离;内置 planning-a1 等 JSON 版式,也可用 geo_style_scan 从 PSD 抽草稿,或复制 styles/planning-a1.json 改数值。PNG/JPG/PDF/PSD 光栅化在 worker 线程(workers/map-worker.js)执行,主进程 RSS 超 1500MB 会拒绝任务。

GIS 侧要点(纯 JS,无 GDAL)

沙箱内无法 spawn,故 SHP+DBF+PRJ、GeoJSON、KML 均为自研解析;FileGDB 不支持(需 DSH 外手工处理)。

  • 属性过滤支持 eq/ne/gt/gte/lt/lte/contains;范围矩形相交。
  • 面积单位为「坐标单位²」:经纬度得到的是度²,米制坐标才是平方米。
  • 空间运算:geo_gis_summary 精确分组;geo_gis_buffer 点线精确、面为近似外扩;geo_gis_overlay 对面做 intersect/union/difference(点线需先缓冲)。

组合示例(README):buffer 出 GeoJSON → overlay 裁切 → summary 汇总,可串成「道路两侧 10 米内、按用地性质统计面积」一类流程。

安装与启用

需 CHG(Change)环境。发布后从 npm 安装:

dsh plugin --profile desktop add dsh-geo-toolkit

本地开发可在 profile 的 package.json 增加 file:/path/to/dsh-geo-toolkit,并在 dsh.profile.bundles 追加 dsh-geo-toolkit,重启 DSH 生效。Node 引擎要求:^22.19 || >=24。

典型用法

DXF 出分析图

指定 DXF、版式名、标题与输出格式:

geo_map_export({ path: "a.dxf", style: "planning-a1", title: "...", subtitle: "03-4 ...", format: "png", dpi: 300 })

format 可为 svg、png、jpg、pdf、psd;psd 为分层输出,文字层带像素以便 Photoshop 直接可见。

从 PSD 读版式草稿

geo_style_scan({ path: "示例.psd", out: "styles/from-psd-x.json" })

输出画布尺寸、文字层级与区域分布,并写入可编辑的版式 JSON。多图同页版式当前引擎不支持,扫描结果会说明边界。

本地冒烟测试(不依赖 DSH)

node test/smoke.test.mjs

手测单个 DXF 解析:

node -e "import('./tools/dxf-info.js').then(m=>m.execute({path:'/path/to/a.dxf',includeText:true,explode:true})).then(r=>console.log(r.text))"

适用场景与注意

适合:在 DSH 智能体工作流里做 DXF/DWG 信息提取、DWG 转 DXF、规划类分析图导出、SHP/GeoJSON/KML 的读查汇总与面叠加分析。

务必注意:

  1. 插件以当前 dsh 进程权限运行;安装前应检查 GitHub 仓库 源码与 MIT 许可证。
  2. 大图 DXF(如 README 中 48MB、7108 实体)解析约 0.9s,展开块后内存约翻倍;工具超时 120s。文字超过 maxTexts(默认 400)会跳过并在结果中报数。
  3. 社区目录 skillhub.cn 插件页 与 DeepSeek / 幻方无官方从属关系,DSH 生态理念是「一切皆插件」,本文事实以仓库 README 为准。

结尾

dsh-geo-toolkit 把 CAD 读图、DWG 转换、版式分析图与纯 JS GIS 运算放进同一 DSH 插件,规避沙箱内子进程与 GDAL 的限制。需要试用或贡献代码时,可打开社区目录页与 GitHub 仓库对照工具表与已知限制章节。

  • 目录页:https://www.skillhub.cn/plugins/fengxiforcy/dsh-geo-toolkit
  • GitHub:https://github.com/fengxiforcy/dsh-geo-toolkit
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye