Giter Club home page Giter Club logo

mytourmaker's Introduction

project logo

About MyTourMaker

MyTourMaker is a program for planning tours, visiting attractions and learning about surroundings in a more convenient way.

Making tours of an unknown (or even known) city can take several hours and lots of internet research. Why would we do that when we can use detailed maps that are available to everyone online?

MyTourMaker uses OpenStreetMap data to generate bespoke tours in real world cities, considering preferred transport type, attractions and search radius.

Video introduction:

https://www.youtube.com/watch?v=ZVXfoRSrRUI

Dependencies

MyTourMaker uses following APIs:

Overpass API serves data about custom parts of OpenStreetMap data. In MyTourMaker, there are multiple hard-coded public Overpass API providers, but if all of them will ever be unavailable, user can enter their own preferred Overpass API URL.

MyTourMaker uses Mapbox GL JS, developed by Mapbox - JavaScript library that allows to implement vector maps on the web. It is used in MyTourMaker to show interactive map with waypoints and a route line.

MyTourMaker has the GUI implemented using PyQt5 - Python implementation of Qt, developed by Riverbank Computing. I chose PyQt5 because it can be executed on both Windows and UNIX-like systems, as well as its diverse functionality.

MyTourMaker uses GeoPy for some computations with geodesic formulas.

MyTourMaker uses OSMPythonTools for convenient implementation of Nominatim API - https://github.com/mocnik-science/osm-python-tools .

Nominatim API finds locations on Earth by their name and/or address. I used OSMPythonTools library to save time during development.

Execution

In order to execute MyTourMaker, "Resources" subdirectory and "settings.json" file both have to be in the same directory as source code/executable file of MyTourMaker.

You can download an executable for x86 Windows systems here.

Using the link above, you can download and launch the program without worrying about the dependencies. MyTourMaker works well on Windows 8, 8.1, 10, 11.

Compilation/interpretation

In order to compile/interpret MyTourMaker from its source code, following Python packages and their dependencies have to be installed:

  • pip install PyQt5
  • pip install qt_material
  • pip install OSMPythonTools
  • pip install requests
  • pip install geopy
  • pip install PyQtWebEngine

In order to compile MyTourMaker, you need to make changes to make changes to the “qt_material” Python library. I have modified the stylesheet to improve the aesthetics. Go to your_python_directory/Lib/site_packages/qt_material and replace the “material.css.template” file with the file that I have saved in the “Resources” directory. Without replacing the file, the GUI of the program you compile may work incorrectly.

Don't forget to enter your own Mapbox API token and OpenRouteService API token - please search for "enter.your.token" strings in the code.

Plans, thoughts

This was my coursework back in college - I had a lack of time and excess of curiosity/ambition then (I still have both in university :)). In my opinion, this led to the need of major code refactoring in the future + possible replacement of Openrouteservice to Mapbox due to better free tier of the directions API.

mytourmaker's People

Contributors

kirilovich-vlad avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.