1

How the School Closure Impact Map Works

When a school closes, two things change for every family in the district:

This walkthrough explains exactly how we answer both questions, step by step. We use Northside Elementary as an illustrative example — but the methodology is identical for all 11 schools.

Note: This is a purely illustrative walkthrough. The same analysis runs for every school. No school is singled out.
2

School Locations & Road Network

We start with two public datasets:

The map shows the drive network colored by road type. Major roads (trunks, primaries) carry faster traffic; residential streets are slower but more numerous.

Data: NCES EDGE Public School Locations 2023-24 (LEAID 3700720) • OpenStreetMap via OSMnx • Boeing, G. (2017). OSMnx: New Methods for Acquiring, Constructing, Analyzing, and Visualizing Complex Street Networks. Computers, Environment and Urban Systems, 65, 126–139.
Limitation: OSM road data is community-maintained. Some new developments or private roads may be missing. Network downloaded as a snapshot; no real-time updates.
3

Travel Speed Model

Raw road type alone doesn’t tell us how fast people actually drive. Our model has two components:

  1. Free-flow friction speeds — mid-block travel speeds that account for acceleration/deceleration cycles and roadway friction, but not intersection control.
  2. Intersection penalties — explicit delays at traffic signals (+22 s), stop signs (+11 s), yield signs (+6 s), and pedestrian crossings (+3 s), applied at each tagged intersection node.
Road TypePosted (mph)Friction (mph)Ratio
Motorway / Freeway655991%
Trunk554378%
Primary453476%
Secondary352880%
Tertiary302480%
Residential252080%
Service / Living street151173%

Roads on the map are colored by friction speed: darker = faster. Intersection delays are added on top at signalized and stop-controlled nodes.

Source: Friction speeds derived from HCM 6th Edition, Chapter 16 (Urban Street Facilities). Intersection penalties from HCM Chapters 19 (signalized) and 20 (stop-controlled). Intersection control tags from OpenStreetMap, supplemented via Overpass API.
Why decompose speed and intersection delay?

A single “effective speed” per road type treats a residential segment between two traffic signals the same as one on a quiet cul-de-sac. By separating mid-block friction from intersection control, routes through signalized corridors correctly accumulate more delay than parallel residential streets with fewer intersections.

4

Walk & Bike Networks

The analysis covers three travel modes. Walk and bike networks include paths that cars cannot use — sidewalks, greenways, cut-throughs — which makes them larger than the drive network in some areas.

The remaining steps of this walkthrough focus on drive mode for clarity, but the same Dijkstra algorithm runs for all three.

Speed sources: Walk: Manual on Uniform Traffic Control Devices (MUTCD) Section 4E.06 • Bike: AASHTO Guide for the Development of Bicycle Facilities, 4th ed. • Drive: HCM6 Ch.16.
5

Inverted Dijkstra: From School to Everywhere

To find travel time from every location to a school, a naïve approach would run one shortest-path search per grid point — over 16,000 runs. Instead, we use the inverted Dijkstra trick:

Run Dijkstra from each school outward to all reachable nodes. Since the road network is bidirectional, driving to a school takes the same time as driving from it. This gives us distances from all ~16,000 grid points using just 11 runs per mode (33 total across drive/walk/bike).

The map shows shortest-path routes from a single household ( blue dot) to all 11 elementary schools. Each road segment is coloured by cumulative travel time from the origin: green (just departed) → yellow (mid-route) → red (arriving at school). This is the core of the inverted Dijkstra trick — each school’s outward search gives us the route from any point back to that school, so one household can reach all 11 schools without running 11 separate searches from that household.

Algorithm: Single-source Dijkstra via NetworkX (dijkstra_predecessor_and_distance). Produces both distance and predecessor maps for route reconstruction.
Technical: Why bidirectional?

OSMnx downloads a directed graph, but residential streets are overwhelmingly two-way. We add reverse edges for any missing direction, making the graph effectively undirected. This is necessary for the inverted Dijkstra trick to produce correct results and matches how families actually drive.

6

