前言¶
在 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 的读查汇总与面叠加分析。
务必注意:
- 插件以当前 dsh 进程权限运行;安装前应检查 GitHub 仓库 源码与 MIT 许可证。
- 大图 DXF(如 README 中 48MB、7108 实体)解析约 0.9s,展开块后内存约翻倍;工具超时 120s。文字超过
maxTexts(默认 400)会跳过并在结果中报数。 - 社区目录 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