An app for calculating parameters for cities such as "average street length" or "average distance between buildings", and then allowing to calculate similarity for cities and whole regions. For assessing similarity Euclidean distance, and silhouette score are used. Multidimensional parameters calculated for the cities are reduced to two dimensions in order to plot them, or to one dimension to colour the contours of the cities on the map, with similar colors denoting similar cities. Dimensions are reduced using PCA algorithm.
- functions.py and graphFunctions.py - contain functions for calculating parameters for a given city
- experiments.py - groups functions into "profiles" that can be used to better understand similarities or differences between cities
- scores.py - calculates parameters for given cities and citeria using multiple threads. Output is returned as a DataFrame
- pca.py - contains functions for PCA algorithm
- svm.py - contains functions for SVM algorithm. It was used to validate if SVM algorithm would be able to distinguish compared regions.
- similarity.py - contains functions for calculating similarity based on different metrics and for calculating silhouette score.
- cities_similarity_app.ipynb - Jupyter file for running comparison experiments
- docker-compose.yml - docker compose file for setting up local OpenStreetMap database, Overpass API and the app.
On the two dimensional plot each point is a different city. Points with the same colour are from the same region.