Inspiration

We know that all of you McHackers have had to face the biting, relentless wind on the streets of downtown Montreal this week, and trudged through piles of snow and skinny sidewalks.

What it does

Frostbite works like any maps or navigation service... except it optimizes your walking path through campus by taking into account 1) the wind direction, 2) building density and height on every street 3) whether the streets have been cleared of snow or not. It'll select streets where the wind is blowing away from your face, where buildings and walls are more concentrated, and where Montreal snow removal services have already passed, so that you don't have to hike Kilimanjaro to get to the clurb.

How we built it

We calculated the scores using the OpenStreetMap via the Overpass API for building data, Montréal's Planif-Neige snow-removal schedule (via a community-maintained public JSON mirror of the official dataset), and real-time wind speed and direction from the Open-Meteo weather API. Using the building data, we estimated the height using either the actual height provided by the API or using a heuristic (number of floors of the building) for estimation. This, along with the wind direction relative to walking direction helps us calculate the total impact of the wind after taking the path's surroundings into account by multiplying the headwind component (wind speed × cos(angle between walking and wind direction)) by the exposure factor (1 - building shelter score). After acquiring the snow removal status, our route decisions can be better guided towards preferring paths that are cleared. These three factors contribute to choosing a suitable route by a weighted scoring algorithm. Gemini takes our calculated metrics for both routes and generates a user-friendly description of why our suggested route is a more comfortable walk compared to the default fastest route.

Challenges we ran into

Overpass (OpenStreetMap) and Nominatim (reverse geocoding) have relatively high latency, so querying them for every sampled point along a route led to long runtimes and request timeouts. This forced us to reconsider both the frequency and spatial resolution at which we query real-world data. We reduced redundant calls by caching reverse-geocoding and building queries for nearby points, allowing multiple samples on the same street segment to reuse results. Similarly, we also cached the snow removal status data.

Accomplishments that we're proud of

We’re proud of how realistic and usable the generated routes are. The routing logic balances comfort with efficiency, producing paths that meaningfully improve the walking experience without significantly increasing travel time.

What we learned

We learned that integrating real city data requires fallbacks and performance tuning. Clear explanations and user-visible tradeoffs are essential for making a system like our project usable.

What's next for FrostByte

This was a project built over a span of only 24 hours. Future avenues to improve FrostByte could include: - Considering street width to calculate likelihood of wind tunnels - Including interior shortcuts to avoid the outdoors (Montreal campuses, train stations, and of course, the Underground City) - User can fine-tune the desired levels of snow and wind avoidance - Include crowd-sourced live updates (like Waze) of hazardous conditions around the city - Accounting for incline - Accounting for pedestrian safety (crossing at red lights or large intersections vs. stop signs in residential neighbourhoods, or intersections with no signage at all)

Built With

+ 21 more
Share this project:

Updates