The problem's we're focused on:
- Low user feedback and engagement with D.O.T. databases in real-time makes it difficult to deal with emergency evacuation rerouting of individuals or VIPs.
- Requires bringing together real-time sensors (IoT) with user reporting via web and mobile.
- Web service for central reporting / querying of activity from IoT devices or mobile clients (similar to waze) with iPhone/iPad mobile app example with trip logging.
- Cross-platform codebase deployable at any scale on Linux / macOS / Windows.
- APIs for querying the gis data to extract meta-data for a given lat/long.
- Real-time reporting and streaming data using SignalR.
- Real-time streaming data over WebSockets.
- Automated User-Reporting of Incidents (ex: Waze).
- Cloud Services with High-Scalability
- GIS data manipulation with PostGIS
- .NET Core Library: Net Topology Suite
- Open Street Maps
Challenges Demanding Solutions
- Logistics monitoring needs to be multi-dimensional and include all modes of transportation and systems of reporting (Desktop/Mobile, Web, IOT).
- Vehicle, asset, military, Child, Airplane, drone, and other IOT tracking is a complex mixture of systems and schemas feeding the big data problem that demands solutions for various consumers of traffic and rerouting recommendations to optimally get their PRODUCTS AND SERVICES TO A destination.
- Commercial Services rely on Public Data with varying degrees of accuracy. Possible TO manipulate data.
- User engagement with DOT limited. Difficult to get feedback reliably.
- Variables for acquiring users to get data or commercial data acquisition: unreliable / expensive.
- Emergency evacuation routing when users rely on commercial apps prone to traffic jams / congestion.
Datasets Parsed (Not all in demo)
- Average Daily Traffic
- Dynamic Message Signs (Active)
- Map Data
- Paving Schedules
- Quarterly Crash Data
- Road Construction
- Signal Data: Controller Inventory
- Signal Data: Controller Status
- Signal Data: Detector Data
- Signal Phase and Timing (SPaT)
- Speed Limits
- Traffic Signals
- Travel Advisories & Lane Closures
- Truck Parking
- Truck Restrictions
- VDOT Incidents
- Weather Events (Long)
- Weather Events (Long Defaults)
- Weather Events (Short)
Overview of System
The multi-tier cloud or on-premise hosted application stack we developed is a front and back-end service that provides real-time data from the Smarter Roads dataset as well as other data modules from Bing Maps, specifically for interacting with the data in ways that could meet the demands of any consumer. The back-end service and database handles querying and streaming the JSON to the Bing Maps clients that are registering pins, drawing shapes, and handling visualizations.
- NET Core 2.1.x with EntityFramework Core / Net Topology Suite (For shape file processing).
- SignalR used for real-time updates over WebSockets with fallback using long-polling.
- Database of GIS Data (shapefile datasets) loaded into PostgreSQL server with PostGIS extension enabled. -- Able to swap to using MS SQL, MySQL, or Oracle DB.
- Hosted on Ubuntu 18.04 LTS Server Running nginx.
- Deployable to Azure. Can run in a container with Docker. Deployable to Kubernetes Cluster.
- Rendered Razor Pages (.cshtml) using .NET Core.
- Views styled with HTML/CSS/JS using Bootstrap 4.
- Compiled and Bundled with NPM/WebPack.
- Bing Maps Used with boundary of Virginia highlighted.
- Able to Swap with Google Maps, HERE Maps, Open Street Maps, or others.
Mobile Client for iOS
- Written in Swift 4 for iOS. Can be deployed to iPhones, iPads, and iPods.
- Track Trip with GPS report location and speed to server during route.
- Allows for comparison with speed limits for alert handling server-side (ex: Fleet/Teen Tracker).
- Badges awarded for activity during trips (current examples for distance).
- Configurable awards. User leaderboards Managed with Apple’s Game Center.
- Map demonstrating viewing VDOT SmarterRoads Data Sent to Mobile Device via Restful API.
Included Console Applications
- .NET Core 2.x Sample for processing shape files with NetTopologySuite
- .NET Framework 4.x Sample for processing shape files with NetTopologySuite
Written primarily in C# for all back-end functionality using .NET Core SDK 2.1.x, EntityFrameworkCore, SignalR, Razor Pages, and NetTopologySuite; whereas, front-end client-side functionality was developed using Webpack, Typescript, Bootstrap, and Bing Maps. The server setup was handled using Node.js (NPM used for package management in webpack), Nginx as proxy on Ubuntu 18.04 LTS. The software pulls in the data from the SmarterRoads system and then parses it for querying by compiling a database to store shape file features and their geometries. The data that is real-time is updated on clients over WebSockets using SignalR with both long-polling and streaming support. The clients and server communicate over a RESTful JSON interface.
Parsing the shape files efficiently required exporting features to a database for faster querying. Using a singleton of the shapefile reader in memory wasn't efficient or thread-safe and offered no indexing or caching of computed queries. The sheer volume of the data, and making it intuitive so that users can understand why this is important, and how it impacts them.
- Communication between team members across timezones and operating systems.
- Team’s varying experience with specific libraries and nuances with build configurations.
- Narrowing project scope once efficient processing of all datasets was achieved.
- Caffeine tolerance development.
- Headphone battery depletion.
Being here to represent my team with a piece of software that scales better, offers low response times, high security and privacy, runs on any platform (Windows, Linux, Mac), and can work with MySQL, MS SQL, PostgreSQL, In-Memory DB, and Oracle DB, while meeting the needs of any consumer that interacts with Maps in Virginia.
- Cross-Platform Codebase: Server and Client can run on both 64-bit and 32-bit versions of Linux, MACOS, and WIndows.
- Scalable on the cloud or on-premise without being tied to a single node: stateless.
- Deployable as discrete installable desktop application using Electron.NET.
- Mobile client with trip tracking and reporting of location / speed.
- Completes most of what would be required to update 511Virginia.org.
- Extensible and able to be adapted to solutions for various logistical verticals.
How to handle big-data in real-time with high query rates from a multitude of device platforms using a cross-platform codebase that uses the very latest in design methodology, best practices, and cutting-edge cloud service technology.
- Big-Data real-time processing for logistical applications that require route redirection based on changing conditions.
- Process GIS Data with efficient, high–throughput, low latency, queries that are location dependent or require mathematical comparisons (distance to, within bounds, etc).
- Processing multitude of controllers, systems, map features, message systems, and metadata, in order to create a visualization of SmarterRoads datasets.
What's next for Lighthouse Logistics
Developing tax accounting and trip management, child and corporate vehicle tracking platforms that are multi-tenant or self-hosted with insurance reporting integration for safe driver discounts.