真实世界的社交地图:看看一个地方是如何建成的,并与身处其中的人聊聊它。
真实世界的可步行 3D 副本,由开放公共数据构建,并在所有查看它的人之间共享。可在浏览器、桌面端和 Android 上运行。免费、开源、可自托管。
公共基础设施
- 由各类登记册构建——建筑来自BAG和3DBAG,地面来自AHN,行道树、照明和铺装来自国家和市级对象登记册,PDOK航拍影像、实时公交。
- 每栋建筑都有一张卡片——建造年份、用途、单元数、建筑面积、状态、古迹名录、地址。走进去,它的各楼层都在那里。
- 它周围的世界——真实的太阳、真实的天气、步行、骑行或驾车路线规划,以及从门口到轨道的连续空间。
分享一个地方
- 在你所在之处交谈——虚拟形象、按距离限定的本地聊天、近距离语音、世界聊天、端到端加密的私聊。
- 指向它——一个链接即可在浏览器或应用中打开你的确切视角;保存的地点带有照片和地图标记。
- 在那里放置东西——放置并编写对象和 3D 模型的脚本,用 IFC 模型替换建筑,通过 HTTP API 导出和导入内容。
- 审核——屏蔽、举报和账户删除,在服务器端强制执行;一个用于账户和数据管线的 Web 控制台。
面向居民、社区、市政当局和政府,以及规划师和建筑师。
截图
![]() |
![]() |
| 运河环 | DUO 设计的环路隧道 |
![]() |
![]() |
| 中央车站和铁路站场 | 大市场广场和 Martinitoren |
![]() |
![]() |
| 格罗宁根论坛 | 建筑卡片:市政厅 |
![]() |
![]() |
| 3 km 外的格罗宁根 | 1.2 km 高处的城市 |
![]() |
![]() |
| 埃姆斯哈芬 | 从瓦登海看埃姆斯哈芬 |
![]() |
![]() |
| 在大市场广场会面 | 从轨道看地球 |
生成自cargo shots来自docs/shots.toml。
适用范围
地图、天空、天气、路线规划和共享世界:地球上任何地方。登记册细节(实测建筑及其记录、地形、街道对象、航拍照片、公交):荷兰,外加城市发布数据的市级数据。其他地方地面是平的,建筑来自 OpenStreetMap。每个登记册都是crates/atlas中的一条管线。
用 Rust 编写,基于Bevy。
试一试
- 浏览器——cartopolis.org。需要 WebGPU。
- 桌面端——Linux 和 Windows,见发布页面,或从源码构建(macOS 也可以)。发布的二进制文件需要 AVX2 和 FMA(约 2013 年及以后)。
- Android— APK 位于cartopolis.org/apk(arm64,Android 9+)。完整客户端,三者中测试最少(说明)。
从源码运行
cargo run -p cartopolis
离线启动。从 ☰ ▸ Sign in… 登录服务器。
cargo run -p cartopolis -- --connect <host> # 分离模式:连接到实时模拟(TLS)
cargo run -p cartopolis -- --offline # 无模拟:单用户,无认证或持久化
cargo run -p cartopolis_simulator # 模拟服务器,独立运行
需要 Rust、C 编译器和 GPU 驱动;参见开发指南。运行git lfs install在克隆之前— 资源位于 Git LFS 中,部分资源会被编译进去。
文档
- 用户手册— 操作、导航、创作、开发者面板。
- 更新日志— 每个版本的变更内容。
- 开发指南— 前置条件、开发循环、测试、代码地图、约定、CI。
- 服务器指南— 部署模拟和自托管地理服务。
docs/notes/— 约束与测量;CLAUDE.md已知问题是陷阱列表。
架构
| Crate | 角色 |
|---|---|
cartopolis_core |
共享协议类型和瓦片/坐标数学 |
cartopolis_geo |
无 Bevy 的地图地理数据:MVT 解码、道路类别、树木散布、路由图 |
cartopolis_e2ee |
端到端加密私聊(MLS);服务器中继其无法打开的密封字节 |
cartopolis_simulator |
共享世界服务器(Tokio + SQLite):头像、聊天、语音、物体、账户;无 Bevy |
cartopolis_atlas |
注册管线(BAG、3DBAG、AHN、BGT……)、地形服务器和运营者 Web 控制台 |
cartopolis |
Bevy 客户端 — 渲染、ECS 系统、UI |
cartopolis_android |
客户端周围的 Android 应用外壳 |
big_space |
内置的浮动原点分支,用于行星级坐标 |
许可证
源码:MIT或Apache-2.0(LICENSE)。数据、头像和字体带有各自的条款;LICENSE-THIRD-PARTY.md是规范的通知列表(下方致谢与之对应 — 在那里添加新来源)。
致谢
- 引擎— 使用Bevy构建。
- 浮动原点—
big_space由 Aevyrie 开发,MIT 或 Apache-2.0。此处作为分支内置,已移植到我们所跟踪的 Bevy 版本。 - 头像角色—Quaternius Ultimate Modular Men/Women,CC0。可考虑在Patreon上支持这项工作。
- 地图数据— ©OpenStreetMap贡献者,遵循 ODbL。建筑细节和 POI 来自Overpass,地点搜索和反向地理编码来自Nominatim— 两者均为自托管,也可根据OSMF 使用政策使用公共实例。
- 矢量瓦片—VersaTiles,采用Shortbread模式。其 OSM 衍生全球构建的自托管镜像。
- 建筑(LoD2.2)—3DBAG由 TU Delft 3D 地理信息组开发,CC BY 4.0 — 衍生自 Kadaster 的BAG登记和 AHN,两者均通过PDOK。仅限荷兰。
- 航拍—Beeldmateriaal Nederland,由以下机构以 Luchtfoto RGB 形式提供PDOK,CC BY 4.0。仅限荷兰。
- 街道物体— 行道树、照明和集装箱,来自gemeente Groningen 开放数据,CC BY 4.0。仅限 Groningen。
- 高程—AHN高度栅格(DTM/DSM),由以下机构提供PDOK,CC0。仅限荷兰。
- 公共交通— 实时发车和车辆位置,来自OVapi,荷兰的开放免密钥数据源NDOV运营商数据。仅限荷兰。
- 天气— 预报来自MET Norway,CC BY 4.0,全球云量来自NOAA Global Forecast System,公有领域。
- 夜空— 恒星位置和星等,来自HYG Databasev4.1,作者 David Nash,CC BY-SA 4.0 — 由 Hipparcos、Yale Bright Star 和 Gliese 星表汇编而成。
- 字体—Plus Jakarta Sans,作者 Tokotype,SIL Open Font License 1.1。












