dsh-geo-toolkit:DSH 下的 GIS/CAD 讀圖與空間分析工具集

前言

在 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
羽毛球分组比赛记分
小程序二维码

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

小夜