Edge Snapping: Grid Points to Roads

Grid points don’t sit exactly on road nodes. We snap each point to the nearest road edge (not nearest node), which is more accurate:

The map shows snap lines connecting grid points to their nearest road edges. Yellow dots are grid points; blue dots are the snap positions on the road.

Limitation: Points more than 200 m from any road edge are marked unreachable. This affects very few pixels within the district.
7

The 100-Meter Grid

We tile the entire CHCCS district with a 100 m × 100 m grid — roughly 16,000 cells. Each cell represents a potential household location.

The grid uses WGS84-native coordinates with a cosine-latitude correction to keep cells approximately square despite the curvature of longitude lines. At Chapel Hill’s latitude (35.9°N), 100 m ≈ 0.000898° lat and ≈ 0.001109° lon.

Only cells inside the district boundary are kept. The map shows the grid near Northside — zoom in to see how the cells tile the landscape.

Why not a projected (UTM) grid?

Earlier versions used UTM 17N, but the convergence angle introduced slight grid rotation relative to the lat/lon-aligned Leaflet tiles. A WGS84-native grid with cos(lat) correction produces cells that are equally square (to within 0.01%) and align perfectly with the web map.

8

Baseline: Nearest School Drive Time

For each grid point, we take the minimum travel time across all 11 schools. This is the baseline: how long the drive is today, with every school open.

Yellow areas are close to a school (<5 min); orange and red areas are farther (>10 min). Most of the district is within a 10-minute drive.

0 min7.515 min
9

Closure Scenario: Remove Northside

Now we remove Northside from the calculation and take the minimum across the remaining 10 schools. No recomputation is needed — we simply exclude Northside’s Dijkstra results from the minimum.

The × marks the closed school. Areas near Northside now show longer travel times because families must drive to the next-closest school.

Key assumption: We do not model capacity constraints. If the nearest remaining school is “full,” families might be assigned even farther. This analysis shows the minimum possible travel time increase.
10

Travel Time Increase (Delta)

Subtracting baseline from closure gives the delta — how many additional minutes each location would need to drive.

Only the former Northside zone is affected (everywhere else, the nearest school hasn’t changed). The delta ranges from 0 (already near another school) to several minutes for the most isolated points.

0 min510+ min
Interpretation: Orange shading shows increased drive time. Deeper color = larger impact. White/unshaded areas see no change.
11

Walk & Bike: Who Is Hit Hardest?

The same analysis runs for walk and bike modes. Walking families see the largest absolute increase because at 2.5 mph, every additional mile adds 24 minutes.

The walk-mode delta map often shows a wider and deeper impact zone than drive mode — highlighting that school closures disproportionately affect families without cars.

The remaining steps continue with drive mode for the traffic analysis.

Limitation: Walk and bike networks assume all paths are usable year-round. Seasonal factors (ice, flooding) are not modeled.
12

Where Do the Children Live?

To estimate traffic, we need to know where school-age children live. The U.S. Census Bureau’s American Community Survey (ACS) 5-Year provides population by age at the block group level:

The map shows block groups shaded by total children (ages 0–9). Block groups are the finest geography with reliable age data.

Data: ACS 5-Year Estimates, Table B01001 (Sex by Age), Orange County NC (FIPS 37135). Census TIGER/Line block group boundaries.
Limitation: ACS 5-Year estimates have margins of error, especially for small block groups. We use the estimates as-is without modeling uncertainty.
13

Dasymetric Downscaling

Block groups are too coarse for pixel-level traffic estimation. We downscale children counts in two stages:

  1. Block group → block: Distribute children proportionally by residential land area within each block. We use Orange County parcel data to identify improved residential parcels, so children are allocated where houses actually exist — not in parks or commercial zones.
  2. Block → pixel: Intersect the 100 m grid cells with blocks, allocating children by the area of overlap.

The map shows census blocks (outlines) overlaid with residential parcels (shaded). Children are spread across the blue parcels, not the empty areas.

