The data

Which OpenStreetMap tags become 3D geometry

The whole map comes from OpenStreetMap tags. This page lists the ones the pipeline reads, and what each one becomes on screen.

The data comes from OpenStreetMap

Millions of people have mapped their own streets, and the result carries far more than roads. Map data comes from OpenStreetMap and its contributors, under the Open Database Licence. Our work is to turn that data into a 3D map: the geometry, the tile pipeline, the rendering. That line never moves, and everything below sits on the data side of it: what we read, and what we do with it.

What becomes geometry

Buildings. A footprint is extruded to the height its tags describe (height, building:levels), and min_height or building:min_level lift arcades and bridge decks off the ground. A building with no height tagged gets a plausible one rather than leaving a hole in the city block. Roofs are flat.

Ground cover. Every landuse value and a curated set of natural, leisure, amenity and water tags become coloured ground: parks, forests, farmland, industrial estates, parking, beaches, pedestrian squares, and the water itself. Each type has its own colour in one palette, the one that restyling recolours.

Roads, rails and waterways. Lines are read from highway, railway, man_made, waterway, barrier and natural.

Trees and street lamps. Every natural=tree point is planted individually, scaled by its height tag when it has one, all from the same model; every highway=street_lamp point becomes a lamp. They are instanced objects in the scene, not a texture painted on the ground.

Named places. Points tagged amenity, shop or office, plus a curated set of leisure and tourism values, become markers ready for the projection interface.

Broken values break nothing

OSM values are free text. Heights arrive in feet, with unit suffixes, with comma decimals, as ranges, or as noise. The pipeline parses what it can: an unreadable tag costs one building its precision and never costs a tile its geometry.

Names come from the tags, not from a translator

A marker's label is the OSM name tag, verbatim, in the language the mapper wrote it in. The map never invents one: a nameless park is still a park, while types where an anonymous point is just noise (museums, hotels, swimming pools) are kept only when they carry a name.

The whole planet, from the same pipeline

There is no per-city packaging and no list of supported places. The source is the planet, so a scene in a capital and a scene in a village nobody has heard of come from the same tables; the only difference is how rich the OpenStreetMap data is at that spot.

Read on: from an OpenStreetMap row to a shaded pixel, or OpenStreetMap as a 3D globe, not a flat map.

Read more

  • From an OpenStreetMap row to a shaded pixel

    Spherical cells instead of a Mercator grid, real geometry at every zoom with no raster fallback, a sky computed from your date and place, and a composable shader chain. How CityMap3D turns OpenStreetMap into a 3D globe.

  • Canvas, scene and camera: what you actually plug in

    Give the engine a canvas and a configuration. Replace the camera, drop in your own 3D objects, re-tone the whole output to your palette, and get frame-synced screen positions for your own data.