[v7.x]: BUFR: Negative and unknown enum value
Versions impacted by the bug
v5.x, v6.x, v7.x
What went wrong?
Report from mailing list:
Hi,
I am using netcdf-java 5.3.3 to read various bufr-files. It works very well, but 2 things are strange:
-
Compared to other tools, I got sometimes different values for the variable
obs.Radiosonde_type,-114in this case. This is a invalid value, since the values of thisenumare only positive. -
I also got
Unknown enum valuefor severalenums, for exampleobs.Radiosonde_type. In netcdf-java 5.4.1 these values areNULL. I am not sure, if this a problem with your library, since many (not all)enums can be transformed to string (NetcdfDatasets does this job) and only BUFRdisplay was able to transformobs.Radiosonde_typefor me.
Here are my test results:
-
LSSW 0 02 011 RADIOSONDE TYPE CODE_TABLE 10** 0 0 8 bits 142 [ 142.000 ] DWSG 0 02 011 RADIOSONDE TYPE CODE_TABLE 10** 0 0 8 bits 124 [ 124.000 ] -
[toolsUI](5.3.3 https://www.unidata.ucar.edu/downloads/netcdf-java/)
LSSW Radiosonde_type = "Unknown enum value=-114" CodeTable 0-2-11 DWSG Radiosonde_type = "Unknown enum value=124" CodeTable 0-2-11 -
toolsUI-5.4.1 Only
NULLfor both files -
LSSW 8,"Radiosonde type","Code table","0-02-011",142 -> Vaisala RS41 with pressure derived from GPS height/AUTOSONDE (Finland) DWSG 8,"Radiosonde type","Code table","0-02-011",124 -> Vaisala RS41/AUTOSONDE (Finland) -
LSSW "key" : "radiosondeType", "value" : 142, "units" : "CODE TABLE" DWSG "key" : "radiosondeType", "value" : 124, "units" : "CODE TABLE"
After searching for Vaisala RS41/AUTOSONDE (Finland) in your repository, I found this:
https://github.com/Unidata/netcdf-java/blob/94e4415435e4d1acc2de658297592c7518b1bdf4/cdm-core/src/main/resources/resources/wmo/Common_C02_20181107_en.xml#L948-L955
This file is or should be used here:
https://github.com/Unidata/netcdf-java/blob/94e4415435e4d1acc2de658297592c7518b1bdf4/cdm-core/src/main/java/ucar/nc2/internal/wmo/CommonCodeTable.java#L72
Unfortunately only C1, C3 and C12 are active at the moment. C2 is commented out. This explains the Unknown enum value.
Relevant stack trace
No response
Relevant log messages
No response
If you have an example file that you can share, please attach it to this issue.
If so, may we include it in our test datasets to help ensure the bug does not return once fixed? Note: the test datasets are publicly accessible without restriction.
Yes
Code of Conduct
- [X] I agree to follow the UCAR/Unidata Code of Conduct
Thank you for your report @netty-jawn!
Thanks!
Any progress in this issue?
Regarding the negative number: The -114 is not so wrong at all. The Windows calculator gave me this binary representation of both values:
142 = 10001110
-114 = 1111111111111111111111111111111111111111111111111111111110001110
@JP95Git