Data: Census TIGER/Line blocks • Orange County parcel boundaries (combined_data_polys.gpkg, filtered to is_residential=True, Improved).
What is dasymetric mapping?

A technique that uses ancillary data (here, parcel boundaries) to distribute population more accurately than simple area-weighted interpolation. First described by Wright (1936) and widely used in environmental justice and transportation planning.

14

Route Reconstruction

The Dijkstra algorithm produces a predecessor map for each school: for every network node, it records which node comes before it on the shortest path. This lets us reconstruct the exact route from any grid point to any school by walking the predecessor chain backward.

The map shows several example driving routes to Northside, reconstructed from the predecessor map. Each colored line is the shortest-time path from a different part of the district.

Algorithm: Path reconstruction is O(path length) per route. NetworkX stores predecessor lists; we always take the first predecessor for deterministic results.
15

Baseline Traffic Volume

For every pixel, we know:

  1. How many children live there (from dasymetric downscaling)
  2. Which school is nearest (from Dijkstra)
  3. The exact route to that school (from predecessor map)

We trace each pixel’s children along their route and accumulate the count on every road segment traversed. The result is an estimate of school-bound traffic volume on each road.

Thicker, redder lines carry more children. Major collectors and arterials near schools naturally accumulate the most traffic.

Limitations: (1) Assumes every child takes the shortest-time route. Real families may prefer different routes. (2) Does not model carpooling or bus routes. (3) One vehicle per child — no sibling consolidation.
16

Walk Zone Masking

CHCCS designates walk zones around each school. Children inside a walk zone typically walk rather than drive. We subtract their traffic contribution from the driving estimate.

The map shows walk zone polygons. When a school is open, children inside its walk zone are removed from driving traffic. When a school closes, its walk zone is not masked — those children must now drive to a different school.

Data: CHCCS attendance zone shapefile (ESWALK=’Y’ features dissolved by ENAME).
Limitation: Walk zone boundaries are policy-defined, not route-based. Some families inside the walk zone may still drive; some outside may walk. We use the official boundaries as-is.
17

Traffic Redistribution After Closure

We repeat the traffic computation with Northside closed. Children formerly routed to Northside are now sent to their next-nearest school, flowing along new routes and adding traffic to different roads.

The difference between closure and baseline traffic reveals which roads gain traffic (red) and which lose it (blue). Roads near the closed school lose traffic; roads leading to neighboring schools gain it.

Method: Closure traffic − baseline traffic, per edge. Positive = more children driving on that road. Negative = fewer.
18

Putting It Together

The full analysis combines both lenses:

This dual view lets planners see both the household-level access impact and the road-network-level traffic consequences of any hypothetical closure.

19

Limitations & Caveats

Every model makes simplifying assumptions. Here are the most important ones:

  1. No capacity constraints. We assume every school can absorb reassigned students. In practice, receiving schools may lack space.
  2. Shortest path only. Real families may prefer familiar routes, avoid left turns, or chain trips (daycare → school → work).
  3. Static network. Road speeds don’t change with added congestion from redistributed traffic.
  4. No turn penalties. Left turns across traffic and U-turns are treated identically to right turns.
  5. One vehicle per child. Carpooling, siblings, and school buses are not modeled.
  6. ACS margin of error. Small-area child counts are estimates with confidence intervals we do not propagate.
  7. Parcel-based dasymetric. Assumes uniform child density within residential parcels. Apartment complexes and single-family homes are weighted equally by area.
  8. Walk zone boundaries. Based on policy, not actual behavior. Some driving families inside walk zones; some walking families outside.
  9. No temporal variation. Morning vs. afternoon traffic patterns are not differentiated.
  10. OSM completeness. Community-maintained road data may miss new roads or private roads.
  11. Flat terrain. Elevation and hills are not factored into walk/bike speeds.
  12. Age range proxy. ACS ages 0–9 is a proxy for K–5 elementary enrollment (ages 5–11). Some children attend private schools or are homeschooled.
  13. No behavioral response. Families may move, switch to private school, or change work schedules in response to a closure.
Full technical documentation: Complete details are available in the project methodology documentation.