geofleet 0.1

geofleet

VVFGeoFleet is a system allowing to track a fleet, where vehicles are equipped with GPS enabled devices periodically sending their position.

Technical detail

Vitality:

64%

i

Vitality is an index calculated following the four main categories of the document:

  • Code activity: the daily number of commits and merges;
  • Release history: the daily number of releases;
  • User community: the number of unique authors;
  • Longevity: the age of the project. The ranges of every measure can be found in the vitality-ranges.yml file in https://github.com/italia/developers-italia-backend

Development status: stable


Software functionality

Web based frontend for public applicants.

Web based backoffice frontend to check, navigate submitted applications.

RESTful backend

Publishes real-time statistics on the system usage.

Corpo Nazionale dei Vigili del Fuoco

detailed information

geofleet 0.1

geofleet

Last release 2018-05-17 (0.1)

Type of maintenance internal

Api documentation geofleet API

Extended description

VVFGeoFleet is a system allowing to track a fleet, where vehicles are equipped with GPS enabled devices periodically sending their position. The system is composed of two main modules: (i) a backend module, based on a RESTful server; (ii) a frontend module, based on an Angular GUI. The backend is written in C# Asp.Net WebApi, using Visual Studio 2017 Community Edition, with a persistence layer based on MongoDB document database. It collects position messages coming from GPS enabled devices installed on board the vehicles; publishes REST actions to efficiently query the collected data. Queries allow, for instance, to: (i) getting the current fleet position (also by vehicle class); (ii) getting a vehicle position; (iii) getting a vehicle tracked path, within a given time interval; (iv) getting vehicles near to a given point (also by vehicle class); (v) getting vehicles within a given rectangle; (vi) getting vehicles inactive since too much time. The backend is optimized to collect data and hold them forever, without the need for purging old data periodically. The RESTful API leverages the MongoDB database and its spatial features. All database queries are carefully optimized to exploit indexes; thus, the response time is extremely low even in case of millions messages stored. The RESTful API enables the frontend to graphically display data, but it is especially conceived to be queried by other applications (B2B) in order to act as a decision support system (DSS). The frontend is based on Angular6 and uses Google maps javascript API to show information. Currently the source code and the RESTful interface is a mix of English and Italian words. During the implementation, the Italian words will be translated as much as possible. VVFGeoFleet can receive keep-alive messages (e.g. every minute or so) from vehicles, in order to promptly know whether a vehicle is out-of-field or the GPS device is faulty. In presence of many vehicles (i.e. more than 10.000) those messages might be heavy to be stored. To cope with this issue, VVFGeoFleet holds only messages carrying position deltas, while interpolating messages received by the same vehicle in the same position. Interpolation information is saved together with the interpolating messages, so to prevent such inforation to get lost. On each position message reception, VVFGeoFleet computes the vehicle velocity comparing the received message with the latest stored one. In case such velocity exceeds a given threshold, a warning is traced in the application log (based on log4net). Too high velocities might be due to bad GPS device configuration of faulty GPS device. The system publishes statistics about message arrival per day, total number of stored messages, messages arrival rate, etc. Statistics can be read to check correct system operation, and can be processed through automated systems in order to raise alarms in case of anomalous indicators. Posting position messages can be subject to client authorization, based on IP source address. The web.config allows to enable/disable IP-based authorization through a flag and to specify the list of allowed IP and/or networks (e.g. 127.0.0.1, 8.8.8.8, 10.0.0.0/24, 172.16.0.0/16).

Other software that may interest you

back to contents