finds grocery stores and stuff next to route (gpx)

Overview

Route-Report

Route report is a command-line utility that can be used to locate points-of-interest near your planned route (gpx). The results are based on the database by OpenStreetMap.

If the metadata for the requested countries is not present then Route-Report first downloads OpenStreetMap metadata. Then, we use osmosis in the background to filter through the metadata and extract relevant locations. This has to be done only once for each country you want to use and the resulting, filtered file is quite small (<1MB for Germany). If you want to retrieve an up-to-date version of the files you can use the -r flag.

Note that the metadata files in this repo are only as up-to-date as their change date. You may want to download more recent files (-r flag). Supermarkets don't move often though :P

Usage

usage: route_report.py [-h] -f [route.gpx] [-d [<distance>]] [-c [countries]] [-r] [-o print|csv|google-sheets|pdf|1D-map]
                       [-p food-shop|petrol-station|water]

Finds stuff next to your route.

optional arguments:
  -h, --help            show this help message and exit
  -f [route.gpx], --input-file [route.gpx]
                        used to supply your gpx file
  -d [<distance>], --search-distance [<distance>]
                        defines approx. search radius around route in kilometers (default=1km)
  -c [countries], --country-codes [countries]
                        comma separated list of country codes (ISO 3166-1 Alpha-2 --> see Wikipedia), e.g., DE,US,FR
                        (default=AUTO --> autodetection)
  -r, --redownload-files
                        set if you want to update the already downloaded and preprocessed country files
  -o print|csv|google-sheets|pdf|1D-map, --output-modes print|csv|google-sheets|pdf|1D-map
                        comma separated list of output modes, e.g., print,csv (default=print)
  -p food-shop|petrol-station|water, --points-of-interest food-shop|petrol-station|water
                        comma separated list of points-of-interest the program is supposed to look for along the route
                        (default=food-shop)

Points of Interest

Poi-groups are a collection of OpenStreetMap (OSM) tags are grouped together in our program. For example the poi-group food-shop represents convenience stores, grocery stores, bakeries, etc. The right column in the file ./other_data/osm_tags.csv shows you poi-groups you can search for along your route using the -p flag (see Example). The left column in that file represents all OSM tags that we search for given a specific poi-group(s).

You can change ./other_data/osm_tags.csv however you like, just be aware that the metadata files in this repository only contain locations with the tags we are using. If you wish to use your own tags you can refresh your metadata files using the -r flag after you have changed ./other_data/osm_tags.csv.

Autodetection of countries

We autodetect countries based on the gpx file you provide using the thematicmapping dataset. If you wish to use only a subset of country datasets you can specify them using the -c flag.

Autodetection of countries takes about 30s (on my laptop) for a 1000km route. This will take even longer for longer routes. Therefore, I suggest you directly specify countries with the -c if computing resources are scarce.

Example

Assuming you have route planned on Komoot and you want to know about food-shop and petrol-station (-p) next to your route that are within 1km (-d) you can download the gpx file and then run the command below (route).

>>> python3 route_report.py -f test_route_andorra.gpx -p food-shop,petrol-station -d 1

     cum_distance_km                      poi_name  poi_distance_to_route    poi_lat  poi_long       poi_group
20                 0                   Consciència               0.085418  42.508222  1.520737       food-shop
11                 0               Eco Supermacats               0.474783  42.505049  1.514742       food-shop
22                 0                    Fleca Font               0.006591  42.507441  1.521643       food-shop
30                 0                           NaN               0.118936  42.506687  1.523430       food-shop
5                  0                           NaN               0.658057  42.501832  1.515404       food-shop
59                 1                  Andorra 2000               0.320416  42.505714  1.529197       food-shop
89                 1               Biocoop Andorra               0.225353  42.508006  1.537685       food-shop
81                 1                       Caprabo               0.133882  42.508700  1.534714       food-shop
66                 1                    E. Leclerc               0.070915  42.508874  1.532163       food-shop
92                 1                    Fleca font               0.088633  42.509274  1.538085       food-shop
73                 1                  Santa Glòria               0.187045  42.508125  1.533945       food-shop
60                 1                       Super U               0.088410  42.507963  1.530428       food-shop
59                 1             bonÀrea (Andorra)               0.260034  42.506250  1.529328       food-shop
59                 1                    de bon Gra               0.157387  42.507171  1.529441       food-shop
60                 1                           NaN               0.070890  42.508139  1.530399       food-shop
113                2                  13-th street               0.013526  42.509196  1.540867       food-shop
115                2                         Artal               0.107198  42.508185  1.539805  petrol-station
145                2                       Artal 2               0.121834  42.510551  1.548264  petrol-station
130                2                        Repsol               0.103972  42.508329  1.545053  petrol-station
126                2                           NaN               0.006941  42.509005  1.543588       food-shop
208                4                            BP               0.018608  42.522095  1.559524  petrol-station
207                4                         Cepsa               0.024718  42.521652  1.559482  petrol-station
248                6                         Cepsa               0.020690  42.531754  1.577210  petrol-station
251                6           Comer la Clementina               0.171664  42.533281  1.579239       food-shop
292                7                            BP               0.011910  42.536710  1.589220  petrol-station
273                7                            BP               0.021828  42.533517  1.585820  petrol-station
292                7               Comerç les Bons               0.234051  42.537693  1.586538       food-shop
267                7                           ECO               0.387443  42.536011  1.582085       food-shop
266                7                        Repsol               0.037308  42.533489  1.584708  petrol-station
267                7                           NaN               0.388133  42.536065  1.582158       food-shop
305                8  Avenida Doctor Mitjavila, 3-               0.643809  42.542483  1.599984       food-shop
310                8                          Esso               0.019175  42.542198  1.591422  petrol-station
433               11                       Caprabo               0.016012  42.566131  1.598642       food-shop
434               11        Les delícies del Jimmy               0.026433  42.566201  1.598758       food-shop
451               11                         Total               0.031216  42.566991  1.600830  petrol-station
536               15                            BP               0.513669  42.579580  1.640062  petrol-station

