Skip to content
Snippets Groups Projects
Commit 52a9245b authored by leprob001's avatar leprob001
Browse files

feat: Erronous trajectories are now initialized and an error message is displayed to the user

parent cdd9fdba
No related branches found
No related tags found
No related merge requests found
328 329
\ No newline at end of file \ No newline at end of file
...@@ -9,6 +9,11 @@ if nargin == 0 ...@@ -9,6 +9,11 @@ if nargin == 0
pPlotAsMap = false; pPlotAsMap = false;
end end
%% Prepare error struct
error = struct();
error.success = true;
error.messages = {};
%% Set current axes %% Set current axes
artoaGui.figures.trajectoryOutput.CurrentAxes = artoaGui.trajectoryOutput.axesTrajectoryOutput; artoaGui.figures.trajectoryOutput.CurrentAxes = artoaGui.trajectoryOutput.axesTrajectoryOutput;
...@@ -71,101 +76,113 @@ trajectoryColors = jet(round(length(trajectories) * 1.5)); ...@@ -71,101 +76,113 @@ trajectoryColors = jet(round(length(trajectories) * 1.5));
for i = 1:length(trajectories) for i = 1:length(trajectories)
% initialize handle container % initialize handle container
artoaGui.trajectoryOutput.trajectoryHandles{i} = struct(); artoaGui.trajectoryOutput.trajectoryHandles{i} = struct();
trajectoryColor = trajectoryColors(i, :); artoaGui.trajectoryOutput.trajectoryHandles{i}.scatterPositions = {};
% plot the trajectory itself artoaGui.trajectoryOutput.trajectoryHandles{i}.linePositions = {};
[ ... artoaGui.trajectoryOutput.trajectoryHandles{i}.textPositions = {};
artoaGui.trajectoryOutput.trajectoryHandles{i}.scatterPositions, ... artoaGui.trajectoryOutput.trajectoryHandles{i}.scatterSurfacePositions = {};
artoaGui.trajectoryOutput.trajectoryHandles{i}.linePositions, ... artoaGui.trajectoryOutput.trajectoryHandles{i}.textSurfacePositions = {};
artoaGui.trajectoryOutput.trajectoryHandles{i}.textPositions ... artoaGui.trajectoryOutput.trajectoryHandles{i}.scatterReferencePoints = {};
] = artoa.controller.track.trajectoryOutput.plotTrajectory( ... artoaGui.trajectoryOutput.trajectoryHandles{i}.textReferencePoints = {};
artoaGui.trajectoryOutput.axesTrajectoryOutput, ... artoaGui.trajectoryOutput.trajectoryHandles{i}.offsetVariations = {};
trajectories{i}, ... artoaGui.trajectoryOutput.trajectoryHandles{i}.linesSoundsources = {};
trajectoryColor, ... try
pPlotAsMap ... trajectoryColor = trajectoryColors(i, :);
); % plot the trajectory itself
% plot surface positions thicker than trajectory
[ ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.scatterSurfacePositions, ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.textSurfacePositions ...
] = artoa.trajectory.plotTimeDivergenceToGpsPositions( ...
artoaGui.trajectoryOutput.axesTrajectoryOutput, ...
trajectories{i}, ...
[.6 .6 .6], ...
pPlotAsMap ...
);
% plot trajectory reference point
[ ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.scatterReferencePoints, ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.textReferencePoints ...
] = artoa.trajectory.plotTrajectoryReferencePositions( ...
artoaGui.trajectoryOutput.axesTrajectoryOutput, ...
trajectories{i}, ...
trajectoryColor, ...
pPlotAsMap ...
);
% plot error ellipses and vectors
if artoa.data.hasMember(trajectories{i}, 'variationResults')
[ ... [ ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.offsetVariations ...
] = artoa.trajectory.plotOffsetVariations( ...
artoaGui.trajectoryOutput.axesTrajectoryOutput, ...
trajectories{i}.variationResults, ...
artoaConfig.offsetvariations, ...
trajectoryColor ...
);
else
artoaGui.trajectoryOutput.trajectoryHandles{i}.offsetVariations = {};
end
% plot lines between soundsources
[ ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.linesSoundsources ...
] = artoa.controller.track.trajectoryOutput.plotSoundsourceLines( ...
artoaGui.trajectoryOutput.axesTrajectoryOutput, ...
trajectories{i}, ...
artoaWorkspace.filteredSoundsources...
);
% hide lines between soundsources
artoa.controller.setPlotHandleVisibility( ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.linesSoundsources, ...
false ...
);
% set visibility of trajectories
artoa.controller.setPlotHandleVisibility( ...
{ ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.scatterPositions, ... artoaGui.trajectoryOutput.trajectoryHandles{i}.scatterPositions, ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.linePositions, ... artoaGui.trajectoryOutput.trajectoryHandles{i}.linePositions, ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.textPositions, ... artoaGui.trajectoryOutput.trajectoryHandles{i}.textPositions ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.scatterReferencePoints, ... ] = artoa.controller.track.trajectoryOutput.plotTrajectory( ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.textReferencePoints, ... artoaGui.trajectoryOutput.axesTrajectoryOutput, ...
trajectories{i}, ...
trajectoryColor, ...
pPlotAsMap ...
);
% plot surface positions thicker than trajectory
[ ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.scatterSurfacePositions, ... artoaGui.trajectoryOutput.trajectoryHandles{i}.scatterSurfacePositions, ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.textSurfacePositions, ... artoaGui.trajectoryOutput.trajectoryHandles{i}.textSurfacePositions ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.offsetVariations ... ] = artoa.trajectory.plotTimeDivergenceToGpsPositions( ...
}, ... artoaGui.trajectoryOutput.axesTrajectoryOutput, ...
~trajectories{i}.hidden ... trajectories{i}, ...
); [.6 .6 .6], ...
if ~trajectories{i}.hidden pPlotAsMap ...
% position dates );
if ~artoa.data.hasMember(artoaWorkspace, {'trajectoryOutput', 'showPositionDates'}) % plot trajectory reference point
artoaWorkspace.trajectoryOutput.showPositionDates = true; [ ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.scatterReferencePoints, ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.textReferencePoints ...
] = artoa.trajectory.plotTrajectoryReferencePositions( ...
artoaGui.trajectoryOutput.axesTrajectoryOutput, ...
trajectories{i}, ...
trajectoryColor, ...
pPlotAsMap ...
);
% plot error ellipses and vectors
if artoa.data.hasMember(trajectories{i}, 'variationResults')
[ ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.offsetVariations ...
] = artoa.trajectory.plotOffsetVariations( ...
artoaGui.trajectoryOutput.axesTrajectoryOutput, ...
trajectories{i}.variationResults, ...
artoaConfig.offsetvariations, ...
trajectoryColor ...
);
end end
% plot lines between soundsources
[ ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.linesSoundsources ...
] = artoa.controller.track.trajectoryOutput.plotSoundsourceLines( ...
artoaGui.trajectoryOutput.axesTrajectoryOutput, ...
trajectories{i}, ...
artoaWorkspace.filteredSoundsources...
);
% hide lines between soundsources
artoa.controller.setPlotHandleVisibility( ... artoa.controller.setPlotHandleVisibility( ...
{ ... artoaGui.trajectoryOutput.trajectoryHandles{i}.linesSoundsources, ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.textPositions, ... false ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.textSurfacePositions ...
}, ...
artoaWorkspace.trajectoryOutput.showPositionDates ...
); );
% error ellipses % set visibility of trajectories
if ~artoa.data.hasMember(artoaWorkspace, {'trajectoryOutput', 'showErrorEllipses'})
artoaWorkspace.trajectoryOutput.showErrorEllipses = false;
end
artoa.controller.setPlotHandleVisibility( ... artoa.controller.setPlotHandleVisibility( ...
{ ... { ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.scatterPositions, ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.linePositions, ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.textPositions, ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.scatterReferencePoints, ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.textReferencePoints, ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.scatterSurfacePositions, ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.textSurfacePositions, ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.offsetVariations ... artoaGui.trajectoryOutput.trajectoryHandles{i}.offsetVariations ...
}, ... }, ...
artoaWorkspace.trajectoryOutput.showErrorEllipses ... ~trajectories{i}.hidden ...
); );
if ~trajectories{i}.hidden
% position dates
if ~artoa.data.hasMember(artoaWorkspace, {'trajectoryOutput', 'showPositionDates'})
artoaWorkspace.trajectoryOutput.showPositionDates = true;
end
artoa.controller.setPlotHandleVisibility( ...
{ ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.textPositions, ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.textSurfacePositions ...
}, ...
artoaWorkspace.trajectoryOutput.showPositionDates ...
);
% error ellipses
if ~artoa.data.hasMember(artoaWorkspace, {'trajectoryOutput', 'showErrorEllipses'})
artoaWorkspace.trajectoryOutput.showErrorEllipses = false;
end
artoa.controller.setPlotHandleVisibility( ...
{ ...
artoaGui.trajectoryOutput.trajectoryHandles{i}.offsetVariations ...
}, ...
artoaWorkspace.trajectoryOutput.showErrorEllipses ...
);
end
catch err
error.success = false;
error.messages{end + 1} = ['ID: ' num2str(trajectories{i}.id) ' ' err.message ];
end end
end end
...@@ -189,5 +206,14 @@ if ~strcmp(artoaGui.trajectoryOutput.axesTrajectoryOutput.XLimMode, 'manual') .. ...@@ -189,5 +206,14 @@ if ~strcmp(artoaGui.trajectoryOutput.axesTrajectoryOutput.XLimMode, 'manual') ..
artoaGui.trajectoryOutput.axesTrajectoryOutput.XLim = artoaConfig.trajectoryOutput.limitlon; artoaGui.trajectoryOutput.axesTrajectoryOutput.XLim = artoaConfig.trajectoryOutput.limitlon;
end end
%% Display error messages to user
if ~error.success
errordlg( ...
['Please try removing the erronous trajectories:' newline newline strjoin(error.messages, [newline newline])], ...
'Error during plot!' ...
);
end
end end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment