la28 Svelte Themes

La28

Interactive visualization exploring public transit accessibility to the 2028 LA Olympic venues using isochrone maps, travel time analysis, and survey data.

LA28: Transit Accessibility for the 2028 Olympics

An interactive data visualization exploring how accessible the 2028 Los Angeles Olympic venues are by public transit. LA leadership has announced that Angelenos will not be able to drive to the Games, yet the city's transit system remains a challenge for most residents. This project investigates what it would look like to reach every proposed venue using only public transit, walking, or cyclingβ€”and how much of Los Angeles is left behind.

πŸ“Š Data collection & processing lives in la28-r β€” the companion R repo where isochrone data is generated from the TravelTime API and joined with census population data.

About the Project

Los Angeles is synonymous with car culture, yet the 2028 Olympics aim to be "no-car Games." This project examines the gap between that ambition and the current state of LA's public transit by:

  • Mapping transit accessibility β€” Interactive isochrone maps show the areas that can reach each Olympic venue within 30, 60, 90, and 120 minutes by public transit. Users can select any venue and instantly see how far transit reaches across LA County.
  • Comparing venues β€” A bar chart ranks all proposed venues by the share of LA County residents who can reach them within each travel-time threshold, revealing which venues are well-served and which are nearly unreachable.
  • Surfacing public opinion β€” Survey data from USC's LABarometer illustrates how Angelenos perceive the convenience and safety of driving vs. public transit, highlighting the behavioral hurdles the Games' transport strategy must overcome.

The Map in Action

The centrepiece of the project is an interactive isochrone map built with D3 and SVG. When a user selects a venue (via dropdown or by clicking a marker on the map), the map animates colour-coded isochrone polygons radiating outward from the venue, each representing a travel-time band. Census tract boundaries provide geographic context, and optional Metro rail and bus lines can be toggled on. Hovering over an isochrone or venue displays a tooltip with details such as population coverage. Below the map, a percent bar summarizes the share of residents within each time band.

Data Sources

Data Source Notes
Census tracts (population & boundaries) NHGIS 2020 Census tract-level population for Los Angeles County
Isochrones (transit travel-time polygons) TravelTime API Generated for each venue at 30, 60, 90, and 120 min thresholds using public transit mode with a 20-min walking allowance. Collected and processed in the la28-r repo.
Metro route geometries GTFS feeds via gtfs-to-geojson Converted from LA Metro's GTFS data to GeoJSON for map overlays
Survey data USC LABarometer Public opinion on transit convenience and safety
Venue list & locations LA 2028 official site Geocoded with the tidygeocoder R package

Tech Stack

  • SvelteKit (Svelte 5) β€” app framework
  • D3 (d3-geo, d3-scale, d3-array) β€” projections, scales, and data wrangling
  • Turf.js β€” GeoJSON polygon rewinding
  • Tailwind CSS β€” utility-first styling
  • Netlify β€” deployment

Getting Started

# Install dependencies
npm install

# Start the dev server
npm run dev

# Or open in the browser automatically
npm run dev -- --open

Building for Production

npm run build

# Preview the production build locally
npm run preview

The project is configured to deploy on Netlify (see netlify.toml).

Project Structure

src/
β”œβ”€β”€ routes/
β”‚   β”œβ”€β”€ +layout.svelte        # App layout
β”‚   └── +page.svelte           # Main narrative page
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ IsochroneMap.svelte    # Interactive isochrone map
β”‚   β”œβ”€β”€ TravelTimeBar.svelte   # Venue comparison bar chart
β”‚   β”œβ”€β”€ SurveyCharts.svelte    # LABarometer survey visualizations
β”‚   β”œβ”€β”€ TransitLines.svelte    # Metro route overlay
β”‚   β”œβ”€β”€ VenueMarkers.svelte    # Venue markers layer
β”‚   β”œβ”€β”€ PercentBar.svelte      # Population percent bar
β”‚   β”œβ”€β”€ LegendHTML.svelte      # Map legend
β”‚   β”œβ”€β”€ *Tooltip.svelte        # Tooltip components
β”‚   └── data/                  # GeoJSON & JSON data files
└── global.css                 # Global styles

License

This project is for educational and research purposes.

Top categories

Loading Svelte Themes