Ignore the leftmost column. The column cum_distance_km represents the point of the route where the grocery store has been found and the column shop_distance_to_route represents how far away the shop is from the route in kilometers. For example, after riding this route for 11 kilometers you will encounter a Caprabo (food-shop) 16m next to the route.

Future Work

The filtering part (with osmosis) only works on Linux for now. I plan on supplying either already filtered files for each country or some alternative that works on Windows/Mac in the future. Note that the rest of the program should still work on other platforms.

There are many minor touches missing, e.g., a nicer output, creating an executable, custom alerts, or supporting the imperial system.

Owner
Clemens Mosig
Clemens Mosig
Insert SVGs into matplotlib

Insert SVGs into matplotlib

Andrew White 35 Dec 29, 2022
GitHub Stats Visualizations : Transparent

GitHub Stats Visualizations : Transparent Generate visualizations of GitHub user and repository statistics using GitHub Actions. ⚠️ Disclaimer The pro

YuanYap 7 Apr 05, 2022
Python Data. Leaflet.js Maps.

folium Python Data, Leaflet.js Maps folium builds on the data wrangling strengths of the Python ecosystem and the mapping strengths of the Leaflet.js

6k Jan 02, 2023
Print matplotlib colors

mplcolors Tired of searching "matplotlib colors" every week/day/hour? This simple script displays them all conveniently right in your terminal emulato

Brandon Barker 32 Dec 13, 2022
2021 grafana arbitrary file read

2021_grafana_arbitrary_file_read base on pocsuite3 try 40 default plugins of grafana alertlist annolist barchart cloudwatch dashlist elasticsearch gra

ATpiu 5 Nov 09, 2022
A little logger for machine learning research

Blinker Blinker provides a fast dispatching system that allows any number of interested parties to subscribe to events, or "signals". Signal receivers

Reinforcement Learning Working Group 27 Dec 03, 2022
Use Perspective to create the chart for the trader’s dashboard

Task Overview | Installation Instructions | Link to Module 3 Introduction Experience Technology at JP Morgan Chase Try out what real work is like in t

Abdulazeez Jimoh 1 Jan 22, 2022
Dimensionality reduction in very large datasets using Siamese Networks

ivis Implementation of the ivis algorithm as described in the paper Structure-preserving visualisation of high dimensional single-cell datasets. Ivis

beringresearch 284 Jan 01, 2023
RockNext is an Open Source extending ERPNext built on top of Frappe bringing enterprise ready utilization.

RockNext is an Open Source extending ERPNext built on top of Frappe bringing enterprise ready utilization.

Matheus Breguêz 13 Oct 12, 2022
Graphical display tools, to help students debug their class implementations in the Carcassonne family of projects

carcassonne_tools Graphical display tools, to help students debug their class implementations in the Carcassonne family of projects NOTE NOTE NOTE The

1 Nov 08, 2021
This project is an Algorithm Visualizer where a user can visualize algorithms like Bubble Sort, Merge Sort, Quick Sort, Selection Sort, Linear Search and Binary Search.

Algo_Visualizer This project is an Algorithm Visualizer where a user can visualize common algorithms like "Bubble Sort", "Merge Sort", "Quick Sort", "

Rahul 4 Feb 07, 2022
Collection of scripts for making high quality beautiful math-related posters.

Poster Collection of scripts for making high quality beautiful math-related posters. The poster can have as large printing size as 3x2 square feet wit

Nattawut Phetmak 3 Jun 09, 2022
Data-FX is an addon for Blender (2.9) that allows for the visualization of data with different charts

Data-FX Data-FX is an addon for Blender (2.9) that allows for the visualization of data with different charts Currently, there are only 2 chart option

Landon Ferguson 20 Nov 21, 2022
Visualize and compare datasets, target values and associations, with one line of code.

In-depth EDA (target analysis, comparison, feature analysis, correlation) in two lines of code! Sweetviz is an open-source Python library that generat

Francois Bertrand 2.3k Jan 05, 2023
Massively parallel self-organizing maps: accelerate training on multicore CPUs, GPUs, and clusters

Somoclu Somoclu is a massively parallel implementation of self-organizing maps. It exploits multicore CPUs, it is able to rely on MPI for distributing

Peter Wittek 239 Nov 10, 2022
AB-test-analyzer - Python class to perform AB test analysis

AB-test-analyzer Python class to perform AB test analysis Overview This repo con

13 Jul 16, 2022
Python histogram library - histograms as updateable, fully semantic objects with visualization tools. [P]ython [HYST]ograms.

physt P(i/y)thon h(i/y)stograms. Inspired (and based on) numpy.histogram, but designed for humans(TM) on steroids(TM). The goal is to unify different

Jan Pipek 120 Dec 08, 2022
Tools for calculating and visualizing Elo-like ratings of MLB teams using Retosheet data

Overview This project uses historical baseball games data to calculate an Elo-like rating for MLB teams based on regular season match ups. The Elo rat

Lukas Owens 0 Aug 25, 2021
Dipto Chakrabarty 7 Sep 06, 2022
A script written in Python that generate output custom color (HEX or RGB input to x1b hexadecimal)

ColorShell ─ 1.5 Planned for v2: setup.sh for setup alias This script converts HEX and RGB code to x1b x1b is code for colorize outputs, works on ou

Riley 4 Oct 31, 2021