GeoVerse Labs· 空间应用工具链· The spatial application toolchain

为中国坐标系而生的
Web 地图基础设施
Mapping infrastructure for the modern web, built for China's coordinate systems

从几何入库、瓦片发布,到双引擎渲染与编辑、多人协作平台和 AI 原生运行时——我们用一条可组合的工具链,把空间应用从数据库带到浏览器,再交给 AI。

From geometry persistence and tile serving to dual-engine rendering and editing, a collaborative editing platform and an AI-native runtime — one composable toolchain that takes spatial apps from the database to the browser, and hands them to AI.

  • OpenLayers 10
  • MapLibre GL 5
  • GCJ-02 / BD-09
  • PostGIS · MVT · OGC API
  • MCP · AI Agents
OpenLayers MapLibre GL A*
示意动画:同一张路网,左右两种渲染风格,拖动画面对比;寻路为实时 A* 计算,坐标读数为真实的 WGS-84 → GCJ-02 换算。Illustrative animation: one road network in two rendering styles — drag to compare. Routing is a live A* search; the readout is a real WGS-84 → GCJ-02 conversion.
7产品与开源项目,覆盖数据、服务、前端、AIproducts & open-source projects, data to AI
2渲染引擎,一套 APIrendering engines, one API
25编辑命令,内核不依赖任何地图库editing commands in a map-library-free core
13.5 万135k坐标的 OSM 路网,在浏览器里建图寻路OSM coordinates routed in the browser
425个 SAR 测试,无一依赖真实 LLMSAR tests, none needing a real LLM
1个纯 Go 二进制,发布瓦片与 OGC 服务pure-Go binary serving tiles & OGC APIs

01 · Platform

一条可组合的空间工具链One composable spatial toolchain

每一层都能单独使用,组合起来就是一整套空间应用。把鼠标移到右侧的连接关系上,看看它们怎么接在一起。

Every layer works on its own; together they form a complete spatial stack. Hover a relationship on the right to see how the pieces connect.

  • Live → SDKLive 的前端直接消费 GeoVerse SDK:同一个项目可在 OpenLayers 与 MapLibre 间切换,编辑与同步契约来自 editor-core。Live's web client is built on the SDK — each project switches between OpenLayers and MapLibre, and editing/sync contracts come from editor-core.
  • Live → SARSAR 内核嵌在浏览器里驱动 AI 助手:AI 的修改只落在本地会话,可撤销,提交由人决定。SAR's kernel runs in the browser behind Live's AI assistant — AI edits stay in the local session, undoable, until a human commits.
  • SAR → SDKSAR 的 engine-geo 零改动包装 @geoverse/editor-core,把编辑命令变成可审计的能力。SAR's engine-geo wraps @geoverse/editor-core unchanged, turning editing commands into auditable capabilities.
  • Serve → SDK / LiveServe 只通过协议(MVT、PMTiles、OGC API)被消费,零代码依赖;Live 的图层可一键发布到 Serve。Serve is consumed purely over protocols (MVT, PMTiles, OGC API) — no code coupling; Live layers publish to Serve in one click.
  • Live → mybatis-plus-geometryLive 后端用 mybatis-plus-geometry + PostGIS 存取要素几何。Live's backend persists feature geometry through mybatis-plus-geometry + PostGIS.
  • Line Finder · Skills寻路库与布局引擎都是可内嵌的确定性计算:浏览器、Worker、Node 或 Agent 工具里都能跑。The routing library and the layout engine are embeddable, deterministic computation — in the browser, a Worker, Node or an agent tool.

02 · Products

产品与项目Products & projects

核心 SDK 与协作平台以商业方式提供;生态需要的基础构件以开源或源码可见方式公开,独立于核心 SDK 发布。

The core SDK and the collaboration platform are commercial; the building blocks the ecosystem needs are open source or source-available, released separately from the SDK.

GeoVerse SDK

商业产品 · 早期访问Commercial · early access

一套地图 API,跑在 OpenLayers 或 MapLibre GL 任一引擎上。

One mapping API that runs on either OpenLayers or MapLibre GL.

  • 统一门面 createMap({ engine }),可按子路径锁定引擎、摇掉另一个;引擎独有能力走 getEngine() 逃生舱
  • 高德、百度等国内底图就地纠偏(GCJ-02 / BD-09),对外坐标恒为 WGS-84
  • 框架无关的编辑引擎:25 个编辑命令、撤销重做与宏撤销、开洞 / 切面 / 合并等拓扑工具、吸附辅助线、三路合并同步
  • Vue 与 React 官方绑定;8 个包,依赖方向由门禁强制
  • Unified facade createMap({ engine }); lock an engine by subpath import and tree-shake the other; engine-only features through the getEngine() escape hatch
  • Chinese basemaps (GCJ-02 / BD-09) corrected in place — your coordinates always stay WGS-84
  • Framework-agnostic editing engine: 25 commands, undo/redo and macro undo, holes / split / merge topology tools, snap guides, three-way-merge sync
  • Official Vue and React bindings; 8 packages with dependency direction enforced by lint gates

