An interactive 3D mobility atlas of New York City Yellow Taxi activity in January 2025, with a 3D map, replayable hourly movement, zone inspection, and comparisons with weekday or weekend averages.
A starting brief based on the creator's public project, not a verbatim original prompt. Your result will vary.
Creator notes
Build an interactive 3D mobility atlas of New York City taxi activity for January 2025. Use NYC TLC Yellow Taxi records, Taxi Zones, and Manhattan building footprints to create a single-page Three.js visualization with a 3D map, animated trip connections, extruded pickup volumes, day and hour replay controls, and zone-level comparison insights.
Three.jsNew York Citytaxi datamobility atlas3D mapdata visualizationinteractive visualization
The prompt
# Build "City Pulse": an interactive 3D mobility atlas of New York City taxi activity (January 2025)
## Goal
A single-page, English-language web visualization that shows how New York moves across one month:
31 days, 24 hours, 263 taxi zones. The reader should be able to watch the city's daily rhythm,
compare any day against a typical weekday or weekend, and inspect any zone in detail.
It is a descriptive analysis tool, not a real-time or GPS product. Every visual must state what one mark represents.
## Data
Sources (public):
- NYC TLC Trip Record Data, Yellow Taxi, January 2025 (parquet)
- NYC TLC Taxi Zones (263 zones, shapes + borough lookup)
- NYC Open Data building footprints (Manhattan only, as visual context)
Preprocessing (Python + DuckDB or pandas), output small static JSON files:
- Filter invalid trips: pickup outside Jan 2025, non-positive or > 3h duration, unknown zones (264/265).
- Per day, per zone, per hour: pickup count, median trip duration.
- Per day, per hour: top origin → destination zone pairs (aggregated flows, top N per hour).
- Reference averages per zone-hour: weekday average (23 days) and weekend average (8 days), per-day means, holidays kept in the weekday group.
- Month-level fixed scale: max zone-hour pickups, used for every day so heights stay comparable.
- Zone metadata: id, name, borough, centroid, label anchor. Simplify zone geometry.
Files: month.json (daily totals, scale, top zones), weekday.json, weekend.json, days/2025-01-DD.json, zones geojson.
Load the current day lazily; keep the first paint fast.
## Stack
- One self-contained HTML file (or small Vite app) with Three.js 0.160 (ES modules via importmap), OrbitControls, EffectComposer + bloom.
- D3 only for scales/formatting and small SVG charts.
- No framework required. No external API calls at runtime; everything reads the static JSON.
## Layout (desktop 1920×1080 must fit in one screen without scrolling)
1. Header: "CITY PULSE / MOBILITY ATLAS", "Recorded replay" status, "Data & methods" link.
2. Status row: "A city, in motion." + three KPIs: citywide pickups (selected hour), vs. comparison average, median trip time.
3. Month strip: 31 day buttons as mini bars (bar height = daily pickups, weekends marked), prev/next day, date select, "Compare with" select (Weekday average · 23 days / Weekend average · 8 days).
4. Story bar: "Every movement leaves a pattern." with 4 chapters (01 Watch, 02 Unfold, 03 Compare, 04 Share) and "Start the story".
5. View tabs: 01 Connections, 02 Volume city, 03 Unfold 24h, 04 Ghost city, plus "Share finding" and "Create briefing".
6. Workspace: 3D map stage (left) + Location Insight inspector (right, ~330px, scrolls internally).
7. Timeline: Play day, speed (0.25×–4×), hour scrubber over a 24-hour bar chart of the selected day vs. average.
Map stage height must adapt to the viewport (clamp between ~470px and ~780px) so the whole console, including the timeline, is visible at 100% zoom.
## 3D scene
- Dark ground, zone outlines as thin lines, Manhattan building footprints as faint real-world context.
- Camera: perspective, orbit + zoom, a recenter button. Keep the user's camera when switching views, except "Unfold 24h", which always reframes to show the whole matrix.
- Hover a zone: tooltip with name and pickups. Click a zone: select it (updates inspector and flows).
Views (each switch animates, no hard pops):
- 01 Connections: aggregated zone-to-zone trips as glowing arcs with moving light particles; particle density ∝ trips; label the featured flow ("FROM / Midtown Center → TO / Upper East Side North, 71 trips / 18:00"). Caption: "Recorded zone-to-zone trips · schematic motion. Not GPS."
- 02 Volume city: each zone extruded; height = pickups on the fixed monthly scale; selected zone highlighted.
How to use this prompt
01
Start with the right workspace
Open your preferred coding assistant or 3D tool. Use the model shown on the example as a starting point, and check any linked project for setup instructions.
02
Choose one thing to change
Swap the subject, art style or setting. Keep the camera and interaction clear. Build a small version first, then refine one detail at a time.
03
Give the scene its own assets
For a custom character or prop, create a 3D model from a short object description or reference image, then bring it into your project.
Previews belong to their respective creators. Check the original source and project license before reusing code or assets.