Newer
Older
function shipVelocity( hMainFig )
%
% Compute the ship velocity in knots
% Used to test bad Position
% Get the data from the application GUI
% -------------------------------------
tsg = getappdata( hMainFig, 'tsg_data');
% Get tsg fieldnames
% ------------------
tsgNames = fieldnames(tsg);
nbFieldNames = length( tsgNames );
% Test for bad velocity.
% Suppress the bad records
% ------------------------
nBadVelocity = 0;
indBadVelocity = 1;
while ~isempty( indBadVelocity )
% Record number
% -------------
tsgLength = length(tsg.DAYD);
% Spherical earth distance in km - Velocity in knots
% --------------------------------------------------
range = m_lldist(tsg.LONX,tsg.LATX);
ind = size(tsg.DAYD);
velocity = zeros(size(ind));
for i = 1:tsgLength-1
velocity(i) = range(i) / ((tsg.DAYD(i+1)-tsg.DAYD(i)) * 24 * 1.854);
end
velocity = [velocity';0];
% Find velocity > 50 knots
% ------------------------
indBadVelocity = find( velocity > 50 );
if ~isempty( indBadVelocity )
% Keep only the first indice. One bad position lead to 2 bad velocities
% ---------------------------------------------------------------------
indBadVelocity = indBadVelocity(1) + 1;
% Store the number of bad Velocity
% --------------------------------
nBadVelocity = nBadVelocity + 1;
% Delete bad record
% -----------------
for i = 1 : nbFieldNames
para = char( tsgNames{i} );
% Find array of length DAYD in the TSG structure
% ----------------------------------------------
if length( tsg.(para) ) == tsgLength
tsg.(para)(indBadVelocity,:) = [];
end
end
end
% Keep the number of data not in increasing date
% ----------------------------------------------
tsg.report.badvelocity = nBadVelocity;
% Keep ship velocity from positions if sog not available
% ------------------------------------------------------
if isempty(tsg.SPDC)
tsg.SPDC = velocity;
end
% Save tsg structure
% ------------------
setappdata( hMainFig, 'tsg_data', tsg);
end