GeoVerse 空间应用工具链实践
摘要:做地图应用,需要处理的不只是地图展示。空间数据如何入库、国内底图如何对齐、要素如何编辑、室内路径如何计算,以及 AI 如何安全地调用应用能力,都是实际开发中的问题。本文介绍 GeoVerse Labs 的空间应用工具链:双引擎地图 SDK、协作编辑平台、Go 地图服务、GeoJSON 寻路库、Java 几何持久化扩展,以及 AI 运行时与布局 Skills,帮助你按需求选择合适的组件。
做一个园区或仓储地图系统,最初的需求可能只是“把建筑、道路和库位放到地图上”。
随着业务推进,你会遇到更多问题:前端的 Polygon 怎样保存到数据库?换成国内底图后,业务要素怎样保持对齐?库位只能从指定通道进入,寻路如何表达这个限制?多人同时改图,如何查看和恢复版本?接入 AI 后,它的修改能不能预览、撤销和追踪?
GeoVerse Labs 围绕这些问题构建了一套可组合的空间应用工具链。你可以从一个寻路库或一个 Java Starter 开始,也可以进一步了解地图编辑、协作和 AI 操作能力。
组织入口:GeoVerseLabs / GitHub
一、先看全貌:按业务需要选择组件
这套工具链覆盖空间数据持久化、数据服务、地图交互、协作编辑和 AI 操作。各组件的定位如下:
| 组件 | 主要解决的问题 | 当前开放方式 |
|---|---|---|
| mybatis-plus-geometry | Java / JTS 几何对象与数据库空间字段的映射,以及 GeoJSON 序列化 | Apache-2.0 开源 |
| GeoVerse Serve(geoverse-map-server) | 把数据库和文件发布成瓦片、要素查询与 MCP 服务 | MIT 开源 |
| GeoVerse SDK | OpenLayers / MapLibre 双引擎、国内坐标系适配、要素编辑、Vue / React 绑定 | 商业闭源,早期访问 |
| GeoVerse Live | 浏览器中的协作编辑、版本管理、专题制图和分享 | 私有项目,早期访问,可预约演示 |
| GeoVerse Line Finder | 在 GeoJSON 线网络上计算路径,处理吸附、权重和多楼层连接 | Apache-2.0 开源 |
| GeoVerse SAR | 为 UI、AI、Agent 和 MCP 统一提供应用能力调用与治理 | MIT 开源,技术预览 |
| GeoVerse Skills | 将设施布局需求转为确定性、可校验的空间生成任务 | 仓库为 BSL 1.1 源码可用;运行时采用商业许可 |
在一个园区应用里,Java 后端可以负责业务实体和几何数据读写,Serve 负责空间数据分发,SDK 负责地图交互,Live 提供协作工作台,Line Finder 处理路线计算,SAR 和 Skills 承接 AI 操作需求。这是组合思路,具体集成仍需按项目接口和部署条件完成。
这些组件可以按需选择。比如,已有地图页面只缺寻路,可以单独使用 Line Finder;已有 Spring Boot 项目只缺几何字段映射,可以先使用 Java Starter。
产品定位与开放方式可查看 组织说明 和 品牌资源页。
二、地图前端:双引擎、国内坐标系与编辑能力
对于使用 OpenLayers、MapLibre、Vue 或 React 的开发者,GeoVerse SDK 是工具链中的地图交互层。
它提供同一套地图 API 的 OpenLayers / MapLibre 两种实现,并在引擎内部处理 GCJ-02、BD-09 等国内底图坐标适配,对外业务坐标保持 WGS-84。这样,业务数据可以围绕统一的坐标契约组织,底图适配集中在地图引擎层处理。
SDK 同时提供不依赖具体地图库的要素编辑引擎,包含 25 个编辑命令、撤销与重做,以及三路合并同步,并提供官方 Vue / React 绑定。对于持续维护的地图业务,编辑状态能够独立于渲染实现,是一个值得关注的设计点。
使用国内底图时,仍需满足对应服务商的接入和授权要求。SDK 的坐标适配能力用于处理地图集成中的技术问题。
GeoVerse SDK 当前为商业闭源产品,处于早期访问阶段。可以先访问 SDK Playground 查看演示;具体接入与授权通过项目方联系确认。
三、Java 后端:让几何字段进入熟悉的开发流程
如果你的技术栈是 Spring Boot + MyBatis Plus,空间数据往往需要多处理一层:数据库里是 GEOMETRY,Java 中是 JTS 的 Point、LineString 或 Polygon,接口又需要输出 GeoJSON。
mybatis-plus-geometry 把这些转换与映射能力封装为 Spring Boot Starter,支持 MySQL 和 PostgreSQL / PostGIS,并提供几何字段注解与 Jackson GeoJSON 序列化、反序列化能力。
以仓库实体为例,字段可以直接使用 JTS 类型:
importcom.baomidou.mybatisplus.annotation.TableName;importio.github.geoverselabs.mybatis.geometry.annotation.PointTableField;importio.github.geoverselabs.mybatis.geometry.annotation.PolygonTableField;importorg.locationtech.jts.geom.Point;importorg.locationtech.jts.geom.Polygon;@TableName(value="warehouse",autoResultMap=true)publicclassWarehouse{privateLongid;privateStringname;@PointTableFieldprivatePointlocation;@PolygonTableFieldprivatePolygonboundary;// 按项目习惯补充 getter / setter}这里的autoResultMap = true用于配合字段 TypeHandler 完成结果映射。这个片段展示的是实体定义;完整接入还需要依赖、数据源、数据库空间字段和 Mapper 配置。
对于园区、仓储、资产位置和区域管理业务,这种封装可以减少重复的几何转换代码,让空间字段纳入现有实体与接口开发流程。
当前 README 要求 Java 17+、Spring Boot 2.7+ 或 3.x,以及 MyBatis Plus 3.5.6+。仓库已发布 v1.1.0,接入方式和兼容要求请以 项目 README 为准。
四、空间数据服务:用一个 Go 二进制连接数据库和地图
业务数据保存下来之后,还需要被地图客户端有效地读取。
GeoVerse Serve 的公开仓库是 geoverse-map-server。它采用纯 Go 实现,无 CGO,以单二进制形式运行,支持 PostGIS、MySQL、PMTiles、MBTiles、GeoJSON 和 GeoPackage 等数据源。
对外接口包括 MVT 矢量瓦片、XYZ / WMTS、TileJSON、OGC API – Features,以及可选的 MCP 端点。内置 WebUI 可以配置数据源、测试连接并热加载配置,还提供缓存、健康检查和运行指标。
例如,地图前端可以通过 TileJSON 接入图层:
// 前提:Serve 已启动,并注册了名为 cities 的矢量图层。// map 是已创建的 MapLibre 地图实例。map.addSource('cities',{type:'vector',url:'http://localhost:8080/tiles/cities.json',});map.addLayer({id:'cities',type:'circle',source:'cities','source-layer':'cities',});如果使用 AI 客户端,也可以通过 MCP 发现图层、查询要素。配置相应网络和算法后,服务还提供最短路径、等时圈、轨迹匹配和 DBSCAN 聚类的 HTTP 与 MCP 入口。
对于希望自行部署空间数据服务的团队,这个项目提供了一个可阅读、可修改的实现入口。不同数据源的切片和查询能力存在差异,选型时可以结合 README 和自己的数据验证。
五、路径规划:把业务约束带进 GeoJSON 寻路
地图上连接起终点,只是路线需求的一部分。实际业务还会涉及单向通道、入口限制、多楼层连接和断开的路网。
GeoVerse Line Finder 是一个零运行时依赖的 TypeScript 寻路库,支持浏览器、Web Worker 和 Node.js,可在 GeoJSON 的 LineString / MultiLineString 网络上计算路线。
它提供 A*、Dijkstra 和可扩展的算法入口,并支持起终点吸附、多途经点、自定义方向与代价、多楼层电梯或楼梯连接,以及拓扑诊断。
这里的一个实用设计是区分“接入约束”和“路线偏好”。比如,某个库位只能从指定通道进入,可以通过要素或分组约束限制吸附位置;不同通道的行走时间或通行成本,则通过权重表达。
下面用一条人为构造的 L 形线网络,演示最小调用:
npminstallgeoverse-line-finder@0.3.0import{LineFinder,toLineString}from'geoverse-line-finder';constroads={type:'FeatureCollection',features:[{type:'Feature',properties:{name:'演示通道'},geometry:{type:'LineString',coordinates:[[116.397,39.908],[116.400,39.908],[116.400,39.910],],},}],};constfinder=newLineFinder(roads);constroute=finder.route([[116.397,39.908],[116.400,39.910],]);if(route.ok){console.log('沿路网距离(米):',route.distance);console.log('路线 GeoJSON:',toLineString(route));}else{console.warn(route.reason,route.message);}坐标顺序为[经度, 纬度]。这个例子只演示 API,真实寻路还需要你提供道路或室内通道数据,并表达连通关系、通行方向和楼层连接。多途经点按输入顺序经过;配送点的访问顺序优化需要另外设计。
你也可以直接打开 Line Finder 在线示例,查看吸附、多楼层和拓扑诊断。当前公开发布版本为 v0.3.0。
六、协作与 AI:让操作进入可管理的工作流
GeoVerse Live:协作式地理数据编辑平台
如果业务需要的是供团队使用的完整工作台,可以了解 GeoVerse Live。
根据公开产品手册,Live 在 SDK 之上提供要素编辑、版本历史与回滚、专题制图、实时协作、要素评论、AI 助手,以及免登录分享和嵌入能力,并支持私有化部署。
![外链图片转存失败,源站可能有防盗链机制,建议
图:公开产品手册中的 GeoVerse Live 工作台。示例数据来自 Natural Earth;底图署名以图中标注为准。
对于 AI 修改,手册明确说明:操作先落在本地会话中,可以撤销,点击“提交”后才保存。这个交互让用户能够检查修改,再决定是否写入。
Live 当前为私有项目,处于早期访问阶段。完整功能和演示申请可查看 产品手册。
GeoVerse SAR:为多种操作入口提供统一运行时
GeoVerse SAR 关注应用能力如何被 UI、AI 工具调用、自治 Agent 和 MCP 客户端共同使用。
其设计让不同入口经过同一个能力调用链,统一进行权限检查、参数校验、执行和事件处理,并提供差异预览、审计和撤销能力。多个步骤还可以组成一个整体撤销单元。
对于准备把 AI 接入业务应用的开发者,这提供了一个值得研究的架构方向:将应用已有能力整理为可发现、可验证的调用契约,再让模型通过这些能力操作应用状态。
SAR 当前采用 MIT 许可,但属于技术预览,尚未发布 npm 包,也不提供生产支持。空间适配部分依赖 GeoVerse SDK 访问权限;完整 CI 验证仍有依赖条件。建议先阅读架构与源码,按自己的项目做验证。
GeoVerse Skills:把布局描述变成确定性生成请求
GeoVerse Skills 当前公开的核心能力是generate-region-layout,面向货架、地堆位、停车位、展位和工作单元等重复空间布局。
它把边界、尺寸、排布、排除区和编号要求整理为结构化请求,再由布局引擎生成与校验结果。同一请求和同一引擎版本应得到一致的布局与摘要,方便复查和比较。
例如,“在指定矩形内布置停车位,避开入口,按行编号”,需要进一步明确尺寸和单位、间距、排除区及编号方向,再执行生成。AI 可以帮助整理需求,几何生成与校验由确定性的工具完成。
这里要区分两层许可:Skills 仓库为 BSL 1.1 源码可用,具有使用条件;配套的@geoverse/layout-*npm 运行时为商业许可,提供评估使用。实际采用时请分别查看仓库与运行时的授权条款。
七、从哪里开始,取决于你当前的需求
| 你的需求 | 建议先看 |
|---|---|
| 已有地图,需要在自己的线网络上寻路 | Line Finder 仓库与在线示例 |
| Java 实体要读写 Point、Polygon 等空间字段 | mybatis-plus-geometry README |
| 想自行部署数据库或文件的瓦片与要素服务 | GeoVerse Serve README 与部署文档 |
| 需要国内底图、双引擎和要素编辑 | SDK Playground 与早期访问说明 |
| 团队需要共同维护地图,并管理版本和分享 | GeoVerse Live 产品手册 |
| 想研究 AI 如何操作应用状态 | SAR 架构文档与源码 |
| 想生成规则明确的重复空间布局 | Skills 文档及运行时许可 |
欢迎从一个与你当前需求最接近的组件开始尝试。使用中遇到的数据、接口或兼容问题,可以在对应仓库提交 Issue,附上脱敏后的最小数据和复现步骤;也欢迎通过 Star 关注后续更新。
SDK 早期访问、Live 演示和私有化部署合作,可联系组织主页公开邮箱:libra.liuyb@gmail.com。
- GitHub 组织主页
- 中文产品介绍
- SDK 在线演示
- Line Finder 在线示例
- GeoVerse Live 产品手册