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.
Published by Corpo Nazionale dei Vigili del Fuoco
Technical contact Marcello Esposito
Vitality:
69%
The vitality index, as explicited in the guidelines for the acquisition and reuse of software for Italian PA, is calculated according to the following four main categories:
- 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.
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
License AGPL-3.0-or-later
Platforms
web browser (client)
asp.net WebApi written in C# .net 4.6 (server)
List of dependencies
OSS
MongoDB
Proprietary
MS Internet Information Services
Enabling platforms None
Compliance GDPR Security Guidelines
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).