Setting a correlation window for daily optical-to-AIS vessel matching

Ethereal view of the ocean horizon at night with a luminous sky and scattered clouds.

If you've built or reviewed a dark fleet workflow, you've hit this question fast: when a satellite catches a vessel at 10:42 UTC and the nearest AIS position for anything in that area is logged at 10:31, is that a match or a gap? That call comes down to the correlation window you've set. Set it too tight and genuine AIS traffic gets flagged dark. Set it too loose and detections match to the wrong vessel or a stale position, and real dark-fleet activity slips through unflagged.

What the correlation window actually does

The correlation window is the time tolerance your matching logic uses to decide whether an optical detection and an AIS broadcast describe the same vessel. A detection has one timestamp: the moment the sensor passed over. An AIS track is a string of position reports, usually every few seconds for a vessel underway on Class A, stretching out to minutes for Class B or anything reporting from a congested channel. Your matching step has to ask: is there an AIS position close enough in time, and then close enough in space, projected forward from speed and heading, to call this detection "seen on AIS"? The window is the "close enough in time" part of that question.

A boat that broadcasts every four minutes instead of every ten seconds isn't dark. It's just reporting on its own schedule, and a window set too tight will flag it anyway. A window set too loose does the opposite: it matches a detection to an AIS track from a different vessel, or to a position that's gone stale because the actual vessel has since moved off.

Factors that actually move the number

A few things push the window one way or the other, and none of them are guesswork once you lay them out:

AIS reporting interval for the gear in the area. A purse seine fleet broadcasting Class A at high report rates tolerates a tighter window than a longline fleet running older Class B units with longer gaps between reports. If you know your area of interest, you know roughly what you're dealing with.

Vessel speed and your spatial tolerance. A wider time window only works if your spatial match radius scales with it. A vessel making 12 knots covers real distance in the gap between an AIS ping and the satellite pass, so a window built for loitering gear needs tightening for transiting traffic, or your spatial radius needs to grow to compensate.

Satellite pass timing versus AIS terrestrial or satellite relay. Terrestrial AIS coverage near the coast tends to be denser and more current than satellite-relayed AIS in open water, where relay latency adds its own lag on top of the vessel's own report interval. A window tuned for coastal waters will run too tight further offshore.

How much manual review capacity you have downstream. A tighter window produces fewer false "dark" flags but risks missing real ones. A looser window catches more candidates but hands the watch desk a longer list to work through before a patrol asset gets tasked. This is a resourcing decision as much as a technical one, worth setting deliberately rather than inheriting a default.

A practical way to land on a starting window

Rather than picking a number cold, pull a week of known-good AIS traffic in your area of interest and look at the actual gap distribution between consecutive reports for the vessel classes you expect to see. Set your initial window a bit wider than the typical gap for the sparsest class you're willing to treat as "normal," then tighten it as you see how many of your daily unmatched detections turn out, on review, to be a vessel that was broadcasting fine just outside the window. Expect to revisit the number after the first couple of weeks of real output, not as a one-time calibration.

This is exactly the kind of tuning problem that sits upstream of a daily, reviewable list of unmatched detections, which is what Illegal Fishing Detection runs against your area of interest once the window is set. If you're working through where to draw that line for your own waters, it's worth a look.

← Back to the blog