真实世界的社交地图:看看一个地方是如何建成的,并与身处其中的人聊聊它。

Groningen city centre, built from open public data

真实世界的可步行 3D 副本,由开放公共数据构建,并在所有查看它的人之间共享。可在浏览器、桌面端和 Android 上运行。免费、开源、可自托管。

公共基础设施

  • 由各类登记册构建——建筑来自BAG和3DBAG,地面来自AHN,行道树、照明和铺装来自国家和市级对象登记册,PDOK航拍影像、实时公交。
  • 每栋建筑都有一张卡片——建造年份、用途、单元数、建筑面积、状态、古迹名录、地址。走进去,它的各楼层都在那里。
  • 它周围的世界——真实的太阳、真实的天气、步行、骑行或驾车路线规划,以及从门口到轨道的连续空间。

分享一个地方

  • 在你所在之处交谈——虚拟形象、按距离限定的本地聊天、近距离语音、世界聊天、端到端加密的私聊。
  • 指向它——一个链接即可在浏览器或应用中打开你的确切视角;保存的地点带有照片和地图标记。
  • 在那里放置东西——放置并编写对象和 3D 模型的脚本,用 IFC 模型替换建筑,通过 HTTP API 导出和导入内容。
  • 审核——屏蔽、举报和账户删除,在服务器端强制执行;一个用于账户和数据管线的 Web 控制台。

面向居民、社区、市政当局和政府,以及规划师和建筑师。

截图

Bird's-eye over Groningen's canal ring The southern ring road in its cut beside DUO
运河环 DUO 设计的环路隧道
The main station and rail yard from above The Grote Markt and the Martinitoren
中央车站和铁路站场 大市场广场和 Martinitoren
Forum Groningen beside the Martinitoren The town hall selected, with its register card
格罗宁根论坛 建筑卡片:市政厅
Groningen from 3 km south-west The whole city from 1.2 km up
3 km 外的格罗宁根 1.2 km 高处的城市
Eemshaven's harbour basins and wind turbines Eemshaven from over the Wadden Sea
埃姆斯哈芬 从瓦登海看埃姆斯哈芬
Two people meeting on the Grote Markt Earth from orbit
在大市场广场会面 从轨道看地球

生成自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 中,部分资源会被编译进去。

文档

架构

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。