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
Rick and Morty Data Visualization with python

Rick and Morty Data Visualization For this project I looked at data for the TV show Rick and Morty Number of Episodes at a Certain Location Here is th

7 Aug 29, 2022
Generate knowledge graphs with interesting geometries, like lattices

Geometric Graphs Generate knowledge graphs with interesting geometries, like lattices. Works on Python 3.9+ because it uses cool new features. Get out

Charles Tapley Hoyt 5 Jan 03, 2022
JupyterHub extension for ContainDS Dashboards

ContainDS Dashboards for JupyterHub A Dashboard publishing solution for Data Science teams to share results with decision makers. Run a private on-pre

Ideonate 179 Nov 29, 2022
A small timeseries transformation API built on Flask and Pandas

#Mcflyin ###A timeseries transformation API built on Pandas and Flask This is a small demo of an API to do timeseries transformations built on Flask a

Rob Story 84 Mar 25, 2022
Debugging, monitoring and visualization for Python Machine Learning and Data Science

Welcome to TensorWatch TensorWatch is a debugging and visualization tool designed for data science, deep learning and reinforcement learning from Micr

Microsoft 3.3k Dec 27, 2022
This is a small program that prints a user friendly, visual representation, of your current bsp tree

bspcq, q for query A bspc analyzer (utility for bspwm) This is a small program that prints a user friendly, visual representation, of your current bsp

nedia 9 Apr 24, 2022
Insert SVGs into matplotlib

Insert SVGs into matplotlib

Andrew White 35 Dec 29, 2022
This is my favourite function - the Rastrigin function.

This is my favourite function - the Rastrigin function. What sparked my curiosity and interest in the function was its complexity in terms of many local optimum points, which makes it particularly in

1 Dec 27, 2021
Streamlit dashboard examples - Twitter cashtags, StockTwits, WSB, Charts, SQL Pattern Scanner

streamlit-dashboards Streamlit dashboard examples - Twitter cashtags, StockTwits, WSB, Charts, SQL Pattern Scanner Tutorial Video https://ww

122 Dec 21, 2022
A central task in drug discovery is searching, screening, and organizing large chemical databases

A central task in drug discovery is searching, screening, and organizing large chemical databases. Here, we implement clustering on molecular similarity. We support multiple methods to provide a inte

NVIDIA Corporation 124 Jan 07, 2023
Make your BSC transaction simple.

bsc_trade_history Make your BSC transaction simple. 中文ReadMe Background: inspired by debank ,Practice my hands on this small project Blog:Crypto-BscTr

foolisheddy 7 Jul 06, 2022
Matplotlib tutorial for beginner

matplotlib is probably the single most used Python package for 2D-graphics. It provides both a very quick way to visualize data from Python and publication-quality figures in many formats. We are goi

Nicolas P. Rougier 2.6k Dec 28, 2022
Regress.me is an easy to use data visualization tool powered by Dash/Plotly.

Regress.me Regress.me is an easy to use data visualization tool powered by Dash/Plotly. Regress.me.-.Google.Chrome.2022-05-10.15-58-59.mp4 Get Started

Amar 14 Aug 14, 2022
HW 02 for CS40 - matplotlib practice

HW 02 for CS40 - matplotlib practice project instructions https://github.com/mikeizbicki/cmc-csci040/tree/2021fall/hw_02 Drake Lyric Analysis Bar Char

13 Oct 27, 2021
Type-safe YAML parser and validator.

StrictYAML StrictYAML is a type-safe YAML parser that parses and validates a restricted subset of the YAML specification. Priorities: Beautiful API Re

Colm O'Connor 1.2k Jan 04, 2023
Project coded in Python using Pandas to look at changes in chase% for batters facing a pitcher first time through the order vs. thrid time

Project coded in Python using Pandas to look at changes in chase% for batters facing a pitcher first time through the order vs. thrid time

Jason Kraynak 1 Jan 07, 2022
Graphing communities on Twitch.tv in a visually intuitive way

VisualizingTwitchCommunities This project maps communities of streamers on Twitch.tv based on shared viewership. The data is collected from the Twitch

Kiran Gershenfeld 312 Jan 07, 2023
Flexitext is a Python library that makes it easier to draw text with multiple styles in Matplotlib

Flexitext is a Python library that makes it easier to draw text with multiple styles in Matplotlib

Tomás Capretto 93 Dec 28, 2022
A simple python tool for explore your object detection dataset

A simple tool for explore your object detection dataset. The goal of this library is to provide simple and intuitive visualizations from your dataset and automatically find the best parameters for ge

GRADIANT - Centro Tecnolóxico de Telecomunicacións de Galicia 142 Dec 25, 2022
This is Pygrr PolyArt, a program used for drawing custom Polygon models for your Pygrr project!

This is Pygrr PolyArt, a program used for drawing custom Polygon models for your Pygrr project!

Isaac 4 Dec 14, 2021