This repository, accessible through the URL https://github.com/cecilianor/QT-thesis, hosts the bachelor project authored by Eimen Oueslati, Nils Petter Skålerud, and Cecilia Norevik Bratlie. The core goal of the project is to develop a vector-based map application that uses the MapBox vector format. The application is developed in C++ with the Qt framework.
The project is part of a bachelor thesis at the Norwegian University of Science and Technology (NTNU). The solution is developed in C++17 and relies heavily on the Qt framework. Cmake is the project's build system. The application renders geographical data in both vector and raster format, and the data is supplied by MapTiler. The application first requests and parses styling data, and then requests, decodes, styles, and renders the geographical data on screen. The application is multithreaded, and the current solution only supports the Basic v2 map style. The requested map tiles are cached on disk for better performance.
Tool | Version | Usage |
---|---|---|
Windows | 22H2 | Primary OS used for development |
Ubuntu | 22.04 | Used for Dockerising the project (for GitHub CI/CD) |
Qt | 6.7.0 | Rendering, networking, Protobuf parsing, containers, threading, helper utilities |
GCC | 11.4.0 | C++ compiler for Ubuntu |
MSVC | v143 | C++ compiler for Windows |
Cmake | 3.22.1 | Generating build files |
Ninja | 1.10.2 | Running compilation and linker step on build files |
Protobuf | 3.21.12 | Dependency for QtGrpc module |
Image Magick | 6.9.11 | Image comparison during rendering output tests |
Rendering: The application is able to render polygons, lines, and text, including road names. There is no support for icons in the current version of the application.
Styling: The only supported map style is the Basic v2 map style.
UI: Moving the map (panning) and zooming can be done using either the mouse/mouse wheel or the keyboard. It's also possible to move to a specified location using longitude and latitude coordinates. For the sake of the thesis, there are two buttons to move to Gjøvik NTNU's location) or Nydalen in Oslo (Qt's location).
https://github.com/cecilianor/Qt-thesis/assets/73423072/b443ae4d-13ac-49cd-91fb-37ed658d0878
Build instructions can be found in BUILD_INSTRUCTIONS.md
Once built, instructions on how to run the code can be found in HOW_TO_RUN.md
Details on the rendering testing subsystem can be found in tests/merlin/README.md