GeoVerse Live

私有产品 · 可预约演示Private product · demos on request

基于 GeoVerse SDK 的协作式地理数据编辑平台。

A collaborative geodata editing platform built on GeoVerse SDK.

  • 渲染引擎是项目的一个属性:OpenLayers ↔ MapLibre 一键切换,图层、样式与协作数据完全通用
  • 20+ 绘制与拓扑工具、逐版本历史与回滚,乐观锁冲突检测 + 字段级三路合并
  • 专题制图(自然断点 / 分位数 / 归一化 / 色觉友好色带)、实时协作与要素评论、AI 助手
  • 免登录分享与 iframe 嵌入(可加密传输);多租户 RBAC;Docker Compose 私有化部署
  • The rendering engine is a project property — switch OpenLayers ↔ MapLibre; layers, styles and collaboration data carry over
  • 20+ drawing and topology tools, per-version history and rollback, optimistic-lock conflict detection with field-level three-way merge
  • Thematic mapping (natural breaks, quantiles, normalisation, CVD-safe ramps), real-time co-editing with feature-anchored comments, an AI assistant
  • Login-free sharing and iframe embeds (with encrypted transport); multi-tenant RBAC; private deployment with Docker Compose

GeoVerse Serve

MITGo

轻量地理数据分发服务——单二进制、纯 Go、零外部运行时依赖。

A lightweight geodata server — a single, pure-Go binary with zero external runtime dependencies.

  • PostGIS(ST_AsMVT 下推)、MySQL 8 / MariaDB、PMTiles、MBTiles、GeoJSON、GeoPackage → MVT、WMTS、TileJSON、OGC API – Features
  • 内置数据源控制台:真实连接测试、配置原子写回与热加载,数据库凭据不回显
  • 两级缓存、ETag / 304、gzip、可选 API Key;-doctor 只读部署诊断
  • MCP 端点让 LLM 直接发现图层、查询要素;算法插件:最短路径、等时圈、路径匹配、DBSCAN
  • PostGIS (ST_AsMVT push-down), MySQL 8 / MariaDB, PMTiles, MBTiles, GeoJSON, GeoPackage → MVT, WMTS, TileJSON, OGC API – Features
  • Built-in data-source console: real connection tests, atomic config write-back with hot reload, credentials never echoed
  • Two-tier cache, ETag / 304, gzip, optional API keys; -doctor read-only deployment checks
  • An MCP endpoint lets LLMs discover layers and query features; algorithm plugins: shortest path, isochrones, map matching, DBSCAN

GeoVerse SAR

MIT技术预览Technical preview

AI-native 空间应用运行时:人点 UI、AI 调工具、Agent 自主执行、外部 MCP 客户端,走同一个内核。

An AI-native runtime for spatial apps: UI clicks, AI tool calls, autonomous agents and external MCP clients share one kernel.

  • 能力描述符就是工具定义:同一份投影同时驱动 UI 命令面板、AI 工具目录与 MCP tools/list
  • 一切操作走单一漏斗 dispatcher.invoke:权限、校验、审计、事务日志回放长在内核里
  • 领域状态撤销是一等公民:工作流合并成一次宏撤销;写操作可 dryRun 预览,交给人审批
  • 内核只依赖 zod、不认识"地图";自然语言不进内核——425 个测试无需真实 LLM
  • A capability descriptor is a tool definition — one projection feeds the UI command palette, the AI tool catalogue and MCP tools/list
  • Every operation goes through one funnel, dispatcher.invoke: permissions, validation, audit and journal replay live in the kernel
  • Domain-state undo is first class: workflows collapse into one macro undo; writes can dryRun for human approval
  • The kernel depends only on zod and doesn't know what a map is; natural language never enters it — 425 tests run without a real LLM

GeoVerse Line Finder

Apache-2.0npm 0.3.0TypeScript

零依赖 TypeScript 库:在 GeoJSON 线网络上求带权最短路。

