Real-time data-driven vessel tracking
Patent Information
- Application Number
- PCT/AU2026/050142
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2025-02-24
- Filing Date
- 2026-02-20
- Publication Date
- 2026-08-27
Smart Images

Figure AU2026050142_27082026_PF_FP_ABST
Abstract
Description
"Real-time data-driven vessel tracking"Cross-Reference to Related Applications
[0001] The present application claims priority from Australian Provisional Patent Application No 2025900525 filed on 24 February 2025, the contents of which are incorporated herein by reference in their entirety.Technical Field
[0002] This disclosure relates to determining a berthing or unberthing event of a vessel.Background
[0003] Real-time tracking and monitoring of cargo and container vessels has long been a focal point in the supply chain sector. Tracking and monitoring can be achieved through AIS (Automatic Identification System) data transmitted by the black boxes onboard these vessels. However, there are still significant technical limitations that prevent systems from achieving real-time tracking and monitoring. For example, tracking and monitoring systems do not provide a determination of berthing or unberthing events of vessels at a port terminal, particularly in realtime.
[0004] Berthing refers to the process of safely navigating a vessel into its designated position alongside a pier, quay, or dock so that cargo operations can commence. Unberthing refers to the process of vessel leaving its berth or mooring, and may involve releasing the mooring lines that secure the vessel to the dock, enabling it to move away and navigate out of the port.Understanding when and where a vessel berths or unberths is useful for vessel tracking or vessel monitoring purposes. For example, understanding when and where a vessel berths or unberths may be used to determine an estimated time of arrival of a vessel. Providing a real-time determination of berthing or unberthing events may be used to provide real-time tracking and monitoring of a vessel.
[0005] One method to determine whether a vessel has arrived or departed from a port terminal is to define (or draw) a “geofence” around the port terminal over the ocean. For example, a circular geofence may be defined with a centre somewhere in the port terminal (e.g., a centrallocation of the port terminal) for some distance (e.g., radius). In other examples, such geofences may be manually drawn and encompass some part of the ocean. Arrival or departure of the vessel is thereby determined when the vessel enters or exits the defined geofence. An alert or event data may be generated when this occurs to indicate the vessel has arrived or departed from a port terminal.
[0006] However, determining whether a vessel has arrived or departed from a port terminal is not the same as determining whether a berthing or unberthing event of a vessel has occurred. A problem with these geofences is that the corresponding event can be generated either too soon or too delayed which might affect supply chain operations. More specifically, the vessel may not berth at the same time that it enters the geofence, for example. The geofence approach only serves as an approximation and, in some situations, there can be a large delay between the actual berthing or unberthing of a vessel and the arrival or departure event determined by these geofencing methods. For example, the vessel may travel a significant distance within the geofence before actually berthing, due to the shape and setup of the port. As such, these geofences cannot be used to accurately determine the berthing or unberthing of a vessel. Hence, some methods of vessel tracking that rely on such geofences are not accurate and therefore, realtime tracking of vessel berthing and / or unberthing cannot be achieved.
[0007] Any discussion of documents, acts, materials, devices, articles or the like which has been included in the present specification is not to be taken as an admission that any or all of these matters form part of the prior art base or were common general knowledge in the field relevant to the present disclosure as it existed before the priority date of each of the appended claims.
[0008] Throughout this specification the word “comprise”, or variations such as “comprises” or “comprising”, will be understood to imply the inclusion of a stated element, integer or step, or group of elements, integers or steps, but not the exclusion of any other element, integer or step, or group of elements, integers or steps.Summary
[0009] Disclosed herein are methods and systems for determining a berthing or unberthing event of a vessel. In some embodiments, the berthing or unberthing event of a vessel may be determined based on a perimeter of a land area representing the port terminal. In otherembodiments, the berthing or unberthing event of a vessel may be determined based on whether one or more of the movement characteristics satisfy one or more conditions indicative of berthing or unberthing.
[0010] According to an aspect of the present disclosure, there is provided a computer-implemented method for determining a berthing or unberthing event of a vessel, the method comprising:receiving tracking data elements of the vessel; anddetermining the berthing or unberthing event of the vessel at a port terminal based on a distance of the vessel from a perimeter of a land area representing the port terminal and the tracking data elements.
[0011] It is an advantage to determine the berthing or unberthing event of the vessel at a terminal based on the perimeter of the land area, as the berthing and unberthing takes place outside of the perimeter. Therefore, the berthing or unberthing event can be determined more precisely.
[0012] In some embodiments, the method comprises determining the berthing or unberthing event of the vessel upon determining the port terminal is a nearby port terminal based on the perimeter of the land area and the tracking data elements.
[0013] In some embodiments, the tracking data elements of the vessel comprise a current tracking data element of the vessel; and the method further comprises calculating the distance of the vessel from the perimeter of the land area and the current tracking data element, wherein determining the port terminal is a nearby port terminal is based on the distance.
[0014] In some embodiments, determining the port terminal is a nearby port terminal comprises determining the distance is between 0.01 and 200 metres.
[0015] In some embodiments, the method further comprises determining movement characteristics of the vessel from the tracking data elements; and determining the berthing or unberthing event of the vessel is based on the perimeter of the land area and the movement characteristics.
[0016] In some embodiments, the movement characteristics comprises an average speed and a distance travelled over a preceding period of time; and determining the movement characteristics comprises calculating the average speed and the distance travelled using historical tracking data elements.
[0017] In some embodiments, determining the berthing or unberthing event of the vessel at a port terminal comprises determining whether one or more of the movement characteristics satisfy one or more conditions indicative of berthing or unberthing.
[0018] In some embodiments, the movement characteristics comprises an average speed and a distance travelled over a preceding period of time; and the one or more conditions comprises a condition indicative of the average speed being less than about 0.1 knots, and / or determining the distance travelled being between 0.01 and 200 metres.
[0019] In some embodiments, the movement characteristics comprises a current vessel heading; and the one or more conditions comprises a condition indicative of the current vessel heading remaining unchanged from a previous vessel heading.
[0020] In some embodiments, the movement characteristics comprises a vessel status; and the one or more conditions comprises a condition indicative of the vessel status being moored or anchored.
[0021] In some embodiments, the movement characteristics comprises a vessel rate of turn; and the one or more conditions comprises a condition indicative the vessel rate of turn being about zero.
[0022] In some embodiments, the one or more conditions comprises a condition indicative of one or more of the movement characteristics being unchanged for at least about 15 minutes.
[0023] In some embodiments, the movement characteristics comprises a vessel status; and the one or more conditions comprises a condition indicative of the vessel status being underway engine.
[0024] In some embodiments, the movement characteristics comprises a current vessel speed; and the one or more conditions comprises a condition indicative of the current vessel speed being greater than about 1 knot.
[0025] In some embodiments, the method further comprises determining a previous berthing event of the vessel representing a previous berthing of the vessel at the port terminal; and determining the unberthing event of the vessel comprises determining a distance from the port terminal being greater than about 0.5 miles upon determining the previous berthing event.
[0026] In some embodiments, the perimeter of the land area comprises a polygon representing the land area, the polygon comprising multiple line segments representing the perimeter of the land area.
[0027] In some embodiments, the method further comprises calculating the distance of the vessel from the perimeter of the land area by calculating a distance from one or more of the line segments to a current location of the vessel provided by a current tracking data element.
[0028] In some embodiments, the method further comprises updating one or more perimeters associated with one of multiple port terminals based on one or more of:actual berthing or unberthing events;determined berthing or unberthing events; andhistorical tracking data elements.
[0029] In some embodiments, receiving the tracking data elements of the vessel comprises: receiving raw tracking data elements of the vessel;processing the raw tracking data elements; andclassifying the raw tracking data elements into one of: a positional event class and a static event class, to determine the tracking data elements.
[0030] In some embodiments, receiving the tracking data elements of the vessel comprises receiving messages comprising the tracking data elements, wherein each of the messages comprises a topic indicative of one of: the positional event class and the static event class.
[0031] In some embodiments, the method further comprises processing the tracking data elements in batches according to the topic, and storing, at least partially, the tracking data elements using a non- Structured Query Language (NoSQL)-based database.
[0032] In some embodiments, the method further comprises upon determining the berthing or unberthing event of the vessel, generating event data indicative of the determined berthing or unberthing event of the vessel.
[0033] In some embodiments, the method further comprises calculating an estimated time of arrival or departure of the vessel for a further port terminal along a voyage of the vessel using the event data.
[0034] In some embodiments, generating the event data is performed in real time.
[0035] In some embodiments, any one of the tracking data elements correspond to automatic identification system (AIS) data elements.
[0036] In some embodiments, the event data comprising data indicative of one or more of: time of the berthing or unberthing event;whether the corresponding event is a berthing or unberthing event;an identifier of the port terminal; anda location of the port terminal.
[0037] According to an aspect of the present disclosure, there is provided a computer-implemented method for determining a berthing or unberthing event of a vessel at a nearby port terminal, the method comprising:receiving tracking data elements of the vessel;determining movement characteristics of the vessel from the tracking data elements; and determining the berthing or unberthing event of the vessel at the port terminal upon determining whether one or more of the movement characteristics satisfy one or more conditions indicative of berthing or unberthing.
[0038] According to an aspect of the present disclosure, there is provided software that, when executed by a computer, causes the computer to perform the method of any one of the preceding claims.
[0039] According to an aspect of the present disclosure, there is provided a system for determining a berthing or unberthing event of a vessel, the system comprising a processor configured to:receive tracking data elements of the vessel; anddetermine the berthing or unberthing event of the vessel at a port terminal based on a distance of the vessel from a perimeter of a land area representing the port terminal and the tracking data elements.
[0040] According to an aspect of the present disclosure, there is provided a system for determining a berthing or unberthing event of a vessel at a nearby port terminal, the system comprising a processor configured to:receive tracking data elements of the vessel;determine movement characteristics of the vessel from the tracking data elements; and determine the berthing or unberthing event of the vessel at the port terminal upon determining whether one or more of the movement characteristics satisfy one or more conditions indicative of berthing or unberthing.
[0041] Optional features of the first described method may equally apply as optional features of the second described method, the software and the systems.Brief Description of Drawings
[0042] An example will be described with reference to the following drawings:
[0043] Fig. 1 illustrates a system for determining a berthing or unberthing event of a vessel.
[0044] Fig. 2 illustrates a method for determining a berthing or unberthing event of a vessel.
[0045] Fig. 3 illustrates an example of calculating a distance between a vessel and a perimeter representing a land area of a port terminal using the line segments of perimeter.
[0046] Fig. 4 illustrates an example flowchart of updating a perimeter representing the land area of a port terminal.
[0047] Fig. 5 illustrates a method for determining a berthing or unberthing event of a vessel at a nearby port terminal.
[0048] Fig. 6 illustrates an example flowchart of system architecture for determining berthing or unberthing events.Description of Embodiments
[0049] Disclosed herein are methods and systems for determining a berthing or unberthing event of a vessel. Vessel tracking and monitoring systems do not provide a determination of berthing or unberthing events of vessels at a port terminal. Determining a berthing or unberthing event of a vessel is difficult using a circular or polygon geofence on the ocean, as a berthing or unberthing event does not correlate to an event when the vessel enters or exits the geofence. For example, there may be a large delay between when the vessel enters the geofence and actually berths. Moreover, the berthing position on the ocean might change due to the movement of the water. In other words, the vessel may sway due to the movement of the water, leading to further inaccuracies.
[0050] In some embodiments, the berthing or unberthing event of a vessel may be determined based on a perimeter of a land area representing the port terminal. This perimeter may be considered to be a “land geofence”, in the sense that the perimeter represents a land area of the port terminal, rather than encompassing part of the ocean that the vessel traverses. As such, the vessel may not actually fully enter the perimeter of the land area, as opposed to a geofence that encompasses part of the ocean. It is noted that the “land geofence” may include some water areas, such as along a quay, but those water areas may be so small that the vessel does not fully enter the land geofence. While the berthing position of the vessel on the ocean might change, the land of the port terminal does not change due to the movement of the ocean, making the disclosed perimeter a more reliable fixture compared to geofences. As such, a berthing or unberthing event can be determined more accurately.
[0051] Compared to geofences that encompass part of the ocean or other waterways that the vessel traverses (such as circular geofences), determining a berthing or unberthing event of a vessel in the disclosed method is not based on when the vessel enters or exits a location within the area data. Having the perimeter (e.g., a land geofence) enables port matching and event determination within smaller ranges (less than the distance of a cargo ship). As ports often have multiple port terminals close together, the disclosed method provides a better distinction between port terminals.
[0052] Moreover, historical tracking data elements of container and cargo vessels, dating back to 2016, were thoroughly analysed to identify relevant features, insights, and behaviours, which were then used to develop features of the method disclosed herein. More specifically, the historical data was analysed to find vessel characteristics indicative of whether a vessel has berthed or unberthed at a berthing position on a port terminal. Vessels may move unpredictably as they arrive or depart a port terminal and as it berths or unberths, particularly in port terminals with complex land areas (such as the APMT Los Angeles Terminal, for example). As such, simply determining a berthing or unberthing event based on when the vessel enters or exits a geofence (such as a circular geofence around the port terminal) is insufficient to determine such events. However, through analysis of historical tracking data elements, such as historical AIS data of multiple vessels and multiple port terminals, it was found that the kinematics of the vessel may be used to determine when a vessel has berthed or unberthed.
[0053] Therefore, in other embodiments, the berthing or unberthing event of a vessel may be determined based on whether one or more of the movement characteristics satisfy one or more conditions indicative of berthing or unberthing. In a sense, the tracking data elements may be used to determine optimal parameters that accurately represent the berthing or unberthing of a vessel. Such a method for determining a berthing or unberthing event may be considered to be a “data-driven” method, in the sense that the determination is provided by analysing tracking data elements of one or more vessels, such as historical tracking data elements. Compared to geofences (such as circular geofences), the disclosed method can accurately determine a berthing or unberthing event of a vessel as these movement characteristics better represent the actual physical state of the vessel and its physical relationship to the port terminal.
[0054] The disclosed methods for determining a berthing or unberthing event are much more accurate when compared to existing geofencing methods. Further, the disclosed methods are computationally efficient and provide minimum lag, thereby enabling real-time determination of berthing and unberthing. Using the disclosed methods, customers can be notified in a much better way regarding the real-time information of the vessels. Similarly, these real time events can be further be used in calculation of estimates of the vessel arrival or departure to further port stops on the voyages. With real-time information of vessels, customers can also plan their shipments in an optimal way to thereby improve shipping logistics overall. Further, the disclosed system can send control signals to automated or autonomous port equipment. For example, the disclosed system may control autonomous vehicles in the port, such as cranes and trucks based on the berthing and unberthing event. This may include controlling vehicles to approach thevessel automatically in response to determining a berthing event. This has the advantage of optimised vehicle movements and reduced unloading time.System
[0055] Fig. 1 illustrates an example embodiment of a system (denoted as system 100) for determining a berthing or unberthing event of vessel 110. Fig. 1 is one example of a configuration of system 100. However, system 100 is not strictly limited to this configuration and this may be one possible embodiment of system 100. It is noted that system 100 of Fig. 1 is only meant to illustrate an example system which is capable of performing the methods disclosed herein.
[0056] Vessel 110 may berth or unberth at port terminal 120. More specifically, vessel 110 may berth or unberth at port terminal 120 anywhere along berthing path 121 (represented by a dot-dashed line). Berthing path 121 may be proximal to a crane pulley system of the berthing areas of port terminal 120. Vessel 110 may be any type of ship or shipping vessel, such as, but not limited to, a bulk carrier, a general cargo vessel, a container vessel, a reefer vessel, a Ro-Ro vessel, an oil tanker, a chemical tanker, a liquefied gas carrier, a passenger ship, a livestock carrier, and a heavy-lift / project cargo vessel. Preferably, vessel 110 is a vessel that frequently berths or unberths.
[0057] “Port terminal” in the context of the present disclosure may refer to a specialised area within a port where cargo, passengers or the like are loaded, unloaded, stored, and transferred between different modes of transport like ships, trucks, and trains. In other words, a port terminal is a dedicated facility within a port designed to handle specific types of cargo and facilitate the movement of goods between sea and land transportation. Port terminals act as a hub where cargo may be received from ships, temporarily stored, and then transferred to land vehicles for further distribution. Activities at a terminal may include loading and unloading cargo, customs inspection, storage, and coordination with land transportation. It is noted that a port may comprise one or more port terminals. In some examples, a port terminal may also be called a “dock”, “pier”, “jetty”, “berth”, “quay”, “harbor facility”, “shipping terminal”, “container terminal”, “bulk terminal”, “Ro-Ro terminal” or the like.
[0058] System 100 comprises device 130, which may be a smartphone, computer, tablet, server device, or any other similar device. Device 130 comprises processor 131. Device 130 comprisesmemory 132, which comprises non-volatile memory 133 and / or volatile memory 134. Processor 131 may communicate with memory 132 by communicating with non-volatile memory 133 and / or volatile memory 134. Non-volatile memory 133 is a non-transitory computer readable medium and may be an optical disk drive, hard disk drive, solid-state drive, flash memory, storage server, cloud storage or another equivalent type of memory. Volatile memory 134 may be cache, RAM or another equivalent type of memory. It is noted that device 130 may be deployed on vessel 110 and operate while vessel 110 is travelling along a voyage. However, in other examples, device 130 may be onshore and communicate with vessel 110.
[0059] Memory 132 may store data to be retrieved for later use. For example, memory 132 may also store Global Positioning System (GPS) or AIS data of vessel 110, which may correspond to the tracking data elements. Memory 132 may also store data indicative of one or more perimeters of a land area representing a port terminal. Memory 132 may also store movement characteristics of vessel 110 determined from the tracking data elements. Memory 132 may also store event data indicative of a determined berthing or unberthing event of vessel 110. In essence, memory 132 may store any data (such as parameters or the like) that is necessary to perform the disclosed method. The data thereof may be stored in memory 132 in the form of a JSON format file, XML format file or another equivalent data format file.
[0060] Software, that is, an executable program stored on non-volatile memory 133 causes processor 131 to perform methods for determining a berthing or unberthing event of vessel 110. While the singular of “processor” is used herein, it is meant to also encompass multiple processors that are individually or together configured (e.g., programmed) to perform the methods disclosed herein. As such, processor 131 may refer to multiple central processing units (CPUs) and / or graphical processing units (GPUs) that are configured to collectively perform the methods disclosed herein.
[0061] Once executed, the software may cause processor 131 to (and hence, processor 131 may be configured to) receive tracking data elements of vessel 110; and determine the berthing or unberthing event of the vessel at port terminal 120 based on a distance of vessel 110 from perimeter 122 of a land area representing port terminal 120 and the tracking data elements.Similarly, once executed, the software may cause processor 131 to receive tracking data elements of vessel 110; determine movement characteristics of vessel 110 from the tracking data elements; and determine the berthing or unberthing event of vessel 110 at port terminal 120 upondetermining whether one or more of the movement characteristics satisfy one or more conditions indicative of berthing or unberthing.
[0062] Software may provide a user interface (such as a graphical user interface) presented to the user on device 130. The user interface may be configured to accept input (via buttons or text fields etc) from the user, via a touch screen or a device attached to device 130 such as a keyboard or computer mouse. These devices may also include a touchpad, an externally connected touchscreen, a joystick, a button, and a dial. In an example, the user interface may display multiple vessels and a user may choose one of the multiple vessels by interacting with the user interface. The user interaction with the user interface may cause processor 131 to perform a method for determining a berthing or unberthing event of the chosen vessel. In a sense, processor 131 may monitor the chosen vessel for any berthing or unberthing events. The user interface may also display multiple vessels that the user wishes to track or monitor. The user may choose these multiple vessels by interacting with the user interface. The user interface may also display other information related to the multiple vessels such as a voyage path, estimated time or arrival or departure, previously visited port terminal, destination, and general vessel information.
[0063] It is noted that while Fig. 1 depicts a single vessel (e.g., vessel 110) and a single port terminal (e.g., port terminal 120), the system disclosed herein may be used to determine a berthing or unberthing event (or multiple events) of multiple vessels for multiple port terminals. As such, the systems disclosed herein may be considered to be a multiple vessel tracking or multiple vessel monitoring system. In this way, the system may receive tracking data elements of multiple vessels globally and determine a berthing or unberthing event (or multiple events) for one or more of the multiple vessels.Method based on a perimeter
[0064] Fig. 2 illustrates an example embodiment of a method (denoted as method 200) for determining a berthing or unberthing event of vessel 110. Fig. 2 is to be understood as a blueprint for a software program and may be implemented step-by-step, such that each step in Fig. 2 may be represented by a function in a programming language, such as, but not limited to, Python, C++ or Java. The resulting source code is then compiled and stored as computerexecutable instructions on non-volatile memory 133, which causes processor 131 (or multiple processors or a distributed computing architecture) to perform method 200.
[0065] “Berthing” in the context of the present disclosure may refer to the process of safely navigating a vessel into its designated position alongside a pier, quay, or dock so that cargo operations can commence. In other words, “berthing” may be considered to be when vessel 110 stops at port terminal 120 along berthing path 121, such as operations (such as unloading or loading cargo on vessel 110) can commence. “Unberthing” in the context of the present disclosure may refer to the process of vessel leaving its berth or mooring, and may involve releasing the mooring lines that secure the vessel to the dock, allowing it to move away and navigate out of the port. Berthing may be referred to as a port call.
[0066] Processor 131 receives 201 tracking data elements of vessel 110. The tracking data elements may be GPS data, AIS data, Satellite- AIS (S-AIS) data or the like. In some examples, processor 131 may receive 201 the tracking data elements directly from vessel 110. However, in other example, processor 131 may receive 201 the tracking data elements from a database or a server, which may be communicated via a satellite, for example. The tracking data elements may comprise data indicative of the position, course, and speed of vessel 110. The tracking data elements may also comprise a unique identifier that identifies vessel 110 and other static information regarding vessel 110. In some examples, each of the tracking data elements may comprise a position, course, and speed of vessel 110 at a time. As such, the tracking data elements may comprise a timestamp indicative of when the data was measured. In essence, each of the tracking data elements may be considered to be an event.
[0067] Processor 131 determines 202 the berthing or unberthing event of vessel 110 at port terminal 120 based on a distance of vessel 110 from a perimeter of a land area representing port terminal 120 and the tracking data elements. For example, Fig. 1 shows perimeter 122 (represented by dashed lines) which represents a land area of port terminal 120. It is noted that perimeter 122 primarily encloses a land area of port terminal 120. However, in some examples, perimeter 122 may enclose part of the ocean that vessel 110 traverses. Thus, in some examples, perimeter 122 does not enclose only a land area. It is noted that perimeter 122 is depicted in Fig.1 as a closed curve (i.e., a continuous line that starts and ends at the same point). As such, perimeter 122 encloses (or defines) an area. However, in some examples, perimeter 122 may be an open curve. In some examples, processor 131 determines 202 the berthing or unberthing event of vessel 110 at port terminal 120 by determining that the distance is below a distance threshold.
[0068] It is noted that perimeter 122 may be considered to be a “land geofence”. However, unlike other geofences, in general, vessel 110 may never enter or exit perimeter 122 (given thatvessel 110 does not traverse the land of port terminal 120). As such, determining a berthing or unberthing event of vessel 110 may not necessarily correspond to when vessel 110 enters or exits perimeter 122. Rather, determining a berthing or unberthing event of vessel 110 is based on a distance of vessel 110 from perimeter 122 and the received tracking data elements. In some examples, perimeter 122 may be determined or defined based on data indicative of the land area of port terminal 120 (which may be referred to as land area). For example, perimeter 122 may be determined or defined based on a satellite image of port terminal 120. Processor 131 may apply an algorithm, mathematical operation or machine learning model to the satellite image of port terminal 120 to determine perimeter 122. In some examples, perimeter 122 may be defined by a user. For example, perimeter 122 may be drawn (using a user interface) over a satellite image of port terminal 120 (provided by OpenStreet or GoogleMaps). Preferably, perimeter 122 is proximal to cranes or pulley systems of port terminal.
[0069] Perimeter 122 may be based on historical tracking data elements. “Historical” in the present context refers to a time before the present. The historical tracking data elements may be a collection of tracking data elements for multiple vessels for a single port terminal. However, in this disclosure, “historical tracking data elements” may also refer to tracking data elements of multiple vessels for multiple port terminals. Processor 131 may determine perimeter 122 by applying an algorithm, mathematical operation or machine learning model to the historical tracking data. In some examples, berthing path 121 may be determined from the historical tracking data elements, which may be used to then determine one or more edges of perimeter 122. The historical tracking data elements may also include information indicative of actual berthing or unberthing of one or more vessels. This information may be used to thereby determine when one or more vessel have historically berthed or unberth, to determine perimeter 122 or part thereof. In some examples, historical tracking data may be used to update or modify perimeter 122 which is firstly defined by a user.
[0070] In some embodiments, processor 131 determines the berthing or unberthing event of vessel 110 upon determining port terminal 120 is a nearby port terminal based on perimeter 122 and the tracking data elements. More specifically, processor 131 may determine port terminal 120 is a nearby port terminal based on the distance between vessel 110 and perimeter 122. For example, processor 131 may determine port terminal 120 is a nearby port terminal upon determining that the distance is below a distance threshold. Such distance threshold may be determined through analysis of tracking data elements, such as historical tracking data elements, as will be discussed.
[0071] In some embodiments, the tracking data elements of vessel 110 comprises a current tracking data element of the vessel. Thus, in these embodiments, processor 131 may calculate the distance of vessel 110 from perimeter 122 and the current tracking data element. As such, processor 131 may determine that port terminal 120 is a nearby port terminal based on the distance. Processor 131 may continuously receive the current tracking data element of vessel 110, which comprises the position, course (or heading) and speed of vessel 110. As such, processor 131 may continuously calculate the distance between vessel 110 and port terminal 120 as it receives the current tracking element. In this way, processor 131 may calculate the distance in real-time.
[0072] In some embodiments, port terminal 120 may be one of multiple port terminals. For example, the corresponding port may have multiple port terminals. Further, other ports may be considered and each of the other ports may comprise one or more port terminals. Processor 131 may determine a nearby port terminal from the multiple port terminals. For example, processor 131 may calculate a distance from vessel 110 to each of the multiple port terminal and determine whether the distance is below a distance threshold. In this way, there may be one or more port terminals that are considered to be “nearby”. In some examples, processor 131 may determine the nearest or the closest port terminal. For example, if the calculated distance between multiple port terminals is below a distance threshold, then processor 131 may determine the shortest distance from these distances. As such, processor 131 may determine the nearest or closest port terminal by determining the port terminal with the corresponding shortest distance. It is noted that processor 131 may only determine a berthing or unberthing event of vessel 110 upon first determining a nearby port terminal.
[0073] Through analysis of historical tracking data elements, such as historical AIS data of multiple vessels and multiple port terminals, it was found that a distance of between 0.01 and 200 metres was optimal for determining whether a port terminal can be considered as a nearby port terminal. As such, in some embodiments, processor 131 determines port terminal 120 is a nearby port terminal by determining the distance is between 0.01 and 200 metres. In some embodiments, the distance may be between 0.01 and 175 metres, 0.01 and 150 metres, 0.01 and 125 metres, for example. Preferably, the distance is less than about 100 metres. In this disclosure, ‘about’ may be used to indicate that small variations from the specified value are envisaged. More specifically, ‘about’ may indicate that the specified value is not to be construed as a precise value.
[0074] In some embodiments, perimeter 122 may be a combination of curved sides and straight sides (e.g., line segments). However, in other embodiments, perimeter 122 comprises a polygon representing the land area and the polygon comprising multiple line segments representing the perimeter of the land area. For example, perimeter 122 is depicted as a polygon comprising multiple line segments in Fig. 1. Further, in some embodiments, processor 131 calculates the distance of vessel 110 from perimeter 122 by calculating a distance from one or more of the line segments to a current location of vessel 110 provided by a current tracking data element. For example, processor 131 may calculate the distance between the midpoint of each of the line segments and the current tracking data element to determine the distance between vessel 110 and perimeter 122. The distance between vessel 110 and perimeter 122 may correspond to the minimum distance between the line segments and the vessel 110.
[0075] Using the line segments to calculate the distance between vessel 110 and perimeter 122 may be advantageous as vessel 110 likely berths or unberths along (or adjacent to) one of the line segments. As such, calculating the distance using the line segments enables a more precise determination of whether vessel 110 has berthed or unberthed. For example, using the line segments, the calculated distance may be of the order of metres rather than kilometres as the comparison point is along the line segment rather than in the land area. Moreover, the comparison point (e.g., the midpoint of the line segment) between vessel 110 and perimeter 122 may change at the vessel 110 moves when using the line segments. This better reflects the physical relationship between vessel 110 and port terminal 120.
[0076] For explanatory purposes, consider the example shown in Fig. 3. Fig. 3 shows an example of calculating the distance between vessel 110 and perimeter 122 using the line segments of perimeter 122. In this example, the distance between vessel 110 and each line segment corresponds to the distance between current position 310 (which corresponds to a midpoint of vessel 110) provided by the current tracking data elements and the midpoint of each line segment (such as midpoint 321). Processor 131 may calculate the distance for each line segment (the distances being represented by solid lines) and determine the minimum distance. In this example, processor 131 would determine that distance 322 is the minimum distance and may use distance 322 as the distance between vessel 110 and perimeter 122.
[0077] However, in other embodiments, processor 131 calculates the distance of vessel 110 from perimeter 122 by determining a centre of the shape defined by perimeter and calculating thedistance between vessel 110 and the centre. For example, the centre of the shape may be a centroid, which may be referred to as a geometric centre or centre of figure.
[0078] In other embodiments with multiple port terminals, processor 131 may calculate a distance between vessel 110 and one or more of the multiple port terminals according to the embodiments and examples described above. For example, each of the multiple port terminals may be represented by a perimeter (similar to perimeter 122) and hence, processor 131 may calculate a distance between vessel 110 and one or more of the multiple port terminals based on a corresponding perimeter and tracking data elements. The perimeters for the multiple port terminals may be unique for corresponding port terminal to represent the corresponding land area. The perimeters for the multiple port terminals may be defined similar to perimeter 122, as described above.
[0079] As discussed above, in some embodiments, each of multiple port terminals may be represented by a perimeter representing the respective land area (similar to perimeter 122). In some embodiments, processor 131 may update one or more perimeters associated with one of multiple port terminals based on one or more of: actual berthing or unberthing events; determined berthing or unberthing events; and historical tracking data elements. For example, processor 131 may receive data regarding actual (recorded) berthing or unberthing events (e.g., user data indicative of a berthing or unberthing event) and use this data to update perimeter 122 to ensure the berthing or unberthing event is determined when applying method 200 to the corresponding tracking data elements. Similarly, processor 131 may use historical tracking data elements to update perimeter 122, particularly if perimeter 122 were manually defined by a user, for example.Event data
[0080] In some embodiments, upon determining the berthing or unberthing event of vessel 110, processor 131 generates event data indicative of the determined berthing or unberthing event of vessel 110. The event data may be stored on memory 132 in the form of a JSON format file, XML format file, TXT file format or another equivalent data format file. The event data may comprise data indicative of one or more of: time of the berthing or unberthing event; whether the corresponding event is a berthing or unberthing event; an identifier of port terminal 120; and a location of port terminal 120 (such as the latitude and longitude, or GPS coordinates). Further, the event data may comprise data indicative of one or more of: details of vessel 110 (such asvessel type, the unique identifier), berthing position (such as the latitude and longitude, or GPS coordinates), or other similar data. In some embodiments, processor 131 generates the event data in real time, meaning that processor 131 may receive tracking data elements of vessel 110 then immediately determine a berthing or unberthing event. This may be a result of the system architecture (as will be detailed later in the disclosure), as well as the computational efficiency of the methods disclosed herein.
[0081] In some embodiments, the generated event data may be provided or displayed (on a user interface, for example) to monitor or track vessel 110. Further, in some embodiments, processor 131 calculates an estimated time of arrival or departure of vessel 110 for a further port terminal along a voyage of vessel 110 using the event data. For example, processor 131 may receive a voyage itinerary of vessel 110 and determine that port terminal 120 is a stop along the voyage. Processor 131 may also receive a data indicative of when vessel 110 began its voyage (i.e., the starting time). Processor 131 may then determine an estimated time of arrival to a final destination of vessel 110 (which may be determined from the voyage itinerary) based on the event data. For example, if the event data provides data indicative of a departure of vessel 110 at port terminal 120, then processor 131 may calculate an estimated travel time between port terminal 120 and the final destination. Calculating the estimated time of arrival or departure may also be considered as monitoring or tracking vessel 110. Calculating the estimated time of arrival or departure may also be performed in real-time.Example of perimeter updating
[0082] As previously discussed, processor 131 may update perimeter 122 (as well as other perimeters representing other port terminal). An example of perimeter updating will now be discussed with reference to Fig. 4. Fig. 4 illustrates an example flowchart of updating a perimeter representing the land area of a port terminal. In this example, determined berthing events and actual berthing events are used to update perimeter 122. However, it is noted that a similar process may be used to update perimeter 122 based on unberthing events. For explanatory purposes, Fig. 4 may be explained with reference to the elements of Fig. 1 (e.g., vessel 110). However, it is noted that perimeter updating may consider data from multiple vessels to update one or more perimeters. Elements of the example provided herein may be applicable to other embodiments of the methods disclosed herein.
[0083] Processor 131 receives 401 tracking data elements from storage 410. In some examples, storage 410 may be memory 132 of device 130. However, in other examples, storage 410 may be external storage, such as a remote database or remote server. In particular, storage 410 may be a Hadoop Distributed File System (HDFS), or similar systems such as Apache Hive. The tracking data elements may be historical tracking data elements or current tracking data elements.
[0084] Processor 131 performs 402 a method for determining berthing or unberthing of vessel 110 on the received 401 tracking data elements (such as method 200, or another method disclosed herein). As such, processor 131 may determine one or more berthing events based on the tracking data elements (e.g., historical berthing events or current berthing events). Processor 131 may then generate 403 event data corresponding to these one or more berthing events.
[0085] Processor 131 may also receive 404 actual berthing events from storage 410. In other words, processor 131 may also receive 404 actual berthing or moored AIS events for each tracking vessels for storage 410. For example, storage 410 may store tracking data elements (such as AIS data) which indicates an actual berthing event e.g., a manually recorded berthing event, rather than a determined berthing event using the methods disclosed herein. More specifically, the tracking data elements may correspond to actual AIS moored events originating from an AIS service (such as a satellite), which may be the raw AIS moored events. In some examples, processor 131 may use the tracking data elements associated with the actual berthing events to determine whether the determined berthing event (determined by performing method 200, for example) corresponds to the actual berthing event. For example, processor 131 may compare the time and position of the actual berthing event and the determined berthing event. Processor 131 may then update perimeter 122 based on a difference between the actual berthing event and the determined berthing event. In some examples, processor 131 co-relates the raw AIS moored events to the berthing events generated by method 200 (or another method disclosed herein) to update the perimeters.
[0086] Processor 131 may also receive 405 schedule data of vessel 110 from storage 410. For example, storage 410 may store schedule data (such as a voyage itinerary of vessel 110), which was received from the carrier (shipping company) of vessel 110. The schedule data may comprise a list of stops (including a starting position and a destination), as well as an estimated time of arrival or departure for each stop. In particular, the schedule data may correspond to historical voyages and hence, the actual arrival and departure times for each stop may beprovided. In some examples, processor 131 may receive the tracking data elements corresponding to the historical voyages and determine the berthing events by performing method 200. Processor 131 may then compare the determined berthing events to the berthing events provided in the schedule data and update perimeter 122 based on a difference between the events.
[0087] Processor 131 merges 406 the schedule data and the generated event data to determine common stops. This may provide accurate berthing positions that may not be provided in the schedule data. For example, the schedule data may simply list port terminal 120 as one of the stops along the voyage of vessel 110. However, vessel 110 may berth at a number of different positions at port terminal 120 (i.e., anywhere along berthing path 121). In some examples, processor 131 may apply an algorithm, mathematical operation or machine learning model to merge 406 the schedule data and the generated berthing event data and determine the common stops. For example, processor 131 may apply a clustering algorithm (such as DBSCAN, hierarchical clustering or density-based clustering), to the schedule data and the generated berthing event data to determine the common stops.
[0088] Processor 131 then updates 407 a perimeter using the actual berthing events (i.e., actual berthing event data) and the common stops. For example, processor 131 may determine whether the berthing positions from the actual berthing events correspond to the common stops determined using the schedule data and the generated berthing event data. Processor 131 may then update perimeter 122 based on a difference between the positions of the actual berthing events and the common stops. In another example, processor 131 may update 407 perimeter 122 by adjusting the line segments of the corresponding polygon such that the actual berthing positions and the common stops may be captured by method 200. Processor 131 may update the line segments to ensure that a perpendicular distance to each of the actual berthing positions and the common stops is less than a distance threshold (such as between 0.01 to about 100 metres, for example).
[0089] Processor 131 may then store 408 the updated perimeter(s). In some examples, processor 131 perform a method for determining a berthing event (such as method 200) using the updated perimeter using tracking data elements received from storage 410 to determine whether the determined events correspond to the common stops or actual berthing events. Processor 131 may further update the perimeter upon determining a difference between the determined events correspond to the common stops or actual berthing events.Method based on movement characteristics
[0090] Fig. 5 illustrates an example embodiment of a method (denoted as method 500) for determining a berthing or unberthing event of vessel 110. In particular, Fig. 5 illustrates a method for determining a berthing or unberthing event of vessel 110 at a nearby port terminal (for explanatory purposes, port terminal 120 may be considered to be a nearby port terminal). Similar to Fig. 5, Fig. 5 is to be understood as a blueprint for a software program and may be compiled and stored as computer-executable instructions on non-volatile memory 133, which causes processor 131 (or multiple processors or a distributed computing architecture) to perform method 200.
[0091] Processor 131 receives 501 tracking data elements of vessel 110. 501 of method 500 may be similar to 201 of method 200 and hence, the description of 201 above may be equally applicable to 501. Processor 131 determines 502 movement characteristics of vessel 110 from the tracking data elements. “Movement characteristics” in the context of the present disclosure may refer to kinematic parameters or parameters that influence or affect the kinematics (e.g., movement) of vessel 110 or the like. In essence, the movement characteristics are parameters indicative of the movement of vessel 110. As will be detailed further below, the movement characteristics may comprise average speed, distance travelled over a preceding period of time, current vessel heading, vessel status, vessel rate of turn and current vessel speed.Berthing
[0092] In some embodiments, the movement characteristics comprises an average speed and a distance travelled over a preceding period of time. Processor 131 may then determine 502 the movement characteristics by calculating the average speed and the distance travelled using historical tracking data elements. Processor 131 may calculate the average speed using the historical tracking data elements of vessel 110. Processor 131 may calculate the distance travelled using the positions provided by the historical tracking data elements of vessel 110.
[0093] Through analysis of historical tracking data elements, such as historical AIS data of multiple vessels and multiple port terminals, it was found that a vessel having an average speed of less than about 0.1 knots, having the distance travelled being between 0.01 and 200 metres, and having a current vessel speed of less than about 0.1 knots is an optimal indication of vessel berthing. Therefore, in some embodiments, the one or more conditions may comprise a condition indicative of one or more of: the average speed being less than about 0.1 knots; the distancetravelled being between 0.01 and 200 metres; and the current vessel speed being less than about 0.1 knots. As such, processor 131 may determine a berthing event upon determining one or more of: the average speed of vessel 110 is less than about 0.1 knots; the distance travelled is between 0.01 and 200 metres; and the current vessel speed is less than about 0.1 knots.
[0094] When vessel 110 berths, the heading of vessel 110 should remain the same as its previous heading. Therefore, in some embodiments, the movement characteristics comprises a current vessel heading; and the one or more conditions comprises a condition indicative of the current vessel heading remaining unchanged from a previous vessel heading. As such, processor 131 may determine a berthing event upon determining current vessel heading remains unchanged from a previous vessel heading. “Heading” (which may also be referred to as vessel heading) in the context of the present disclosure may refer to the direction in which a vessel is pointed. For example, the vessel heading may be the compass direction of the vessel’s bow at any given time, expressed as an angle relative to true or magnetic north; and indicates where the vessel is facing, not necessarily where it is actually traveling towards. In some examples, the tracking data elements comprise a vessel heading (e.g., the tracking data elements comprises a heading for different points in time). Processor 131 may determine that the current vessel heading remains unchanged from a previous vessel heading using the corresponding tracking data elements.
[0095] In some embodiments, processor 131 may receive a vessel status of vessel 110. For example, the vessel status may be provided by user input data or provided by the tracking data elements. A “vessel status” may refer to the current state or condition of a vessel, particularly regarding its navigational activity, whether it is underway, at anchor, moored, aground. The vessel status may be indicated by a code transmitted through the AIS. Therefore, in some embodiments, the movement characteristics comprises a vessel status; and the one or more conditions comprises a condition indicative of the vessel status being moored or anchored. As such, processor 131 may determine a berthing event upon determining the vessel status is moored or anchored.
[0096] In some embodiments, processor 131 may receive a vessel rate of turn of vessel 110. For example, the vessel rate of turn may be provided by user input data or provided by the tracking data elements. A vessel’s “rate of turn” (abbreviated as ROT) may refer to the speed at which it is changing its course. In some examples, the vessel rate of turn may be measured in degrees per unit of time (usually degrees per minute). In essence, the vessel rate of turn may indicate how quickly a ship is turning at any given moment. Once berthed, the vessel rate of turnshould be about zero. Therefore, in some embodiments, the movement characteristics comprises a vessel rate of turn; and the one or more conditions comprises a condition indicative the vessel rate of turn being about zero. As such, processor 131 may determine a berthing event upon determining the vessel rate of turn being about zero.
[0097] Through analysis of historical tracking data elements, such as historical AIS data of multiple vessels and multiple port terminals, it was found that an optimal indication of vessel berthing is that the vessel remains in the same state with the same conditions at least (about) 15 minutes. Therefore, in some embodiments, the one or more conditions comprises a condition indicative of one or more of the movement characteristics being unchanged for at least about 15 minutes. As such, processor 131 may determine a berthing event upon determining that one or more of the movement characteristics remain unchanged for at least about 15 minutes.Unberthing
[0098] In some embodiments, the movement characteristics comprises a vessel status; and the one or more conditions comprises a condition indicative of the vessel status being underway engine. As such, processor 131 may determine an unberthing event upon determining that the vessel status is underway engine, or a similar vessel status.
[0099] Through analysis of historical tracking data elements, such as historical AIS data of multiple vessels and multiple port terminals, it was found that an optimal indication of unberthing is the current vessel speed being greater than about 1 knot (1 nautical mile per hour). Therefore, in some embodiments, the movement characteristics comprises a current vessel speed; and the one or more conditions comprises a condition indicative of the current vessel speed being greater than about 1 knot. As such, processor 131 may determine an unberthing event upon determining that the current vessel speed being greater than about 1 knot. Processor 131 may determine the current vessel speed based on receiving the current tracking data element of vessel 110.
[0100] Through analysis of historical tracking data elements, such as historical AIS data of multiple vessels and multiple port terminals, it was found that an optimal indication of unberthing is that the distance from a terminal, in which a previous berthing event was determined, is about 0.5 miles. In particular, this accounts for the length of vessel 110 as well as close (nearby) port terminals of the same port. Therefore, in some embodiments, processor 131may determine a previous berthing event of vessel 110 representing a previous berthing of vessel 110 at port terminal 120; and processor 131 may determine an unberthing event of vessel 110 by determining a distance from port terminal 120 being greater than about 0.5 miles upon determining the previous berthing event.
[0101] It is noted that some embodiments and examples of method 500 may also be embodiments and examples of method 200, and vice versa. For example, in some embodiments of method 200, processor 131 may determine movement characteristics of vessel 110 from the tracking data elements; and determining 203 the berthing or unberthing event of vessel 110 may be based on perimeter 122 and the movement characteristics. In some embodiments, processor 131 may determine 202 the berthing or unberthing event of vessel 110 at port terminal 120 by determining whether one or more of the movement characteristics satisfy one or more conditions indicative of berthing or unberthing. The movement characteristics in the embodiments of method 200 may be similar to the embodiments of the movement characteristics described in relation to method 500.
[0102] In particular, the combination of determining a berthing or unberthing event based on perimeter 122 and the movement characteristics is advantageous to accurately determine the berthing or unberthing event. Moreover, the determination of the berthing or unberthing event may become more accurate over time as perimeter 122 may be continuously updated as more berthing and unberthing events are generated and more tracking data elements are received by processor 131. Advantageously, perimeter 122 may be updated to better capture berthing or unberthing events without changing the one or more conditions.System architecture
[0103] Processor 131 may receive data indicative of tracking data elements, in a raw form, for example. This data may be processed to determine the tracking data elements, before performing method 200, 500. For example, processor 131 may receive raw AIS data or AIS that contains different information. Processor 131 may process this data by determining the information contained in the data or determine the information that may be missing for the data. In some embodiments, processor 131 receives 201, 501 the tracking data elements of the vessel by receiving raw tracking data elements of the vessel; processing the raw tracking data elements; and classifying the raw tracking data elements into one of: a positional event class and a static event class, to determine the tracking data elements. Processor 131 may apply an algorithm,mathematical operation or machine learning model to the raw tracking data elements to process or classify the elements.
[0104] In some embodiments, the data (which may be referred to as fields) available in raw AIS messages may be categorised in certain different categories, according to Table 1 below:&&Table 1: Categories of fields provided in raw AIS messages.
[0105] In some examples, processor 131 may receive raw AIS data and based on the AIS number, processor 131 may classify (or categorise) each element in the raw AIS data as a positional event (which mostly provides the geo-graphical location along with other vessel features) and static events (provides static data of the vessels, such length, width, International Maritime Organization (IMO) ship identification number etc). The AIS number may be referred to as the message type. In some embodiments, processor 131 may only receive AIS messages which contain positional event data or static event data. These message types are provided in Table 2 below. AIS position messages mostly broadcast information about a vessel’s physical location and motion. AIS static messages mostly broadcast information about vessel characteristics that should remain (relatively) static over the during of their voyage. Processor 131 may only listen for AIS messages that contain positional or static information.&&&&&&&&Table 2: Types of AIS messages which contain positional event data or static event data.
[0106] As such, processor 131 may only listen to the following AIS messages: AIS - 1, 2, 3, 4, 9, 18, 19, 21, 27 contains the Positional Report of the Vessel; and AIS - 5, 24 contains the static voyage details report of the Vessel. In some examples, processor 131 may use an AIS event decoding library or an Application Programming Interface (API), such as but not limited to the Java Marine- API library, to decode received AIS messages and decoding of the AIS messages 1, 2, 3, 4, 5, 9, 18, 19, 21, 24, 27. In some examples, processor 131 may receive AIS messages from an external source of AIS events through an API, computer program or the like. For example, processor 131 may receive AIS messages using the Spire Transmission Control Protocol (TCP) Feed API.
[0107] In some embodiments, processor 131 receives 201, 501 the tracking data elements of the vessel comprises receiving messages comprising the tracking data elements. Each of the messages may comprise a topic indicative of one of: the positional event class and the static event class. As such, a messaging service may be implemented to provide messages to processor 131, which comprise the tracking data elements.
[0108] The messaging service may be used for handling real-time data streams that efficiently processes and stores large volumes of data. The messaging service may manage data pipelines and applications by facilitating the collection, storage, and analysis of streaming data from multiple sources. For example, by using a publish-subscribe messaging model, messages may be sent to specific topics without needing to know the consumers, thus decoupling the production of data from its consumption. Many messaging services maintain a distributed architecture, providing fault tolerance and scalability by distributing data across multiple nodes. This ensures high availability and reliability of data transmission. The messaging service may store data in a distributed log that enables it to handle data persistence effectively, ensuring that messages are safely stored and can be reprocessed or replayed at any time. In addition to its storage capabilities, the messaging service may support stream processing through its integrated stream processing library. This library enables applications that can process data in real time, perform complex transformations, and aggregate data across multiple streams. The processing capabilities of the messaging service enables it to handle tasks such as filtering, mapping, and joining streams, making it a powerful tool for real-time data analysis. The messaging service handles large-scale data ingestion with low latency. This may be achieved through its efficient data serialization and compression mechanisms, which minimises the overhead associated with data transmission. The performance optimizations of some messaging services ensure that it can process millions of messages per second, making it suitable for high-throughput applications. Some messaging services provide robust security features include authentication, authorization, and encryption. Authentication ensures that only authorized users and applications can produce or consume data, while authorization controls access to specific topics and operations.Encryption secures data both in transit and at rest, protecting sensitive information from unauthorized access. Overall, messaging services provide a comprehensive solution for managing real-time data streams, enabling scalable and reliable data pipelines that can handle the demands of AIS data streams of many vessels.
[0109] For example, processor 131 may utilise Apache Kafka (which may be referred to as Kafka) as a messaging system and hence, the tracking data elements may be pushed to a Kafkatopic (a topic for position event class and a topic for static event class). Kafka is an open-source software platform that stores, processes, and analyses streaming data in real-time. Kafka is used to build data pipelines and applications that can handle large amounts of data from multiple sources. However, other messaging services may be used, such as Message Queuing Telemetry Transport (MQTT). Together with processing and classifying the raw tracking data elements (such as raw AIS data), the use of the messaging service may be considered to be a raw data parsing service.
[0110] In some embodiments, processor 131 processes the tracking data elements in batches according to the topic. Processor 131 may also store, at least partially, the tracking data elements using a NoSQL-based database. Examples of NoSQL-based databases include, but are not limited to, MongoDB, Cassandra, Redis, CouchDB and Neo4j. Processor 131 may also store, at least partially, the tracking data elements using HDFS. In some examples, processor 131 may process the tracking data elements in each batch using collections. For example, one collection may be used to store determined berthing and / or unberthing events, while another collection may be used to store real-time positional for each cargo / container vessel distinguished by their MMSI.Example system architecture
[0111] An example of a system architecture for determining berthing or unberthing events will now be discussed with reference to Fig. 6. Fig. 6 illustrates an example flowchart of system architecture for determining berthing or unberthing events. For explanatory purposes, Fig. 6 may be explained with reference to the elements of Fig. 1 (e.g., vessel 110). However, it is noted the example system architecture may be used to process tracking data elements from multiple vessels that berth or unberth at multiple port terminals. In particular, the example system architecture is advantageous for processing a large amount of tracking data elements from multiple vessels. In fact, the example system architecture may provide real-time determination of berthing and / or unberthing events. Elements of the example provided herein may be applicable to other embodiments of the methods disclosed herein.
[0112] Processor 131 receives 401 raw tracking data elements from data feed 610. As depicted in Fig. 6, data feed 610 may be a satellite which provides raw tracking data elements (such as raw AIS data) to processor 131. In other examples, data feed 610 may be another source of raw tracking data elements. Data feed 610 may also be provided by Spire, which provides raw AISdata for all the cargo / container vessels in the world. In some examples, the tracking data elements may be provided to processor 131 via WebSocket, which is a communication protocol that enables for real-time, two-way data exchange between a client and a server. It is noted that data feed 610 may broadcast multiple data feeds (e.g., many tracking data elements), but processor 131 may only listen (and therefore, receive) the tracking data elements of particular interest. For example, data feed 610 may broadcast raw AIS data and processor 131 may only listen (and therefore receive) raw AIS data of certain message types (such as those shown in Table 2).
[0113] Processor 131 processes 602 and classifies the raw tracking data elements received 601 from data feed 610. Processor 131 may determine whether each of the received data tracking elements comprise positional event data or static event data, according to Table 1, for example. Processor 131 may then classify each of the received tracking data elements based on whether they are positional event data or static event data. In other words, processor 131 decodes the events provided in the raw tracking data elements into positional or static events.
[0114] Processor 131 pushes 603 the processed tracking data to a messaging service. For example, processor 131 may push 603 the processed tracking data to Kafka. Processor 131 may utilise Confluent (which may be referred to as Confluent Kafka) to push 603 the processed tracking data to Kafka. Confluent Kafka is a cloud-based distribution of Kafka that enables users to store, access, and manage data in real-time, and is designed to simplify operations and accelerate application development. As such, processor 131 provides 604 messages with topics. For example, each of the messages comprises a topic indicative of one of: the positional event class and the static event class. If Kafka is utilised, then these topics may be considered to be Kafka topics.
[0115] Processor 131 may push 605 the messages to storage 621, such that the processed tracking data elements may be stored. For example, processor 131 may push data via a HDFS Sink Connector if storage 421 is a HDFS and the messaging service is Kafka. A HDFS Sink Connector is a plugin used within the Kafka Connect framework that enables data streaming from a Kafka topic to be directly written to a HDFS cluster, essentially enabling real-time data transfer between the two systems; it acts as a bridge to move data from Kafka to HDFS for further processing and analysis within a Hadoop ecosystem. It is noted that storage 621 may be equivalent to storage 410 of Fig. 4. As such, storage 621 of Fig. 6 may be used to updateperimeters representing a land area of a port terminal, according to the processes described earlier.
[0116] Processor 131 may then perform 606 a method (such as method 200, 500) on the processed tracking data elements provided in the message. As such, processor 131 determines a berthing or unberthing event from the processed tracking data elements. Processor 131 may also generate 607 corresponding event data to the determined berthing or unberthing event. Processor 131 may also store the determined berthing or unberthing event (as well as the corresponding event data) on storage 622. It is noted that storage 621, 622 may be the same or different storage systems. Storage 621 may store aggregated data for future analysis, for example. Storage 622 may be a database which stores live information of each vessel (such as vessel 110) tracked. Storage 622 may be a NoSQL-based database, such as MongoDB.
[0117] It is noted that the example system architecture is described with reference to processor 131, there may be multiple processors with multiple devices which perform part of the example system architecture. In some embodiments, processor 131 may perform a method (such as method 200, 500) for determining berthing or unberthing events, generate the corresponding event data and transmit generated event data for storage on storage 622. However, another processor on a disparate device may receive the raw tracking data elements, process and classify the raw tracking data elements and push the processed tracking data elements to a messaging service, such as Kafka. In this way, processor 131 may be subscribed to messages of the messaging service which comprise the topics of interest (e.g., positional event data or static event data). As such, processor 131 may receive the messages and hence, may receive the processed tracking data elements from the other processor via the messaging service.
[0118] In the embodiments described above, having disparate processors (or disparate device) performing the tracking data element processing and performing a method for determining berthing or unberthing events may be advantageous. For example, processor 131 only receives tracking data elements of interest, e.g., tracking data elements that may be used to determine berthing or unberthing events. In a sense, the other processor filters raw tracking data elements that may not be used to determine berthing or unberthing events. As such, this reduces the computational load of processor 131. Each of the disparate processors are also configured to perform a certain task and hence, each processor may be optimised for its designated task.Data analysis and experimentsAnalysis of historical tracking data elements
[0119] As previously discussed, historical tracking data elements of container and cargo vessels, dating back to 2016, was thoroughly analysed to identify relevant features, insights, and behaviours, which are then used to develop features of the methods and systems disclosed herein. Based on this analysis and the disclosed perimeter, it was determined that a distance of about 110 metres (about 0.06835 miles) from the vessel latitude / longitude position to the perimeter was an optimal distance to capture berthing and unberthing events recorded in the historical data. Therefore, a distance of between 0.01 to 200 may be optimal. The optimal distance was determined by standardising the vessel length / width of cargo / container vessels, considering vessel status, speed, calculated average speed of the vessel for around 15 minutes to define the vessel at berthing position. It was found that implementing method 200 using this optimal distance determined a significant number of the berthing and unberthing events recorded in the historical data.
[0120] However, it was found that method 200 may be further optimised, as there were still some berthing and unberthing events missing. As such, the historical data was further analysed to determine more features that may optimise method 200. Through analysing the historical data, it was found that considering movement characteristics of the vessel, such as heading and rate of turning, significantly improved the determination of berthing and unberthing events. In particular, by combining the optimal distance from the vessel to the perimeter represent the land area of the port terminal and the movement characteristics of the vessel, the accuracy of berthing and unberthing event generation significantly improves.System architecture experiments
[0121] Determining multiple berthing or unberthing events of multiple vessels for multiple port terminals globally is a resource intense process, as the system processes large data (e.g., many tracking data elements). Moreover, to provide berthing or unberthing events in real-time, the systems should handle and process this large data, while also accounting for the continuous feed of live data, which adds to the resource strain. The disclosed system and embodiments thereof by providing a system architecture that can handle and process continuous feed of live data, as previously described. An optimal system architecture was determined and is described below. Different experiments were performed to determine the optimal system architecture, including many different system architecture iterations. It is noted that the disclosed methods and systems are not limited to using the optimal system architecture described below.
[0122] The optimal system architecture utilises AIS data from Spire, which also provide raw AIS data for all the cargo / container vessels in the world. Spire may provide between 10,000 to 50,000 events per minute for 30,000 vessels globally. “Spire” refers to a company, Spire Global, which utilises its network of nanosatellites to collect and provide real-time vessel tracking data by picking up AIS signals from ships, essentially offering a comprehensive view of maritime activity across the globe, particularly in remote areas where traditional AIS coverage might be limited.
[0123] For storing process tracking data elements received for Spire, the HDFS was used to store the data (for data aggregation). More specifically, Apache Hive (which may be referred to as Hive) was used, which is a data warehouse system built on top of Apache Hadoop, allowing users to query and analyse large datasets using a SQL-like language (HiveQL) to access and process data stored in Hadoop’ s distributed file system. Moreover, Kafka (specifically, Confluent Kafka) is used in the optimal system architecture to push message comprising the processed tracking data elements.
[0124] Initial experiments attempted pushing the data from Kafka topic to HDFS (Hive) using a Spring Boot Service, which is a framework that simplifies the development of Java-based applications by providing auto-configuration, embedded servers, and production-ready features. However, it was found that the volume of data was too large (more than 50k events / minute), which resulted in slow movement of the data. In a further experiment, the number of instances for the service was increased. However, it was found that this was not sufficient to handle the large amount of data. It was then found that shifting to Confluent Kafka and utilising Kafka Sink Connectors (e.g., HDFS Sink Connectors), this was optimal and was efficient at moving the data even in large volumes.
[0125] It will be appreciated by persons skilled in the art that numerous variations and / or modifications may be made to the above-described embodiments, without departing from the broad general scope of the present disclosure. The present embodiments are, therefore, to be considered in all respects as illustrative and not restrictive.
Claims
CLAIMS:
1. A computer-implemented method for determining a berthing or unberthing event of a vessel, the method comprising:receiving tracking data elements of the vessel; anddetermining the berthing or unberthing event of the vessel at a port terminal based on a distance of the vessel from a perimeter of a land area representing the port terminal and the tracking data elements.
2. The method of claim 1, wherein the method comprises determining the berthing or unberthing event of the vessel upon determining the port terminal is a nearby port terminal based on the perimeter of the land area and the tracking data elements.
3. The method of claim 2, whereinthe tracking data elements of the vessel comprises a current tracking data element of the vessel; andthe method further comprises calculating the distance of the vessel from the perimeter of the land area and the current tracking data element, wherein determining the port terminal is a nearby port terminal is based on the distance.
4. The method of claim 3, wherein determining the port terminal is a nearby port terminal comprises determining the distance is between 0.01 and 200 metres.
5. The method of any one of the preceding claims, whereinthe method further comprises determining movement characteristics of the vessel from the tracking data elements; anddetermining the berthing or unberthing event of the vessel is based on the perimeter of the land area and the movement characteristics.
6. The method of claim 5, whereinthe movement characteristics comprises an average speed and a distance travelled over a preceding period of time; anddetermining the movement characteristics comprises calculating the average speed and the distance travelled using historical tracking data elements.
7. The method of claim 5 or 6, wherein determining the berthing or unberthing event of the vessel at a port terminal comprises determining whether one or more of the movement characteristics satisfy one or more conditions indicative of berthing or unberthing.
8. The method of claim 7, whereinthe movement characteristics comprises an average speed and a distance travelled over a preceding period of time; andthe one or more conditions comprises a condition indicative of the average speed being less than about 0.1 knots, and / or determining the distance travelled being between 0.01 and 200 metres.
9. The method of claim 7 or 8, whereinthe movement characteristics comprises a current vessel heading; andthe one or more conditions comprises a condition indicative of the current vessel heading remaining unchanged from a previous vessel heading.
10. The method of any one of claims 7 to 9, whereinthe movement characteristics comprises a vessel status; andthe one or more conditions comprises a condition indicative of the vessel status being moored or anchored.
11. The method of any one of claims 7 to 10, whereinthe movement characteristics comprises a vessel rate of turn; andthe one or more conditions comprises a condition indicative the vessel rate of turn being about zero.
12. The method of any one of claims 7 to 11, wherein the one or more conditions comprises a condition indicative of one or more of the movement characteristics being unchanged for at least about 15 minutes.
13. The method of any one of claims 7 to 12, whereinthe movement characteristics comprises a vessel status; andthe one or more conditions comprises a condition indicative of the vessel status being underway engine.
14. The method of any one of claims 7 to 13, whereinthe movement characteristics comprises a current vessel speed; andthe one or more conditions comprises a condition indicative of the current vessel speed being greater than about 1 knot.
15. The method of any one of claims 7 to 14, whereinthe method further comprises determining a previous berthing event of the vessel representing a previous berthing of the vessel at the port terminal; anddetermining the unberthing event of the vessel comprises determining a distance from the port terminal being greater than about 0.5 miles upon determining the previous berthing event.
16. The method of any one of the preceding claims, wherein the perimeter of the land area comprises a polygon representing the land area, the polygon comprising multiple line segments representing the perimeter of the land area.
17. The method of claim 16, wherein the method further comprises calculating the distance of the vessel from the perimeter of the land area by calculating a distance from one or more of the line segments to a current location of the vessel provided by a current tracking data element.
18. The method of any one of the preceding claims, wherein the method further comprises updating one or more perimeters associated with one of multiple port terminals based on one or more of:actual berthing or unberthing events;determined berthing or unberthing events; andhistorical tracking data elements.
19. The method of any one of the preceding claims, wherein receiving the tracking data elements of the vessel comprises:receiving raw tracking data elements of the vessel;processing the raw tracking data elements; andclassifying the raw tracking data elements into one of: a positional event class and a static event class, to determine the tracking data elements.
20. The method of claim 19, wherein receiving the tracking data elements of the vessel comprises receiving messages comprising the tracking data elements, wherein each of the messages comprises a topic indicative of one of: the positional event class and the static event class.
21. The method of claim 19, wherein the method further comprises processing the tracking data elements in batches according to the topic, and storing, at least partially, the tracking data elements using a NoSQL-based database.
22. The method of any one of the preceding claims, wherein the method further comprises: upon determining the berthing or unberthing event of the vessel, generating event data indicative of the determined berthing or unberthing event of the vessel.
23. The method of claim 22, wherein the method further comprises calculating an estimated time of arrival or departure of the vessel for a further port terminal along a voyage of the vessel using the event data.
24. The method of any one of the preceding claims, wherein generating the event data is performed in real time.
25. The method of any one of the preceding claims, wherein any one of the tracking data elements correspond to automatic identification system (AIS) data elements.
26. The method of any one of the preceding claims, wherein the event data comprising data indicative of one or more of:time of the berthing or unberthing event;whether the corresponding event is a berthing or unberthing event;an identifier of the port terminal; anda location of the port terminal.
27. A computer-implemented method for determining a berthing or unberthing event of a vessel at a nearby port terminal, the method comprising:receiving tracking data elements of the vessel;determining movement characteristics of the vessel from the tracking data elements; anddetermining the berthing or unberthing event of the vessel at the port terminal upon determining whether one or more of the movement characteristics satisfy one or more conditions indicative of berthing or unberthing.
28. The method of claim 27, whereinthe movement characteristics comprises an average speed and a distance travelled over a preceding period of time; andthe one or more conditions comprises a condition indicative of the average speed being less than about 0.1 knots, and / or determining the distance travelled being between 0.01 and 200 metres.
29. The method of claim 27 or 28, whereinthe movement characteristics comprises a current vessel heading; andthe one or more conditions comprises a condition indicative of the current vessel heading remaining unchanged from a previous vessel heading.
30. The method of any one of claims 27 to 29, whereinthe movement characteristics comprises a vessel status; andthe one or more conditions comprises a condition indicative of the vessel status being moored or anchored.
31. The method of any one of claims 27 to 30, whereinthe movement characteristics comprises a vessel rate of turn; andthe one or more conditions comprises a condition indicative the vessel rate of turn being about zero.
32. The method of any one of claims 27 to 31, wherein the one or more conditions comprises a condition indicative of one or more of the movement characteristics being unchanged for at least about 15 minutes.
33. The method of any one of claims 27 to 32, whereinthe movement characteristics comprises a vessel status; andthe one or more conditions comprises a condition indicative of the vessel status being underway engine.
34. The method of any one of claims 27 to 33, whereinthe movement characteristics comprises a current vessel speed; andthe one or more conditions comprises a condition indicative of the current vessel speed being greater than about 1 knot.
35. The method of any one of claims 27 to 34, whereinthe method further comprises determining a previous berthing event of the vessel representing a previous berthing of the vessel at the port terminal; anddetermining the unberthing event of the vessel comprises determining a distance from the port terminal being greater than about 0.5 miles upon determining the previous berthing event.
36. Software that, when executed by a computer, causes the computer to perform the method of any one of the preceding claims.
37. A system for determining a berthing or unberthing event of a vessel, the system comprising a processor configured to perform the method of any one of claims 1 to 36.
38. A system for determining a berthing or unberthing event of a vessel at a nearby port terminal, the system comprising a processor configured to perform the method of any one of claims 27 to 35.