LittoralEye uses radar satellite imagery to detect vessels at sea regardless of whether they are broadcasting their position.
LittoralEye is built on imagery from the Sentinel-1 constellation, operated by the European Space Agency as part of the EU's Copernicus Earth observation programme. Sentinel-1 carries a C-band synthetic aperture radar (SAR) sensor that images the Earth's surface regardless of cloud cover, weather, or time of day.
Unlike optical satellites, SAR actively transmits microwave pulses and measures the energy reflected back. Ships on the ocean surface are strong radar reflectors — they stand out clearly against the low backscatter of open water.
LittoralEye ingests IW (Interferometric Wide Swath) GRD (Ground Range Detected) scenes. IW mode uses TOPSAR burst acquisition across three sub-swaths to achieve the 250 km coverage width at 10 m ground resolution. GRD products have been multi-looked and projected to ground range — they are the standard product for maritime surveillance applications.
Imagery is sourced from the Copernicus Data Space Ecosystem via the OData catalogue API. Scene discovery queries the catalogue for IW GRD scenes intersecting regions of interest, filtered by sensing date.
Each Sentinel-1 scene goes through an automated processing pipeline. A detected vessel becomes a point on the map within hours of the satellite acquiring the image.
Ship detection uses the CFAR (Constant False Alarm Rate) algorithm implemented in ESA's SNAP GPT. CFAR is a statistically adaptive threshold detector: for each candidate pixel, it estimates background clutter statistics from a surrounding guard and clutter window, then flags the pixel as a target if its intensity exceeds the background by a defined number of standard deviations.
The processing graph applies the following steps in sequence: Read → Apply-Orbit-File → Calibration → TOPSAR-Deburst → Multilook → Speckle-Filter → Land-Sea-Mask → Object-Discrimination → Write.
Object discrimination filters candidates by minimum size to reject sub-pixel noise, and removes detections within the land mask buffer zone where sidelobe contamination from shoreline returns commonly produces false positives.
Output is a ShipDetections.csv containing WGS-84 coordinates, estimated length and width in metres derived from the detected cluster extent, and the scene sensing timestamp.
Each point on the map represents a single vessel detection — a location where the SAR algorithm identified a ship-like radar return at the time the satellite passed overhead. Points are not real-time positions; they are snapshots from the moment of imaging.
Colour by age encodes how recently a detection was made. Fresh detections appear red; older detections shift through orange, yellow, and green toward blue as they age past 60 days. This lets you distinguish active shipping corridors from historically observed traffic.
Vessel size is estimated from the pixel extent of the detected radar return and reported as approximate length and width in metres. These are rough estimates — SAR resolution and speckle noise affect accuracy, particularly for smaller vessels.
The coverage layer shows the footprints of all processed Sentinel-1 scenes. Areas outside these footprints have not been imaged and will show no detections regardless of actual vessel activity.
Processing runs continuously. New Sentinel-1 scenes are typically available in the Copernicus catalogue within 1–3 hours of acquisition. Once a scene enters the processing queue it is ingested and visible on the map within a few hours, depending on queue depth.
The map displays the timestamp of the most recent detection in the database. The coverage footprint layer shows exactly which areas have been processed — if a region shows no detections and no coverage footprint, it has not yet been imaged under the current tasking schedule.
Processing prioritizes recent acquisitions. Older scenes are ingested as capacity allows.