A zero-dependency TypeScript library for weighted shortest paths on GeoJSON line networks.

  • A*(可选 ALT 地标加速)/ Dijkstra / 双向 Dijkstra 按名切换,也能注册自己的引擎
  • 起终点吸附到线段任意位置;候选约束 + 全程择优;多途经点、跳过或直线兜底的失败策略
  • 0.3.0:多楼层室内寻路(电梯 / 楼梯 / 扶梯)、按节点编号建拓扑,建图提速约 2 倍
  • 同一份 13.5 万坐标路网、300 次查询:306 ms,0 条非最短路;geojson-path-finder 需 11.6 s 且有 41 条非最短†
  • A* (optionally ALT-accelerated), Dijkstra and bidirectional Dijkstra, switchable by name — or register your own engine
  • Snap endpoints anywhere on a segment; constrained candidates with cost-optimal selection; multi-waypoint routes with skip / straight-line failure policies
  • 0.3.0: multi-level indoor routing (elevators, stairs, escalators), node-id topology, ~2× faster graph builds
  • Same 135k-coordinate network, 300 queries: 306 ms with 0 non-shortest routes; geojson-path-finder took 11.6 s and returned 41†

† 2026-09-11 基准,GPF large-network.json,300 对 × 5 轮取中位数;复现方法见仓库 docs/BENCHMARK.md。

† Benchmark of 2026-09-11 on GPF's large-network.json, 300 pairs × 5 rounds, median; reproduce via docs/BENCHMARK.md in the repo.

Line Finder playground: a route across Gothenburg on a 135,417-coordinate OSM road network, built in the browser

mybatis-plus-geometry

Apache-2.0Maven Central 1.0.1

Spring Boot starter,打通 MyBatis Plus 与 JTS 几何类型。

A Spring Boot starter bridging MyBatis Plus and JTS geometry types.

  • MySQL 8 与 PostgreSQL / PostGIS 自动识别,零配置
  • Point 到 GeometryCollection 共 8 类几何注解,WKB 自动转换
  • Jackson GeoJSON 序列化开箱即用,REST 接口直接吐 GeoJSON
  • Java 17+,Spring Boot 2.7+ / 3.x
  • Auto-detects MySQL 8 and PostgreSQL / PostGIS — zero configuration
  • Annotations for 8 geometry types from Point to GeometryCollection, WKB conversion built in
  • Jackson GeoJSON serialisation out of the box for REST APIs
  • Java 17+, Spring Boot 2.7+ / 3.x

GeoVerse Skills

BSL 1.1 · 源码可见BSL 1.1 · source-available

面向 AI Agent 的空间技能仓库,配套确定性布局引擎与 MCP App。

Spatial skills for AI agents, with a deterministic layout engine and an MCP App.

  • generate-region-layout:把设施网格 / 矩形与摆放、编号规则变成确定性、可校验的布局——货架、库位、车位、展位
  • 配套 npm 包 @geoverse/layout-engine 0.7 与 @geoverse/layout-mcp-app 0.5:交互地图卡片 + 离线 HTML 预览
  • 每个 Skill 带评测用例与安装自检;统一 CI 做结构校验与干净安装冒烟
  • generate-region-layout: turn facility grids or rectangles plus placement and numbering rules into deterministic, validated layouts — racks, bins, parking bays, booths
  • Backed by @geoverse/layout-engine 0.7 and @geoverse/layout-mcp-app 0.5 on npm: interactive map cards plus an offline HTML preview
  • Every skill ships evals and installation self-checks; one CI validates structure and runs clean-install smoke tests

03 · Live demos

现在就能打开的在线体验Live demos you can open right now

不用注册、不用安装。产品手册里是真实截图,两个 Playground 都是真实代码在你的浏览器里运行。

No sign-up, no install. The brochure shows real screenshots; both playgrounds run the real code in your browser.

04 · China's coordinate systems

同一个点,三套坐标One place, three sets of coordinates

国内图商的底图坐标经过国家规定的非线性偏移(GCJ-02),百度在此之上再加一层(BD-09)。偏移量随位置变化,通常在几百米——足以让一条路整体错开半个街区,又不至于离谱到让人立刻怀疑坐标系。

Chinese basemap providers shift coordinates with a mandated non-linear offset (GCJ-02); Baidu adds another layer on top (BD-09). The shift varies with location and is typically a few hundred metres — enough to move a street half a block, not enough to make anyone suspect the coordinate system.

GeoVerse 的做法:对外 API、数据库与 GeoJSON 一律 WGS-84;纠偏发生在引擎内部——OpenLayers 在投影层,MapLibre 在数据出入边界。两条路径,同一个对外契约。

How GeoVerse handles it: APIs, databases and GeoJSON are always WGS-84; correction happens inside the engine — at the projection layer in OpenLayers and at the data boundary in MapLibre. Two mechanisms, one public contract.

右侧换算在你的浏览器里实时计算(公开的 GCJ-02 / BD-09 近似算法),仅供理解偏移量级。

The conversion on the right runs live in your browser (the public GCJ-02 / BD-09 approximation) and is meant to show the magnitude of the offset.

05 · Film

52 秒,看完整条工具链The whole toolchain in 52 seconds

