NOTE: The repository is private as I am not allowed to post solutions according to UofT policy
Overview
This project, developed as part of the ECE297 course at the University of Toronto, focuses on building a data-driven mapping application designed to help individuals explore Toronto’s neighborhoods. By integrating data from OpenStreetMap, Toronto Police Services Open Data, and other public sources, our application visualizes key factors that influence residential decision-making, such as:
Crime Data
Public Transportation Routes
Proximity to Schools and Hospitals
Housing Prices
Income Distribution
Our goal was to create a user-friendly and minimalistic map that provides easy access to crucial information, empowering users to make informed decisions when choosing a place to live.
Features
Toggleable Subway Routes: Users can view subway and bus routes directly on the map.
Interactive Map: Users can search for paths between intersections using either text input or a mouse.
Zoom Levels: The map supports multiple zoom levels to give more detail, especially about neighborhood safety and proximity to important services like hospitals and schools.
Neighborhood Crime Data: Integrated with data from the Toronto Police Services, users can view crime rates and other safety-related information within Toronto neighborhoods.
Path Optimization: The application includes optimization features that ensure efficient pathfinding between locations.
Advanced Algorithms Implemented
As part of the course, we implemented key algorithms for routing and optimization:
Travelling Salesman Problem (TSP): We tackled this classic problem using a combination of dynamic programming, multithreading, greedy algorithms, and perturbation techniques to find optimized routes for visiting multiple locations.
Route Mapping Software: Our software integrates Dijkstra’s Algorithm for finding the shortest paths between intersections. To improve efficiency and real-time performance, we also implemented A* Heuristics on top of Dijkstra’s to enhance the speed and accuracy of route computation.
Demos
Neighbourhood Demo
Path Finding
Partial Name Search
Data Sources
OpenStreetMap: Used for generating the base map, streets, and public transportation routes
Toronto Police Services Open Data: Crime statistics were visualized alongside neighborhood data to provide users with safety information about their areas of interest.
Statistics Canada: Data on income distribution from the 2021 Census was included to offer a comprehensive view of socioeconomic factors.
Significance
With Toronto’s growing population and increasing urban density, finding the right neighborhood that balances safety, accessibility, and affordability has become more challenging. This project aimed to simplify the process by creating a consolidated mapping tool. It assists users in evaluating key factors that impact their choice of residence and helps them make more informed decisions.
Development Process
Data Gathering: We gathered data from OpenStreetMap, Toronto Police Services, and other public sources such as the Toronto Regional Real Estate Board and Statistics Canada.
Data Parsing: Using C++, we parsed and transformed large CSV datasets into JSON format for faster and easier access.
Visualization: Leveraging the GTK library, we rendered the map interface, integrated zoom features, and visualized crime, income, and other neighborhood data.
Pathfinding & Optimization: We implemented Dijkstra’s Algorithm for optimal route mapping and improved upon it using A* Heuristics for faster performance. Additionally, we addressed the Travelling Salesman Problem with dynamic programming, multithreading, and greedy strategies.
Team: Sonnet Salice, Christina Zhang, Aryan Billah