ncread not identifying missing values

2 views (last 30 days)
Emily
Emily on 21 Nov 2011
Commented: Walter Roberson on 6 Feb 2021
I'm using ncread to open a netcfd4 file. First, I used ncdisp and ncinfo to determine that my temperature variable of interest has a scale factor and missing value attribute associated with it. However, when I use ncread to read in this temperature variable, the scale factor and missing value attribute are not taken into account. For example, missing values still appear as "-327.6", the missing value ID, rather than NaN. What am I doing wrong? I thought ncread was automatically supposed to use the missing value attribute information and apply it to the dataset when it reads in the variable. How can I do this? Thank you! -Emily

Answers (2)

Ashish Uthama
Ashish Uthama on 23 Nov 2011
Emily, the replacing fill values and applying scale and offset values is a convention. (i.e its not part of the file format specification), hence they need to have specific names. ncread will honor attributes with these specific names: _FillValue, scale_factor and add_offset: more here.
If your attribute names are not the same as the above convention, your best bet is to use the ncreadatt function to read in those attributes and perform the conversion.
If they have the standard names, and are not being honored, consider contacting tech support or posting a sample file for us to check.
  2 Comments
sara niazi
sara niazi on 6 Feb 2021
my problem is :
how wrf_chem model understand missing value?(-9999.0) or NAN in wrfchemistry files as it's input file?
Could you guide me, please? I have made wrfchemistry files for the wrf_chem model as input files. some of my data has a missing value(-9999.0) in wrfchemistry file(wrfchemi_d01_2010-07-16_12:00:00) (here is the link of my file:https://drive.google.com/file/d/1Fk8HPKyiQU1-dFq5yu5Q3XApTIYLJRGR/view?usp=sharing).my question is how to determine the missing value in the wrfchemistry file so that it is understandable for the WRF_Chem model.I want my model(WRF_Chem ) doesn't have any valu on points with 9999.0 value.
how shall I create or describe my attributes in my netcdf file(wrfchemi_d01_2010-07-16_12:00:00)
has my wrfchemi file true attribute:
dimensions:
Time = 1 ;
DateStrLen = 19 ;
south_north = 124 ;
west_east = 173 ;
emissions_zdim = 1 ;
variables:
char Times(Time, DateStrLen) ;
double E_CO2(Time, emissions_zdim, south_north, west_east) ;
E_CO2:FieldType = 104. ;
E_CO2:MemoryOrder = "XYZ" ;
E_CO2:units = "mol km^-2 hr^-1" ;
E_CO2:stagger = "" ;
**E_CO2:missing_value = "-9999.f" ;
E_CO2:FillValue = "-9999.f" ; ** is that true?
E_CO2:coordinates = "XLONG XLAT" ;**
shall I fill the variables in the wrfchemistry file(wrfchemi_d01_2010-07-16_12:00:00) with "NaN" or "-9999.0"?
I always recieve thes Error:
Error using netcdflib
The NetCDF library encountered an error during execution of 'endDef' function - 'Not a valid data type or _FillValue type mismatch (NC_EBADTYPE)'.
Thank you for the response
Walter Roberson
Walter Roberson on 6 Feb 2021
The fill value and missing value are configured as a string, but the data is configured as numeric.

Sign in to comment.


Lucio
Lucio on 15 Jun 2012
Hi, I am having exactly the same problem as Emily. But, I am using the right specific names when writing the attributes.
So, for writing the NetCDF I use
ncwriteatt(ncfile,'vr','_FillValue',single(fillval));
where ncfile is the full name of my NetCDF file and 'vr' is the variable of interest. Then, when I read by typing
data.vr = double(ncread(ncfile,'vr'));
I get no NaN and the value of the fill value instead. I have Matlab R2012a on a Linux Debian Squeeze 64 bits. Any guess? Lucio
  1 Comment
John
John on 15 Jun 2012
If your file is netcdf-4, you probably shouldn't do that with fill values. The "fill value" in this case is a dataset creation property in the underlying netCDF/HDF5 file format, and therefore can only be set when the netcdf variable is first created. The "_FillValue" attribute is, in this case, just an attribute. If you change it, then the attribute is out of sync with the real "fill value" of the netCDF/HDF5 file.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!