Case study · Maps & open data

Indian Pixel City: all of Gandhinagar, drawn building by building

An illustrated, explorable map of Gujarat's capital, built from open data. 25,969 buildings across 61 km², four times and climates, living night traffic, and search for every hospital, school and metro station.

Our role
Concept, pipeline, build
Area
61 km², Sectors 1–30
Buildings
25,969, all of OSM
Image size
2.75 gigapixels
Places
755 searchable, 16 filters
Status
Live, open source

Inside the map

pixel-city-gandhinagar
The whole of Gandhinagar from above, with its sectors, capital complex and the Sabarmati river
Whole city. Sectors 1–30, the capital complex and the riverfront in one 2.75-gigapixel image.
pixel-city-gandhinagar
Close-up of Swaminarayan Akshardham in pink sandstone with domes and colonnade
Akshardham. Landmarks modelled to published proportions, here in pink sandstone at about 108 ft.
pixel-city-gandhinagar
Capital complex with the octagonal dome of Vithalbhai Patel Bhavan and Swarnim Sankul blocks
Capital complex. The Vidhan Sabha dome, Swarnim Sankul and the Sachivalaya.
pixel-city-gandhinagar
Sector housing with government quarters, compound walls, black water tanks and neem trees
Sector housing. Compound walls, rooftop water tanks and neem-lined streets that feel like Gandhinagar.
pixel-city-gandhinagar
Places filter showing hospitals, petrol pumps, schools and banks as pixel icons
Places. 16 pixel-icon filters: petrol pumps, hospitals, schools, metro stations and more.
pixel-city-gandhinagar
Night view with lit windows and sodium street lamps
Night. Lit windows and street lamps, with animated traffic on real roads and metro trains between real stations.
pixel-city-gandhinagar
Monsoon view with overcast light, lush ground, wet roads and puddles
Monsoon. The same city under overcast light, with wet roads, puddles and drifting cloud shadows.
pixel-city-gandhinagar
Daily find-the-landmark game with a close-up clue, distance score and other visitors' guesses
Daily game. Find today's three places from a close-up clue and see where other visitors guessed.

In short

The goal: turn open map data into an illustrated, explorable picture of a whole Indian city, rendered on a laptop and accurate enough to trust. The result: a 2.75-gigapixel map of Gandhinagar with every OpenStreetMap building, four climates and living night traffic.

Challenge 01

How do you render a 2.75-gigapixel image on an 8 GB laptop?

The problem

A 58,368 × 47,104 px image cannot be rendered or even held in memory in one pass.

How we solved it

  • Split the city into 154 regions of 4 × 4 chunks under one fixed orthographic camera.
  • Rendered each region separately in headless Chrome with three.js: 4–9 seconds each, peak memory under 1.6 GiB.

Challenge 02

How do you hide the seams between separately rendered regions?

The problem

Shadows, trees and buildings that cross a region edge rendered differently on each side, leaving visible lines.

How we solved it

  • Gave every region a 260 m margin so neighbours and shadows are present.
  • Locked shadows to one world-anchored texel grid shared by all chunks.
  • Measured: 99.3% of pixels identical to a single continuous render.

Challenge 03

How do you serve a gigapixel map smoothly on any device?

The problem

Standard tools build the full image before cutting tiles, which was impossible at this size.

How we solved it

  • Wrote a chunk-native Deep Zoom builder that makes each zoom level from the level below, byte-identical to libvips output.
  • Served 17 zoom levels of 512 px WebP tiles through OpenSeadragon.

Challenge 04

How do you prove an illustration matches the real city?

The problem

Pretty maps are easy; trustworthy ones need measurement and honesty about what is invented.

How we solved it

  • Automated fidelity checks: 100% of OSM buildings and 99.5% of roads drawn at their real footprint, with 0.000 px round-trip error.
  • Compared against an independent satellite survey (median 6.7 m agreement).
  • Documented clearly which details are illustration, such as facades and individual trees.

Challenge 05

How do you make a static picture feel alive without slowing it down?

The problem

Animating a gigapixel image directly would be far too heavy.

How we solved it

  • Drew night traffic, metro trains, lamps and fireflies on a lightweight canvas overlay above the static tiles.
  • About 20,000 cars on real roads at under 30 fps, roughly 1–2 ms per frame, paused in hidden tabs and for reduced motion.

Results & lessons

What it delivered, and what we would do again

Indian Pixel City is live and open source on GitHub. The same pipeline can map any city with good open data, for tourism, smart-city portals, real estate or education.

  • Split huge problems into regions with shared margins.
  • Measure accuracy, and say what is illustration.
  • Animate in an overlay, not in the heavy layer.

Quick answers

Indian Pixel City at a glance

What is Indian Pixel City?

Indian Pixel City is an illustrated, explorable map of Indian cities built from open data. The first city is Gandhinagar, Gujarat's capital: every mapped building, road, park and lake across 61 km² is drawn at its real position in a fixed bird's-eye view you can zoom from the whole city to a single temple roof.

How accurate is the map?

All 25,969 above-ground OpenStreetMap buildings and 99.5% of roads are drawn at their real footprint, with zero round-trip error between map pixels and geography. Facades, rooftop details and individual trees are authored illustration, and the project documents exactly which parts are measured and which are illustrated.

What can visitors do on the map?

Switch between summer, monsoon, winter and night; search in English or Gujarati; filter 16 kinds of places such as hospitals, petrol pumps and metro stations; open place cards; follow a random landmark tour; and play a daily find-the-landmark game. At night, traffic flows on real roads and metro trains run between real stations.

What technology does it use?

OpenStreetMap data processed into a single orthographic render with three.js in headless Chrome, region by region, then cut into Deep Zoom tiles. The viewer is React with OpenSeadragon, with an animated canvas overlay for night and weather, deployed on Cloudflare Workers.

Next step

Tell Us Your Problem. We'll Help You Build the Solution.

Tell us what you are working on. You will get a considered reply from an engineer — with questions, a suggested approach or an honest “we are not the right fit”.

Book a call