Show HN: Cartopolis, interactive globe-sized 3D world

Hacker News Top Products

Summary

Cartopolis is an open-source interactive 3D world built from public data, enabling users to explore and socialize in a virtual real-world environment.

No content available
Original Article
View Cached Full Text

Cached at: 09/27/26, 10:41 PM

# cartopolis Source: [https://code.garage44.eu/jeroen/cartopolis](https://code.garage44.eu/jeroen/cartopolis) **A social map of the real world: see how a place is built, and talk about it with the people who are there\.** [![Groningen city centre, built from open public data](https://code.garage44.eu/jeroen/cartopolis/media/branch/main/docs/img/city.png)](https://code.garage44.eu/jeroen/cartopolis/media/branch/main/docs/img/city.png) A walkable 3D copy of the real world, built from open public data and shared between everyone looking at it\. Runs in the browser, on the desktop and on Android\. Free, open source, self\-hostable\. ## Public infrastructure - **Built from the registers**— buildings from[BAG](https://www.kadaster.nl/zakelijk/registraties/basisregistraties/bag)and[3DBAG](https://3dbag.nl/), ground from[AHN](https://www.ahn.nl/), street trees, lighting and paving from the national and municipal object registers,[PDOK](https://www.pdok.nl/)aerial photography, live transit\. - **Every building has a card**— year built, use, units, floor area, status, monument listing, addresses\. Walk in and its storeys are there\. - **The world around it**— real sun, real weather, routing on foot, by bike or by car, and one continuous space from a doorway to orbit\. ## Sharing a place - **Talk where you stand**— avatars, local chat scoped by distance, proximity voice, world chat, end\-to\-end encrypted private chats\. - **Point at it**— a link opens your exact view in the browser or the app; saved places with photos and map pins\. - **Put something there**— place and script objects and 3D models, swap a building for an IFC model, export and import content over an HTTP API\. - **Moderation**— blocking, reporting and account deletion, enforced on the server; a web console for accounts and data pipelines\. For residents, communities, municipalities and governments, and planners and architects\. ## Screenshots [![Bird's-eye over Groningen's canal ring](https://code.garage44.eu/jeroen/cartopolis/media/branch/main/docs/img/canals.png)](https://code.garage44.eu/jeroen/cartopolis/media/branch/main/docs/img/canals.png)[![The southern ring road in its cut beside DUO](https://code.garage44.eu/jeroen/cartopolis/media/branch/main/docs/img/tunnel.png)](https://code.garage44.eu/jeroen/cartopolis/media/branch/main/docs/img/tunnel.png)*Canal ring**Ring road tunnel by DUO*[![The main station and rail yard from above](https://code.garage44.eu/jeroen/cartopolis/media/branch/main/docs/img/station.png)](https://code.garage44.eu/jeroen/cartopolis/media/branch/main/docs/img/station.png)[![The Grote Markt and the Martinitoren](https://code.garage44.eu/jeroen/cartopolis/media/branch/main/docs/img/grote-markt.png)](https://code.garage44.eu/jeroen/cartopolis/media/branch/main/docs/img/grote-markt.png)*Main station and rail yard**Grote Markt and Martinitoren*[![Forum Groningen beside the Martinitoren](https://code.garage44.eu/jeroen/cartopolis/media/branch/main/docs/img/forum.png)](https://code.garage44.eu/jeroen/cartopolis/media/branch/main/docs/img/forum.png)[![The town hall selected, with its register card](https://code.garage44.eu/jeroen/cartopolis/media/branch/main/docs/img/building.png)](https://code.garage44.eu/jeroen/cartopolis/media/branch/main/docs/img/building.png)*Forum Groningen**Building card: the town hall*[![Groningen from 3 km south-west](https://code.garage44.eu/jeroen/cartopolis/media/branch/main/docs/img/skyline.png)](https://code.garage44.eu/jeroen/cartopolis/media/branch/main/docs/img/skyline.png)[![The whole city from 1.2 km up](https://code.garage44.eu/jeroen/cartopolis/media/branch/main/docs/img/city-far.png)](https://code.garage44.eu/jeroen/cartopolis/media/branch/main/docs/img/city-far.png)*Groningen from 3 km**The city from 1\.2 km up*[![Eemshaven's harbour basins and wind turbines](https://code.garage44.eu/jeroen/cartopolis/media/branch/main/docs/img/eemshaven.png)](https://code.garage44.eu/jeroen/cartopolis/media/branch/main/docs/img/eemshaven.png)[![Eemshaven from over the Wadden Sea](https://code.garage44.eu/jeroen/cartopolis/media/branch/main/docs/img/eemshaven-sea.png)](https://code.garage44.eu/jeroen/cartopolis/media/branch/main/docs/img/eemshaven-sea.png)*Eemshaven**Eemshaven from the Wadden Sea*[![Two people meeting on the Grote Markt](https://code.garage44.eu/jeroen/cartopolis/media/branch/main/docs/img/meet.png)](https://code.garage44.eu/jeroen/cartopolis/media/branch/main/docs/img/meet.png)[![Earth from orbit](https://code.garage44.eu/jeroen/cartopolis/media/branch/main/docs/img/globe.png)](https://code.garage44.eu/jeroen/cartopolis/media/branch/main/docs/img/globe.png)*Meeting on the Grote Markt**Earth from orbit**Generated with`cargo shots`from[`docs/shots\.toml`](https://code.garage44.eu/jeroen/cartopolis/src/branch/main/docs/shots.toml)\.* ## Where it works Map, sky, weather, routing and the shared world: anywhere on Earth\. Register detail \(measured buildings and their records, relief, street objects, aerial photos, transit\): the Netherlands, plus municipal data where a city publishes it\. Elsewhere the ground is flat and buildings come from OpenStreetMap\. Each register is one pipeline in[`crates/atlas`](https://code.garage44.eu/jeroen/cartopolis/src/branch/main/crates/atlas)\. Written in Rust on[Bevy](https://bevy.org/)\. ## Try it - **Browser**—**[cartopolis\.org](https://cartopolis.org/)**\. Needs WebGPU\. - **Desktop**— Linux and Windows on the[releases page](https://code.garage44.eu/jeroen/cartopolis/releases), or build from source \(macOS too\)\. Published binaries need AVX2 and FMA \(~2013\+\)\. - **Android**— APK at**[cartopolis\.org/apk](https://cartopolis.org/apk/)**\(arm64, Android 9\+\)\. The full client, least tested of the three \([notes](https://code.garage44.eu/jeroen/cartopolis/src/branch/main/docs/notes/android-build.md)\)\. ## Running from source ``` cargo run -p cartopolis ``` Starts offline\. Sign in to a server from ☰ ▸ Sign in…\. ``` cargo run -p cartopolis -- --connect <host> # split mode: connect to a live sim (TLS) cargo run -p cartopolis -- --offline # no sim: single user, no auth or persistence cargo run -p cartopolis_simulator # the sim server, standalone ``` Needs Rust, a C compiler and a GPU driver; see the[development guide](https://code.garage44.eu/jeroen/cartopolis/src/branch/main/docs/guides/development.md)\.**Run`git lfs install`before cloning**— assets are in Git LFS and some are compiled in\. ## Documentation - [User manual](https://code.garage44.eu/jeroen/cartopolis/src/branch/main/docs/manual.md)— controls, getting around, authoring, the developer panel\. - [Changelog](https://code.garage44.eu/jeroen/cartopolis/src/branch/main/CHANGELOG.md)— what changed, per release\. - [Development guide](https://code.garage44.eu/jeroen/cartopolis/src/branch/main/docs/guides/development.md)— prerequisites, dev loop, tests, code map, conventions, CI\. - [Server guide](https://code.garage44.eu/jeroen/cartopolis/src/branch/main/docs/guides/server.md)— deploying the sim and the self\-hosted geo services\. - [`docs/notes/`](https://code.garage44.eu/jeroen/cartopolis/src/branch/main/docs/notes)— constraints and measurements;[`CLAUDE\.md`](https://code.garage44.eu/jeroen/cartopolis/src/branch/main/CLAUDE.md)*Known issues*is the trap list\. ## Architecture CrateRole`cartopolis\_core`Shared protocol types and tile/coordinate math`cartopolis\_geo`Bevy\-free map geodata: MVT decode, road classes, tree scatter, the routing graph`cartopolis\_e2ee`End\-to\-end encrypted private chats \(MLS\); the server relays sealed bytes it cannot open`cartopolis\_simulator`The shared\-world server \(Tokio \+ SQLite\): avatars, chat, voice, objects, accounts; no Bevy`cartopolis\_atlas`The register pipelines \(BAG, 3DBAG, AHN, BGT, …\), the terrain server and the operator web console`cartopolis`Bevy client — rendering, ECS systems, UI`cartopolis\_android`The Android app shell around the client`big\_space`Vendored floating\-origin fork, for planet\-scale coordinates## Licence Source:**[MIT](https://code.garage44.eu/jeroen/cartopolis/src/branch/main/LICENSE-MIT)OR[Apache\-2\.0](https://code.garage44.eu/jeroen/cartopolis/src/branch/main/LICENSE-APACHE)**\([`LICENSE`](https://code.garage44.eu/jeroen/cartopolis/src/branch/main/LICENSE)\)\. Data, avatars and font carry their own terms;**[`LICENSE\-THIRD\-PARTY\.md`](https://code.garage44.eu/jeroen/cartopolis/src/branch/main/LICENSE-THIRD-PARTY.md)**is the canonical notice list \(the credits below mirror it — add new sources there\)\. ## Credits - **Engine**— built with[Bevy](https://bevy.org/)\. - **Floating origin**—[`big\_space`](https://github.com/aevyrie/big_space)by Aevyrie, MIT OR Apache\-2\.0\. Vendored here as a fork ported to the Bevy release we track\. - **Avatar characters**—[Quaternius](https://quaternius.com/)*Ultimate Modular Men/Women*, CC0\. Consider supporting the work on[Patreon](https://www.patreon.com/quaternius)\. - **Map data**— ©[OpenStreetMap](https://www.openstreetmap.org/copyright)contributors, under the ODbL\. Building detail and POIs come from[Overpass](https://overpass-api.de/), place search and reverse geocoding from[Nominatim](https://nominatim.org/)— both self\-hosted, and usable against the public instances under the[OSMF usage policies](https://operations.osmfoundation.org/policies/)\. - **Vector tiles**—[VersaTiles](https://versatiles.org/), in the[Shortbread](https://shortbread-tiles.org/)schema\. Self\-hosted mirror of their OSM\-derived planet build\. - **Buildings \(LoD2\.2\)**—[3DBAG](https://3dbag.nl/)by the 3D geoinformation group, TU Delft, CC BY 4\.0 — derived from the Kadaster's[BAG](https://www.kadaster.nl/zakelijk/registraties/basisregistraties/bag)registry and AHN, both via[PDOK](https://www.pdok.nl/)\. Netherlands only\. - **Aerial photography**—[Beeldmateriaal Nederland](https://www.beeldmateriaal.nl/), served as Luchtfoto RGB by[PDOK](https://www.pdok.nl/), CC BY 4\.0\. Netherlands only\. - **Street objects**— street trees, lighting and containers from[gemeente Groningen open data](https://data.groningen.nl/), CC BY 4\.0\. Groningen only\. - **Elevation**—[AHN](https://www.ahn.nl/)height rasters \(DTM/DSM\), served by[PDOK](https://www.pdok.nl/), CC0\. Netherlands only\. - **Public transport**— live departures and vehicle positions from[OVapi](https://ovapi.nl/), the open key\-free feed of Dutch[NDOV](https://ndovloket.nl/)operator data\. Netherlands only\. - **Weather**— forecasts from[MET Norway](https://api.met.no/), CC BY 4\.0, and global cloud cover from the[NOAA Global Forecast System](https://nomads.ncep.noaa.gov/), public domain\. - **Night sky**— star positions and magnitudes from the[HYG Database](https://github.com/astronexus/HYG-Database)v4\.1 by David Nash, CC BY\-SA 4\.0 — a compilation of the Hipparcos, Yale Bright Star and Gliese catalogs\. - **Type**—[Plus Jakarta Sans](https://fonts.google.com/specimen/Plus+Jakarta+Sans)by Tokotype, SIL Open Font License 1\.1\.

Similar Articles