Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OceanContour parser handling of magnetic declination #800

Open
sspagnol opened this issue Aug 17, 2023 · 0 comments
Open

OceanContour parser handling of magnetic declination #800

sspagnol opened this issue Aug 17, 2023 · 0 comments

Comments

@sspagnol
Copy link
Contributor

I asked the OceanIllumination devs a question about some attributes in the exported netcdf files, namely

Regarding attributes 

:Instrument_user_decl = 0.0f; // float
:Instrument_user_decl_description = "Enable sync trigger";
:Instrument_trig_en = 0; // int
:Instrument_trig_en_description = "Magnetic Declination (degrees)";
:DataInfo_transformsAndCorrections_magneticDeclination = 0.0f; // float
:DataInfo_transformsAndCorrections_magneticDeclination_description = "Compass magnetic declination correction";

Just want to check

1. It's just the descriptions of user_decl and trig_en are swapped?

2. Does Instrument_user_decl records value of declination correction applied on instrument setup?

3. DataInfo_transformsAndCorrections_magneticDeclination  records value of declination correction applied during processing?

4. If questions 2 and 3 are correct, are these declination corrections additive? Wondering if a use had set user_decl to say 3, then when they came to process the data realized it should be 5, so they set transformsAndCorrections_magneticDeclination to 2, for a total declination correction of 5.

Their response was

1.)	Yes.  Just the description had been swapped (a cut-paste error).  This was fixed internally a while ago.
2.)	Yes.  User_decl is the instrument supplied magnetic declination.
3.)	Yes.  The magnetic declination is the magnetic declination as supplied by the user to Ocean Contour.
4.)	Contour assumes that the user_decl is factored into the raw data so it adjusts the Contour supplied magnetic declination accordingly to make the Contour declination the total declination.
Declination applied by Contour = contourMagneticDeclination - instrumentMagneticDeclination;

In your example, you would supply a declination of 5 to Contour to get  a total correction of 5.

So I think the handling of magnetic declination needs to be change so that in function get_attmap

attmap.('magDec_User') = 'Instrument_user_decl';
attmap.('magDec_DataInfo') = 'DataInfo_transformsAndCorrections_magneticDeclination';

And in function readOceanContourFile

magDec_User = get_att('magDec_User');
magDec_DataInfo = get_att('magDec_DataInfo');
has_magdec_user = logical(magDec_User);
has_magdec_oceancontour = logical(magDec_DataInfo);
meta.magDec = 0.0;
custom_magnetic_declination = has_magdec_user | has_magdec_oceancontour;
if has_magdec_oceancontour % testing order important
    meta.magDec = magDec_DataInfo;
elseif has_magdec_user
    meta.magDec = magDec_User;
end

And further in function build_magnetic_variables, I think the test should be against ~custom_magnetic_declination, that is

if ~custom_magnetic_declination
    %TODO: This is probably unecessary
    %I believe OceanContourDouble-check if OceanContour will change variable names if custom magnetic declination is used.
    dispmsg('%s: Assigning non ENU Velocities to ENU variables. Verify the magnetic declination angles.')
    ucur_name = 'UCUR_MAG';
    vcur_name = 'VCUR_MAG';
    heading_name = 'HEADING_MAG';
else
    ucur_name = 'UCUR';
    vcur_name = 'VCUR';
    heading_name = 'HEADING';
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant