Housing inequality is an ever-growing issue; as the wealth gap grows and infrastructure degrades, more and more people are forced into communities well below the average standard of living.
Although the cause for such inequalities largely stems from a lack of economic opportunities, we chose to focus on fighting the negative effects of housing inequality on residents: from community safety, education, to work opportunity. Based on our research, we found that safety issues in low-income areas prevent people from going to school, work, or even just beyond the front steps of their homes and that they often lack reliable transportation.
To help these people safely access the opportunities they need, we created PathAngel, an app which provides the safest and most efficient walking path to any location!
What it does
PathAngel finds the safest walking path for users by analyzing Google Maps suggested walking routes against location-based crime history. Internally, we generate a crime rating for each path using a historic crime dataset for New York City to weigh and compare paths.
How we built it
PathAngel is a native Android App written in Java, with a Python backend running on Flask.
Using historical crime data from the public NYC Open Data database, we use Pandas to weigh the walking paths provided by Google Maps Directions API and choose the safest one.
In order to speed up these computations, we switch from using Latitude/Longitude to the standard New York State coordinate system. To do this, we leverage Selenium in tandem with Pandas to both calculate and aggregate this information.
We also relied heavily on the Google Maps API to power the frontend experience (e.g. displaying the map, drawing the walking path, etc.)
Challenges we ran into
- We struggled with converting points of latitude and longitude into the New York state coordinate system, as there was not much information regarding how the system works. We tried using the UTM system to generate accurate coordinates but were unable to create an algorithm that performed the conversion, instead opting to use a prebuilt solution by webscraping results using Selenium.
- Connecting our Flask backend in Python to the Android front-end app, due to timeout issues and network configuration problems
Accomplishments that we're proud of
- It works!
- The frontend map and navigation UI properly displays the selected path with an accurate heat map of crime hotspots (plus it looks great!)
- Successfully leveraging Selenium as a work-around for converting points of latitude and longitude into the New York state coordinate system to improve performance
What we learned
- We learned how to connect the front and backends of our project effectively
- How to use Flask for a backend
- Using git for version control and efficient team collaboration
What's next for PathAngel
- Expanding our data sets to cover more cities beyond New York, New York.
- Real-time route option analysis for joggers.
- Including an elevation rating so that people who find it difficult to walk up hills can select less intense routes
- Integrating a shade rating for campus roads so that students can find the path with the most shade to their classes