Inspiration
RORA was inspired by a simple idea: the fastest route is not always the safest route. Flooding and other road hazards can make normal navigation routes dangerous, especially for elderly people, people with disabilities, and anyone who may have difficulty reacting quickly to unsafe conditions.
We wanted to create a navigation system that does more than calculate travel time. RORA considers hazards along a user's route and recommends a safer alternative when necessary.
What it does
RORA is a hazard-aware navigation application that combines routing with real-world flood information.
Users can enter a starting point and destination, choose between driving and walking, or use their current location. RORA calculates the normal route and checks whether it intersects an active flood hazard.
If the route is safe, RORA simply displays the normal route. If a flood affects the route, RORA identifies the relevant hazard, warns the user, and generates an alternative route designed to avoid the affected area.
Our current prototype uses historical NYC FloodNet sensor data as a replay to demonstrate how the application can respond as flood conditions change.
How we built it
We built RORA using Python and Flask for the backend and HTML, CSS, JavaScript, and Leaflet for the frontend.
We use openrouteservice for address autocomplete, geocoding, and route generation. Flood information comes from NYC Open Data and FloodNet sensor datasets.
The backend converts sensor locations into geographic hazard zones and checks whether the route geometry intersects those areas. When a flood affects the original route, the hazard area is sent back to the routing service as an area to avoid, allowing RORA to calculate a safer alternative.
GeoJSON is used to transfer route and geographic information between the backend and the interactive Leaflet map.
Challenges we ran into
One of our biggest challenges was combining different mapping technologies and datasets. Some systems represent coordinates as longitude and latitude while others use latitude and longitude, so correctly converting geographic information was extremely important.
We also had to make sure RORA only showed hazards that actually affected the user's route. Simply displaying every nearby flood sensor would create unnecessary warnings and make the application harder to use.
Another challenge was accessing real-time flood information. FloodNet provides public historical data, while access to its minute-level data requires additional access. Because of this, we created a historical replay system that demonstrates how RORA would behave with changing sensor readings.
We also worked through API authentication, deployment, Git collaboration, mobile design, and keeping the frontend and backend synchronized.
Accomplishments that we're proud of
We are proud that RORA does more than display flood locations on a map. It analyzes the actual route, determines whether a hazard matters to the user's trip, and generates an alternative route only when necessary.
We successfully implemented multiple flood sensors, driving and walking modes, address autocomplete, current-location support, route distance and travel time, dynamic flood visualization, mobile-friendly controls, and hazard-aware rerouting.
We were also able to combine multiple APIs and public datasets into a working web application during the hackathon.
What we learned
Through RORA, we learned how routing APIs, geographic coordinates, GeoJSON, public datasets, and interactive maps can work together in a real application.
We also learned that safety information has to be relevant. Showing every possible warning can overwhelm a user, so RORA focuses only on hazards that directly affect the selected route.
Most importantly, we learned the importance of clearly distinguishing between live, historical, and simulated data when developing applications involving safety information.
What's next for RORA
Our next step is to integrate real-time hazard feeds so RORA can respond to changing conditions as they happen.
We also want to expand RORA beyond flooding by incorporating severe weather, road closures, construction, and crowdsourced hazard reports.
Future versions could include real-time notifications, accessibility preferences, personalized routing, and support for additional cities and sensor networks.
Our long-term goal is for RORA to help answer not only, "What is the fastest way to get there?" but also, "What is the safest way to get there?"
Built With
- api
- css
- data
- flask
- floodnet
- geojson
- html
- javascript
- leaflet.js
- nyc
- open
- openrouteservice
- openstreetmap
- python
- render
- rest
Log in or sign up for Devpost to join the conversation.