Skip to content
KasperF edited this page Oct 7, 2013 · 5 revisions

Introduction

AisCoverage is a tool for calculating how well AIS receivers (sources) cover a geographical area. This information is useful for determining the range of a source, if a source is malfunctioning, if a source is redundant etc. Furthermore it can be used to see how different parameters (like the weather) affect the coverage. The tool runs as a background process analyzing a stream of AIS messages either from live data sources or a file. The connection capabilities are provided by the AisLib, which is a middleware Java component used to retrieve AIS messages from various sources (live sources or files). Note that, if a timestamp is not provided in a message, the tool will stamp it with the current time. This will result in wrong results if the data received isn’t live. It is important that the provided data isn’t down sampled in any way, as this will result in wrong results.

The underlying algorithm is online; at any time a coverage snapshot is available based on the already processed messages. AisCoverage consists of a Java backend application that analyzes the messages and serves the JSON formatted results to a HTML/JavaScript/JQuery frontend.

The Grid

The surface of the globe is divided into a grid where the coverage of a cell is given by analyzing the AIS messages sent from that cell. Specifically, the coverage is the ratio between the number of actually received AIS messages and the number of sent messages. The grid granularity is defined by a global latitude and longitude degree (these can be adjusted in the configuration file, to optimize cell dimensions for the area of interest). Since a degree of longitude shrinks to 0 meters at the poles, the tool is not suitable near those. How far from a pole a source has to be in order to be properly analyzed is currently unknown.

Calculating Coverage

The algorithm uses two main ideas to estimate the coverage for a given source. The first is what we call the super source. We consider every AIS message received by any source to also be received by the super source. This super source will filter duplicate messages, and only process a single instance of a message received by multiple sources. Now, we can compare the number of messages received by a single source with the messages received by the super source in order to get the coverage.

This will not deal with the fact that a lot of AIS messages will never be received by the super source, and as a consequence the coverage estimation will be overestimated. This is mainly a concern in areas where only a single source is receiving messages. The second idea is about adjusting for this by estimating how many messages the super source never receives. A ship sends out messages in certain frequencies determined by the speed over ground and if the ship is turning. The adjacent messages from a ship are compared and if the actual frequency is lower than the expected frequency, a missed message counter will be incremented in the corresponding cells.

Satellite Coverage

For analyzing satellite coverage, we need other methods than the ones used for terrestrial sources. A satellite is not stationary; it will only receive messages in a given area for a limited time span until it has passed by. Two methods are implemented, that both visualize the satellite reception over time using a bar chart. Currently, all satellite sources are considered as one single satellite; we expect that following single sources will be possible later on.

Method 1: Adaptive Periods Image The time is along the x-axis, and the y-axis shows received messages ("Number of distinct ships" is in brackets). A non-contact period is a period where no messages are received within 10 consecutive minutes.

Method 2: Fixed Periods Image The time is along the x-axis, and the y-axis shows distinct ships logged by satellites and distinct ships logged by terrestrial sources, compared to the union of both.

Ship Tracking

It is possible to get an overview of non-contact periods for a distinct ship. Image The time is along the x-axis, and the y-axis simply show if the ship has been detected or not. Non-contact periods are defined as spans where no messages are received within 10 consecutive minutes. The ship track is also display on the map; red paths indicate non-contact periods.

Sliding Window

The analyzed data is saved in consecutive chunks of 1 hour. This makes it possible to monitor how the coverage has evolved over time. In order to provide fast queries, the data is stored in memory. This also means that longer periods of time will require more available memory on the machine running the backend part of the program. An advice is to only analyze data from sources that are in interest, reducing the memory requirement.

Getting started

Check the getting started-page.

Have questions or want to contribute?

If you have questions about the tool, feel free to post them on the issue tracker (We can't promise immediate response). You are also welcome to post ideas for improvements; The Danish Maritime Authority will continuously make improvements to the tool, but if you have specific needs, feel free to contact the developers (contact@fuka.dk) for an arrangement.

About the developers

The Ais Coverage-tool is developed by Fuka for the Danish Maritime Authority.
contact@fuka.dk