From a Local AIS Station to a Marine Navigation App: The Klaipėda Port Example
How KlaipedaTraffic monitoring, custom offline maps and Marine Navigation can form a reusable local maritime information system
When we started building KlaipedaTraffic.lt, the objective was relatively simple: create an independent live AIS view of vessel traffic in Klaipėda Port.
The project gradually became something more interesting.
The same AIS information that powers the web-based traffic monitor can now be displayed directly inside the Marine Navigation by XShipX Android application, together with an offline map created specifically for the port.
The result demonstrates a model that is not limited to Klaipėda. The same architecture could be adapted for another commercial port, a marina, yacht club, river, terminal or other local maritime area.
The original KlaipedaTraffic concept
KlaipedaTraffic was built as a local AIS monitoring system.
A shore-based AIS receiving station receives normal AIS transmissions from vessels in and around Klaipėda. The received data is processed and made available through the KlaipedaTraffic infrastructure, allowing vessels to be displayed on a public web map.
The information includes dynamic data such as vessel position, course and speed, together with static AIS information where available, including vessel name, MMSI, dimensions, draught, destination and ETA.
This produced a useful browser-based picture of traffic inside the port.
However, a web traffic map and a navigation application serve slightly different purposes.
A web map is excellent for monitoring traffic.
A navigation application is designed to remain with the user, use the device GPS, work with detailed local maps and present information directly in the navigation environment.
That led to the next step.
Bringing KlaipedaTraffic AIS into Marine Navigation
Marine Navigation already had its own navigation environment built around offline .ppmap maps and Android GPS.
Instead of creating a completely separate AIS system inside the application, we connected the existing KlaipedaTraffic AIS infrastructure to the map.
The architecture becomes:
AIS vessels → local AIS receiver → KlaipedaTraffic infrastructure → Marine Navigation
while the navigation map itself remains locally installed on the Android device.
This separation is important.
The chart or map does not depend on the AIS service.
The user’s GPS does not depend on the AIS service.
And the AIS layer does not have to contain the navigation map.
They are independent layers brought together by the application.
If internet connectivity is available in a supported AIS coverage area, Marine Navigation can add public AIS traffic on top of the installed offline map.
If the connection disappears, the offline map and normal GPS navigation remain available.
AIS becomes part of the navigation display
The difference is immediately noticeable when watching moving vessels.
Instead of opening a separate traffic website and comparing it with the navigation application, AIS targets appear directly on the same map being used for navigation.
Marine Navigation can display vessel targets, names and detailed AIS information, and at close zoom levels can draw vessels approximately to their real dimensions when the necessary AIS dimension information is available.
This includes the vessel’s AIS reference or antenna position within the hull rather than assuming that every position represents the geometric centre of the vessel.
For traffic inside a relatively narrow port such as Klaipėda, this becomes particularly useful.
The result is closer to a live maritime information layer than simply displaying symbols over a general-purpose map.
But the AIS system is only half of the story
The other part of the project is the map.
For Klaipėda we created our own local offline map from openly available geographic information and converted it into the same .ppmap format used by our navigation projects.
The map can contain both a normal geographic base and maritime information added specifically for the area.
Depending on the available data and the needs of the user, this can include:
- navigation marks and buoy numbers
- fairways and recommended tracks
- port infrastructure
- berths and terminals
- wrecks and obstructions
- reference points
- pilot boarding information
- anchorages and operational areas
- locally important labels and objects
The important principle is that the map is not permanently tied to an online map provider.
Once the .ppmap package is installed in Marine Navigation, it is stored and rendered locally on the Android device.
Creating a local map does not require a commercial chart platform
We also wanted the process to be reproducible.
For this reason, we developed a workflow using QGIS and open geographic data that allows users to create their own local maps and package them for use in our applications.
We published a video walkthrough titled:
“How to Create a Custom Offline Map for Pilot Plug”
Although the tutorial was originally demonstrated with Pilot Plug, the important part is the map format.
Marine Navigation and Pilot Plug deliberately use the same .ppmap map format.
That means a map created for one application does not need to be rebuilt in a different proprietary format for the other.
This was an important design decision.
The map should belong to the user and the local project – not to one particular application.
Klaipėda as a working example
The screenshot from Marine Navigation shows the concept operating over Klaipėda Port.
The locally installed map contains the port geography, navigation marks and locally relevant maritime information.
On top of it, the application displays live AIS targets supplied through the KlaipedaTraffic infrastructure.
At the same time, Marine Navigation retains its normal functions such as:
Android GPS positioning · SOG/COG · FOLLOW · bearing and distance · map rotation · measurement tools · offline map operation
The AIS system therefore becomes an additional information layer rather than the foundation on which the entire application depends.
That distinction makes the architecture much more flexible.
The same concept could be adapted almost anywhere
Klaipėda is only one implementation.
A small marina could install an AIS receiver and provide a local traffic picture for staff or visiting boaters.
A yacht club overlooking a busy approach channel could combine its own AIS reception with a detailed local offline map.
A pilot organization, terminal or port operator could use the same basic building blocks for a more operational installation.
The important point is that the architecture does not have to be identical in every case.
For a public or community-facing service, the Marine Navigation model is attractive:
Local AIS receiver → server/internet service → Marine Navigation
Users within the supported area can see local AIS traffic directly on top of an installed offline .ppmap map while continuing to use the Android device GPS for their own position.
For a marina, pilot organization or other private operational environment, a different arrangement may be more useful:
Local AIS receiver → local network/IP stream → Pilot Plug app
or just
Local AIS receiver → Wi-Fi → Pilot Plug app
In this case, the AIS data does not necessarily need to leave the site or pass through a public server. An AIS or NMEA stream can be distributed directly over Wi-Fi or Ethernet and consumed by the Pilot Plug application.
That enables a more capable operational setup.
Pilot Plug app is designed to work with external navigation data and AIS sources and can combine a local map with live vessel targets, CPA/TCPA calculations, ARPA-style target monitoring and other navigation tools intended for more demanding use.
The same infrastructure can therefore support very different users.
For recreational users or visitors, Marine Navigation can provide an accessible combination of offline maps, Android GPS and available public AIS coverage.
For professional or private installations, Pilot Plug can use a direct local AIS/NMEA stream and provide a richer traffic and navigation environment without requiring the data to be publicly distributed.
A marina could begin with only a custom local map.
Later it could add an AIS receiver.
That AIS could remain completely private and be distributed only over the marina’s own Wi-Fi network, or selected traffic information could be made available through an internet service for wider access.
A port or terminal could use the same principle with a more structured local network and additional external data sources.
Because Marine Navigation and Pilot Plug use the same .ppmap format, the local map itself does not need to be recreated for each application.
The result is a modular system that can grow according to the actual requirement:
local map + local AIS + local network + the application appropriate to the user
Such an installation should be understood as a supplementary local traffic and navigation tool, not as a replacement for certified VTS, official hydrographic products, required navigation equipment or established safety procedures.
Local knowledge can become part of the map
This may be one of the most interesting possibilities.
Large global mapping services necessarily have to represent the whole world.
A local map has a different purpose.
People working in a particular port often know which objects actually matter there: a small beacon, a locally used turning reference, a marina entrance, a berth number, a pilot boarding position or an operational limit.
With the QGIS .ppmap workflow, that information can become part of the local map.
Therefore the system does not have to be:
global map + local AIS
It can instead become:
local map + local AIS + local knowledge
while still running inside a normal Android application.
It does not have to be a large infrastructure project
This is perhaps the main lesson from KlaipedaTraffic.
A useful local maritime information system does not necessarily require an enormous technical installation.
The individual components are relatively conventional:
AIS reception, a small computer, internet connectivity, open geographic data, QGIS and an Android device.
What makes the system useful is how those pieces are connected.
Our Klaipėda implementation now demonstrates the complete chain:
receive the local traffic → process it → distribute it → create a local map → combine both inside a navigation application.
And because the architecture is modular, there is no fundamental reason why the same approach has to remain in Klaipėda.
It could be reproduced for a harbour, marina or local maritime community almost anywhere.
Resources
Live Klaipėda AIS: KlaipedaTraffic.lt
Marine Navigation by XShipX: available on Google Play
Video tutorial: How to Create a Custom Offline Map for Pilot Plug – the QGIS walkthrough showing how an offline map can be created and imported.

