SMArt Tourism Toolkit for

Geo-temporal crowd visualization solutions

Technical Documentation

Source code

The source code developed in this scope can be found at the GitHub repository. Click on its icon to access it.

On the left a component diagram of the platform is shown. There are components and subcomponents, with a ball and socket notation for interfaces, where the ball represents a provided interface (some functionality or service that other components can use) and the socket represents a required interface (functionality or service from other components that a component needs to fulfil its own functionality).

The Visualiztation Platform is a web application with a decoupled Frontend and Backend. The Frontend uses Javascript/React and the Backend uses Python/Flask.

The Backend consists of multiple modules, some of which are called Connectors. These Connectors are responsible for fetching data from one of the Datasources and processing it so it is ready for consumption by the Frontend. The Connectors are loaded dynamically, given a configuration file provided by the Platform's administrator. This architecture makes it possible to extend the Platform so that it can fetch data from different Datasources without having to modify the existing source code. The Platform comes with several Connectors out of the box, namely for InfluxDB (time-series database), Apache Kafka (queuing system), Opendatasoft (API) and MongoDB (document-oriented database). A Relational Database is used for storing the user credentials.

Role-based Access Control Mechanisms have been implemented. This allows the platform to be hosted on a public address while still maintaining the confidentiality of the data.

The frontend depends on several libraries, the two most important ones being shown in the component diagram. A Mapping Library (MapLibre) is used for displaying geographic data from OpenStreetMap, while a Visualization Framework (deck.gl) is used for displaying crowding information on top of the map. Both of these components make use of WebGL so they can display 3D graphics and be more efficient.

A set of Python Scripts are included in the Platform's repository. These have been developed to help configure the Platform.

On the right a deployment diagram of the platform is shown. There are physical devices or cloud infrastructure on which servers are run. Arrows represent dependencies between different servers, meaning one server uses some functionality or service from another.

As the platform is a web application, a Web Browser is required to use it. Currently the platform is only supported on a Desktop OS, typically installed in a User PC.

The Datasources can be hosted in a Remote Server, although they can be hosted anywhere reachable by the Application Server. The latter is where the Backend, Frontend, and Relational Database servers reside. A dockerized setup is provided in the Git repository for serving these components. Finally, the Frontend makes use of raster tiles of a Geographic Database (OpenStreetMap), which is hosted on a Geographic Database Server.