Way To Go is a personalised, map based web app that provides route recommendations in Berlin, based on a user’s interests. You tell us what you feel like and we’ll tell you the Way To Go!
We all use Google Maps. However, when searching for directions between two places, Google only gives you the fastest, most direct routes, with very limited scope for personalisation. What if you have extra time to pass by interesting places on the way to your destination? This is what Way To Go seeks to address, asking a user to choose from pre-defined categories to determine what they will do or see along their journey. The suggested routes and route categories are based on data collected from previously walked routes and public locations across Berlin.
To learn more about what UX researchers did in order to design a prototype for the app, check out their work in Notion!
API Keys
For this demo to work, please create a Google Map API Key, and ensure that the two services below are enabled... otherwise it won't work! This API key must be in the environment variable REACT_APP_GOOGLE_PLACES_API_KEY
.
- Maps JavaScript API
- Places API
- Geocoding API
Virtual Environment
In order to run the Python and .ipynb code for data manipulation and machine learning, you need to have the following libraries installed:
- os
- json
- gpxpy
- requests
- urllib
- GoogleMaps Services
- numpy
- pandas
- maplotlib
- seaborn
- geopandas (On Windows you need to install GDAL and Fiona wheels before.)
- shapely
- scikit-learn
1. Clone repository
git clone https://github.com/TechLabs-Berlin/wt21-way-to-go.git
2. Move to new directory
cd wt21-way-to-go
3. Install dependencies
npm install
4. Start up local development server
npm start
5. Run app in development mode
http://localhost:3000
6. Navigate into folder
cd flask
7. Create virtual environment
python3 -m venv venv
8. Activate environment
8.1 for MacOS
. venv/bin/activate
8.2 for Windows
venv\Scripts\activates
9. Install the requirements
pip install -r requirements.txt
10. Convert the .csv database into an SQL database
i. Move the "joined_data.csv" in the same folder.
ii. Create the SQL Database running create_sqlite_db.py.
Output file is the "routes.db".
11. Export Flask
export FLASK_APP=api
12. Run flask server
flask run
Soon to be deployed
We worked with data on popular routes and with data on points of interest that pedestrians might want to look for when walking. The data is geographically constrained on Berlin and surroundings.
For obtaining the routes data, you need to scrape wandermap.net on the query "Berlin".
The data on points of interest can be scraped from OpenStreetMap.org filtering for the following place type categories:
- “amenity”: “bar”
- “amenity”: “cafe”
- “amenity”: “ice_cream”
- “amenity”: “restaurant”
- “amenity”: “nightclub”
- “amenity”: “atm”
- “amenity”: “bench”
- “amenity”: “drinking_water”
- “historic”: “yes”
- “leisure”: “picnic_table”
- “natural”: “tree”
- “shop”: “convenience”
- “tourism”: “art_work”
- “tourism”: “attraction”
- “tourism”: “gallery”
- “tourism”: “viewpoint”
For data visualisation, we used post code data from suche-postleitzahl.org, together with Dr. Juan Camilo Orduz'wonderful Github repository and blogpost "Open Data: Germany Maps Viz"
Pending to deploy on: https://www.heroku.com/
Merve Büşra Duman, Emilio Flores Bartelt, Stefanie Senger
Sueon Ahn, Paula Sebastiano
Leonor Cascais, Sara Pulido, Leonel Acosta