Inspiration
During welcome week, one of our teammates' parents fainted outside the Georgia Tech Student Center because of the heat. The heat is no joke; in Atlanta, even a short walk can become dangerous when factors like high temperatures, humidity, and direct sunlight work to take you down.
Atlanta's urban heat island effect can make parts of the city substantially hotter than the surrounding areas, and the burden is not distributed evely. Neighborhoods with less tree canopy face much greater exposure, while the people who walk, run, commute, or rely on public transit have fewer ways to avoid it.
We were also inspired by similar work in Singapore. Atlanta presents a different opportunity because of its dense urban forest. Thus, we can use trees, together with shadows from buildings, which we can integrate with the pedestrian infrastructure. We built SlimShady to help people use the infrastructure more effectively when choosing how to get around.
What it does
SlimShady plans Atlanta walking routes while modeling shade. To use it, enter a starting point and destination, select your departure date and time, and compare the options. For many routes, the options will be:
- The fastest available walk (think what Google Maps might suggest)
- A recommended balance of shade and travel time (if you still take your time seriously)
- A route that prioritizes shade with possibly larger detours (if shade is more important to you than time saved)
Choosing each route, will allow you to see a colored segment on the map light up. Each segment on the route shows where the modeled predicted cover is strong or weak. You can look through the step-by-step directions, choose an instruction to focus it on the map, save routes, and follow the route using GPS.
What if you don't have a destination in mind? It's okay; we've all been there. For those without a destination, the "Make a loop" feature generates walking or jogging routes that return to where you started. User this feature by choosing a target duration and whether you want the closest match, more shade, or even more shade. SlimShady also avoids excessive retracing of your steps and tries its best to present you will as many alternatives as possible in a reasonable amount of loading time.
For accessibility, anybody can choose to avoid paths mapped as stairs. This is mostly for routing preference, and it is not guaranteed that the route is wheelchair accessible, but is greatly helpful in informing possible accessible routes with shade. The map data we use does not have reliable curb, slope, surface, and obstruction data to claim to work as a complete solution for accessibility. If this data were to be made more publicly available in the future, this could be done effectively.
Departure planning uses local time in 30-minute increments. Because the sun moves throughout the day, SlimShady might give you different route recommendations depending on one you plan to leave.
How we built it
SlimShady uses a React client with FastAPI for geospatial data.
We create the pedestrian graph very simply from OpenStreetMap data while also avoiding the mapped restricted areas such as crossings, stairs, one-way travel lanes, and separately mapped paths. This graph contains more than 120,000 walking segments across Atlanta.
For tree cover, we're using Georgia Tech and the City of Atlanta's 2023 published urban tree canopy classification. This data has approx. one-meter resolution. What we do is sample the original canopy data along walking geometry at three-meter intervals.
Building shadows are calculated using the solar position at the chosen departure time. There are reliable building heights published on OpenStreetMap and the 2018 USGS 3DEP LiDAR; we project the cooresponding shadows across the walking network. Missing heights are then left as unknown segments. We found it better to keep the data as close to the original as possible rather than try to guess at missing information.
The routing service first calculates the fastest walk, then searches for shaded alternatives within the detour limit, which you can change in the preferences tab. Each candidate path is rescored using the time when the user is expected to reach that respective point along the segment. For loop routes, we search the real pedestrian network in multiple directions, reject the options with too much retracing, and then rank the remaining candidates according to their duration and shade preference.
On the frontend, we're using MapLibre for the map, route layers, canopy tiles, pins, and the route tracing animation (that looks really cool). It works as a responsive web app and shares most of its code with the client.
Challenges we ran into
The hardest challenge was definitely the data, knowing where to find it, and then how to combine them or knowing which sets were useful for which features.
Tree canopy data is raster-based, then the roads/paths are based on graphs, buildings are polygons, and the LiDAR data is usually a point-cloud in a different coordinate system. Aligning them on the same map took a lot of trial and error, and learning how to do the projection and validation properly.
Pedestrian routing also caused some problems. Two points that appear close on a map could have a fence, private property, building, or a disconnected path. We chose to respect these boundaries because we wanted SlimShady to be useful and not make them walk through a fence. In practice, when the data can't establish a clear route, it will explain that limitation to you and ask you to retry with another mapped entrance
Building shadow calculations were the next major challenge. Computing every Atlanta building for each route request would be way too slow, so we restrict the calculations to a small region around the requested trip and cache the surrounding buildings.
Final major issue was creating the loop paths. We wanted SlimShady to be a recreational tool too. A good walking loop should return to its start, stay close to the expected duration, and avoid repeating the same segments, and now also take into account the shade preference. We built a bounded candidate search and diversity filter to produce useful alternatives.
Accomplishments that we're proud of
The best part is that all this data is sourced from high quality, reliable Atlanta data in all aspects. SlimShady is made with Atlanta in mind and although the technology can be applied to other places, the utilization of tree cover in combination with public infrastructure is pretty unique to this city. To put things into perspective, we combined data of trees with building shadows, correlated them with time, and obtained these data samples of over 1.5 million points across Atlanta's walking paths. That is the greatest achievement we're most proud of.
Not to mention the really cool animated, color-coded routes, step-by-step directions, recalculating shade according to future data, and the ability to save routes on device.
What we learned
On the technical side, we played around with geospatial projections, raster sampling, processing point clouds, and graph search.
Bringing this idea to Atlanta was really interesting because of its uniquely dense tree canopy and close integration with other aspects of its infrastructure.
But beyond all else, we learned how to work on a high impact project in 36 hours with people who we've never worked with before.
What's next for ShadeATL
Over the course of this 36-hour hackathon, we didn't have many opportunities to test our longer suggested routes. Actually using and test-walking those routes could be interesting and may reveal things we haven't considered during the process.
Additionally, with the aforementioned accessibility tools is something we really want to work on like incorporating the slop, curb, ramp, sidewalk and surface condition data to help wheelchair users and expand accessibility.
Something else we discussed in our group was what happens when the season changes? We made SlimShady primarily as a response to the summer heat. When winter comes around and trees lose their leaves, their shadows will change. What would be the challenges and problems we tackle then. Is the problem still the sunlight then, or is it the snow? That would be a very interesting long-term problem to think about and work on.
Built With
- expo.io
- fastapi
- geojson
- lidar
- maplibre
- openstreetmap
- pandas
- python
- rasterio
- react
- sqlite
- typescript
Log in or sign up for Devpost to join the conversation.