@dsh-gis/dsh-gis-purejs
v0.1.0
Published
Pure-JS GIS provider: reads GeoJSON, NDJSON, WKT and shapefile families without GDAL
Readme
@dsh-gis/dsh-gis-purejs
永远可用的那个 GIS provider:不需要任何外部工具,所以没装 GDAL、QGIS 的机器上插件照样有用。 它也是沙箱拒绝执行任何程序时仍然工作的那个 —— 读取全部在进程内完成。
dsh-gis 的一部分:给 DeepSeek Harness 的 GIS 能力插件(读空间数据、画地图卡片、查询、CRS 换算、OGC 服务)。
安装
通常是随 bundle 一起装进来的:
dsh plugin --profile <profile> add @dsh-gis/dsh-gis然后把 @dsh-gis/dsh-gis 加进 profile 的 dsh.profile.bundles 并重启 dsh。
单独挂这一行(而不是 bundle)时,才需要显式 add 这个包本身。
这一层做什么
- 注册纯 JS handler(geojson、ndjson、wkt、shapefile)与 opener,不依赖 GDAL 或 QGIS。
- 按扩展名认数据集:
.geojson/.json、.ndjson/.geojsonl/.jsonl、.wkt、.shp;.fgb与.pmtiles只做身份与字节路由,解析由浏览器按它们自带的索引完成。 - shapefile 家族身份:
.shp、.shx、.dbf、.prj、.cpg每个在场成员的 size 与 mtime 都进 id —— 只改.dbf或.prj也会得到新 id,不会拿旧 id 读出不同数据。 where只接受扁平的比较表达式加 AND/OR(引号里的关键字属于值本身),其它 SQL 拒绝并说明怎么写,而不是近似出一个错答案。- bbox 过滤只在数据集确知是 EPSG:4326 时执行;投影坐标或 CRS 未知时拒绝,避免拿度和米直接比较。
- 数据集按 (id, encoding) 缓存且容量有界,超出后按 LRU 淘汰最旧一条;一个文件读一次,编辑后 id 变化,因此没有陈旧缓存路径。
许可
MIT(见 LICENSE 与 THIRD_PARTY_NOTICES.md)。