从一个坐标开始,到一条在浏览器里算出来的路线结束。网页版逐帧可拖动,适合在演讲和展台循环播放。

It starts with a single coordinate and ends with a route computed in the browser. The web version can be scrubbed frame by frame — good for talks and booth loops.

GeoVerse Labs film GeoVerse Labs · 20261080p · 52s · 中文字幕 / EnglishEnglish / 中文

06 · How we build

可证伪的工程纪律Engineering you can falsify

地图软件最危险的 bug 不报错,只是悄悄给出错的结果。所以我们把"怎么知道它是对的"放在和功能同样重要的位置。

The most dangerous mapping bugs don't throw — they quietly return the wrong answer. So "how do we know it's right" gets the same weight as the feature itself.

01

契约先于实现Contracts before implementations

坐标对外恒为 WGS-84;引擎独有能力不进统一接口;编辑内核的输入输出只有 GeoJSON,不知道地图库存在。

Coordinates are always WGS-84 at the boundary; engine-only features stay out of the shared interface; the editing core speaks only GeoJSON and never sees a map library.

02

门禁,而不是约定Gates, not conventions

依赖方向由 ESLint 门禁强制:editor-core 禁止 import 地图库,SAR 内核只能依赖 zod;跨入口一致性由测试钉死。

Dependency direction is enforced by lint gates: editor-core can't import a map library, SAR's kernel may only depend on zod, and cross-entry parity is pinned by tests.

03

四级状态口径Four-tier status wording

我们不说"做完了",而是说清楚做到了哪一级——不让一句"完成"掩盖后三级的缺失。

We don't say "done"; we say which tier — so one word can't hide what's missing from the next three.

implementedverified-in-clean-CIpublishedproduction-supported
04

拒绝"假绿"No false greens

每个验证都要回答:"如果没做对,它一定会失败吗?"WGS-84 底图全绿不代表纠偏正确;渲染问题回到真实浏览器,数据问题回到存储层核对。

Every check must answer: "if this were wrong, would it definitely fail?" Green on a WGS-84 basemap proves nothing about datum correction; rendering is verified in a real browser, data at the storage layer.

05

可复现的性能数字Reproducible numbers

基准取多轮中位数与区间,钉死对手版本,附复现命令;单轮测量不下结论,源码与构建产物不混比。

Benchmarks report medians with ranges over multiple rounds, pin competitor versions and ship a repro command; no conclusions from single runs, no source-vs-dist comparisons.

06

每个坑都沉淀成知识Every bug becomes knowledge

内部知识库 70 余篇知识笔记,其中 30 篇踩坑记录按"症状 → 真因 → 修法 → 复发防线"写成,并定期与代码对照防腐。

Our internal knowledge base holds 70+ notes, including 30 post-mortems written as symptom → root cause → fix → regression guard, and is re-verified against the code on a schedule.

07 · Open source

开源与源码可见Open source & source-available

欢迎 Issue 与 PR。每个仓库都有自己的贡献指南与安全策略。

Issues and PRs welcome. Each repository has its own contributing guide and security policy.

仓库Repository是什么What it is许可License获取Get it
geoverse-line-finder
TypeScript
GeoJSON 路网带权最短路,多楼层室内寻路Weighted shortest paths on GeoJSON networks, multi-level indoor routingApache-2.0pnpm add geoverse-line-finder
geoverse-map-server
Go
GeoVerse Serve:多数据源 → MVT / OGC / MCPGeoVerse Serve: many sources → MVT / OGC / MCPMITmake build
geoverse-sar
TypeScript
AI-native 空间应用运行时(技术预览,未发布 npm)AI-native spatial runtime (technical preview, not on npm yet)MIT从源码构建(geo 相关包需 GeoVerse SDK 访问权限)Build from source (geo packages need GeoVerse SDK access)
mybatis-plus-geometry
Java
MyBatis Plus ↔ JTS 几何,MySQL / PostGISMyBatis Plus ↔ JTS geometry for MySQL / PostGISApache-2.0io.github.geoverselabs:mybatis-plus-geometry-spring-boot-starter:1.0.1
geoverse-skills
Markdown · Node
AI Agent 空间技能(区域布局生成)Spatial skills for AI agents (region layout generation)BSL 1.1@geoverse/layout-mcp-app

08 · Changelog

近期动态Recent releases

聊聊你的空间应用Let's talk about your spatial app

GeoVerse SDK 与 GeoVerse Live 目前以早期访问与私有化部署的方式提供。告诉我们你的场景、数据规模与部署环境,我们会安排一次针对性的演示。

GeoVerse SDK and GeoVerse Live are available through early access and private deployment. Tell us about your use case, data volume and environment, and we'll set up a tailored demo.