Inspiration
Arizona’s extreme summer heat poses a serious public health risk for pedestrians. Existing navigation tools optimize routes based on distance and travel time but completely ignore sun exposure. During peak summer afternoons, choosing a route with more shade can significantly reduce heat stress and improve safety. We were inspired by the research paper “Walking in the Shade” (Feng et al., SIGSPATIAL 2024), which explored shade-aware pedestrian routing. Our goal was to transform this research concept into a practical navigation tool designed for Arizona’s climate.
What it does
UmbraStride is a shade-aware pedestrian navigation system that helps users find cooler walking routes. Using OpenStreetMap street networks and time-dependent shade estimates, UmbraStride generates three route options: • Shortest Route – minimizes walking distance. • Coolest Route – maximizes shade coverage. • Custom Route – balances shade and distance based on user preference. Users select a start and destination point, choose a date and time, and receive optimized routes that help them stay cooler while walking.
How we built it
Frontend React TypeScript MapLibre GL JS OpenFreeMap Tiles SunCalc Backend Python FastAPI Uvicorn REST APIs Routing Engine OSMnx for street-network generation rustworkx A* pathfinding NumPy-based weight computation SQLite shade storage LRU and disk-based caching Routing Model To balance walking distance and shade preference, we developed a weighted routing formula: weight=(1-b)L+b(L_sun β+L_shade ε) where b=(1-α)^γ and: Symbol Description L Total edge length L_sun Sun-exposed distance L_shade Shaded distance α User preference slider β Sun penalty factor γ Shade-bias parameter This allows users to dynamically choose how much they value shade versus walking distance.
Challenges we ran into
Building a city-scale shade-aware routing engine introduced several technical challenges: • Processing more than 560,000 street edges efficiently. • Modeling shade that changes throughout the day as the sun moves. • Storing and querying shade values for hundreds of thousands of road segments. • Balancing route quality with fast response times. • Managing memory consumption for large geospatial datasets. • Designing a routing algorithm that produces meaningful tradeoffs between distance and shade. To address these challenges, we implemented corridor-based graph cropping, indexed shade storage, disk caching, and optimized A* pathfinding.
Accomplishments that we're proud of
• Built a fully functional end-to-end prototype. • Generated shade-aware routes in just a few seconds. • Supported Arizona metro-scale street networks with over 560K edges. • Created three route types that clearly demonstrate different optimization goals. • Developed a scalable architecture capable of supporting future city expansion. • Successfully translated academic research into a practical navigation application.
What we learned
Through this project, we gained experience in: • Large-scale geospatial data processing. • Graph theory and route optimization. • A* pathfinding and weighted routing systems. • Full-stack development using React and FastAPI. • Performance optimization through caching and efficient data structures. • Applying academic research to solve real-world public health challenges. We also learned that environmental factors such as shade can be just as important as distance when designing pedestrian navigation systems.
What's next for UmbraStride
Our roadmap includes: • Building-aware shade computation using real building footprints. • LiDAR-enhanced shadow modeling for greater accuracy. • Expansion to additional cities beyond Arizona. • Native iOS and Android applications. • Real-time weather and heat-alert integration. • Accessibility-focused routing options. • Turn-by-turn pedestrian navigation. • Open APIs for third-party developers and city planners. Our long-term vision is to make shade-aware navigation a standard feature of pedestrian routing, helping create safer and more walkable cities in hot climates around the world.
Log in or sign up for Devpost to join the conversation.