make.construction.traffic | R Documentation |
Generates artificial Automatic Identification System (AIS) data to represent ship traffic connected with the construction
of a wind farm, to supplement scenarios where no real records of such data are available. A list of ship characteristics may be
supplied, or a built-in default set of ships may be used. Ship routes are constructed such that all ships start at a chosen harbour position,
attend each piling event observing individual stay durations, and between pilings either return to the harbour or traverse as much of the
route back to the harbour as time allows. Route data can afterwards be converted to a DeponsShips
object (using
ais.to.DeponsShips
) which can be read by DEPONS.
make.construction.traffic(
pilings,
ships = NULL,
x.harbour,
y.harbour,
startday = "2010-01-01",
tz = "UTC"
)
pilings |
A data frame containing the positions and times of piling operations during the construction of a wind farm.
May contain real data but must be in the format as produced by |
ships |
A data frame with the characteristics of the ships that should be simulated. Must contain one entry for each ship and the columns 'id', length' (num; ship length, meters), 'speed' (num; knots), and 'daily.pause' (num; length of active, i.e. noisy, pause at each piling event, ticks). If no data are provided, a set of 13 ships based on data from piling operations at the Moray East wind farm in 2019 is used (see details). |
x.harbour |
Numeric. X coordinates (meters) of originating harbour for all ships |
y.harbour |
Numeric. Y coordinates (meters) of originating harbour for all ships |
startday |
Character. Intended start date of the simulation. If ticks provided in 'pilings' were converted from real dates using |
tz |
Time zone. Defaults to "UTC |
All ships will attend each piling event. The route of each ship over the wind farm construction period is created in this manner: 1) The ship will try to be in position at a piling for the duration of its 'pause.length'; this is considered an active pause, i.e. the ship holds position by engine use and generates noise. The pause is timed such that the piling event's midpoint is in the middle of the pause. 2) The ship starts at the harbour location at the beginning of the data set, and will leave for the first piling in time to reach it at its given speed. 3) Between any two piling events, the ship will attempt to go back to the harbour if there is sufficient time to do so, and wait there until the next event (see ship ID_1 in example). If there is insufficient time to cover the whole distance back and forth, the ship will go back as far as possible along the route, and turn around in time to reach the next piling event (see ship ID_2 in example). If the time between pilings is shorter than the active pause duration, the ship will move straight between piling events, spending half of the remaining time pausing at each location. Pausing at the harbour is not considered an active pause, i.e. no noise is generated. 4) After the last piling event, the ship will return to the harbour and wait there until the end of the simulation.
If the number of ticks until the first piling event is too low for the slowest ship in the set to reach it from the harbour,
an error is thrown, in which case the time of all piling events should be shifted backward. If the ticks were converted from real dates using
time.to.tick
, this can be done by choosing an earlier 'origin' in that conversion.
Ships can only move in a straight line between the harbour and any piling event. The harbour position should therefore be chosen so that such routes do not cut across islands, headlands etc. (land intersections will however not interfere with movement, and the user may consider ignoring minor irregularities for the sake of convenience).
Function make.windfarms
generates hypothetical piling data that can be used with this function. If real piling data are used,
dates should be converted to ticks using time.to.tick
.
The type of all ships is set to "Other", since this category includes those vessel classes expected to be present at piling operations.
After the data have been generated, the user's next step will probably be conversion to a DeponsShips
object with ais.to.DeponsShips
,
and parameterization of active pauses using make.stationary.ships
. It is recommended to also use check.DeponsShips
to
verify ship speeds.
If no ship data are provided, a set of 13 ships based on data from piling operations at the Moray East wind farm in 2019 is used:
vessel class | length (m) | active pause duration (ticks) |
CTV | 14 | 0 |
CTV | 15 | 1 |
CTV | 19 | 8 |
CTV | 23 | 1 |
CTV | 24 | 1 |
CTV | 25 | 4 |
CTV | 25.75 | 1 |
CTV | 25.75 | 2 |
CTV | 27 | 1 |
Dive | 20 | 1 |
OS | 88.4 | 11 |
OS | 89 | 41 |
OS | 120 | 9 |
(CTV: crew transfer vessel, Dive: dive support ship, OS: offshore supply ship)
The type of these ships is set to "Other" and the speed to 7.4 knots (see make.stationary.ships
for the source of these conventions).
A data frame of ship positions and the times at which the positions are set, with columns 'id', 'time' (of the form
"
'x', and 'y' (num; position, meters). This data frame is suitable for conversion using ais.to.DeponsShips
.
make.windfarms
for creation of hypothetical wind farm piling data.
x.harbour <- 0
y.harbour <- 0
ships <- as.data.frame(rbind(c("ID_1", 20, 14, 2),
c("ID_2", 20, 8, 20)))
ships[,2:4] <- as.numeric(unlist(ships[,2:4]))
colnames(ships) <- c("id", "length", "speed", "pause.length")
pilings <- as.data.frame(rbind(c("Piling_1", 100000, 100000, 50, 54),
c("Piling_2", 102000, 100000, 80, 84),
c("Piling_3", 100000, 102000, 110, 114),
c("Piling_4", 102000, 102000, 140, 144)))
pilings[,2:5] <- as.numeric(unlist(pilings[,2:5]))
colnames(pilings) <- c("id", "x.coordinate", "y.coordinate", "tick.start", "tick.end")
construction.traffic <- make.construction.traffic(pilings = pilings, ships = ships,
x.harbour = x.harbour, y.harbour = y.harbour)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.