[Thread Prev][Thread Next][Index]
Re: [ferret_users] openDAP default value
Hi Ansley,
Actually my opendap server is under test and so it is not publicly
available.
I send you the ncdump output of the netcdf file (coriolis.ncdump). But I
have no fillValue problem when I read that file with ferret.
So I send you the 'dncdump -h' output of the opendap result, where my
fillValue problem is.
What I first can see when I compare the headers is that the
'temperature' variable type is 'short' in the netcdf file and becomes
'Float' in the opendap output. But the _fillValue type is still 'short'
in both cases.
The CF standards ask for the _FillValue to have the same type as its
variable, but it is not true in my Grads-openDAP output. Is that the
reason why ferret cannot understand my _fillValue ?
Thomas
Ansley Manke wrote:
Hi Thomas,
The missing_value and _fillValue in your file are assumed to be packed
according to the same add_offset and scale_values as the variable.
This is described in the CF standard for for missing values, and
Ferret applies the same logic to _fillValue as well. The paragraph in
the CF standard is under the section on Missing data:
http://www.cgd.ucar.edu/cms/eaton/cf-metadata/CF-1.0.html#miss
So, you should apply add_offset and scale_factor from the variable to
the values that you wish to use for the missing or fill flag. Of
course there may be a problem with computational precision.
I am not able to open your file; if this does not answer your
question, could you send the NetCDF header so I can see what your
settings are (the result of the command ncdump -h filename)
Ansley
Thomas LOUBRIEU wrote:
Hello,
I am testing a netcdf dataset that I made available through a GDS
openDAP server but I cannot set the default value.
My variables are packed thanks to the 'add_offset' and 'scale_factor'
attributes.
I have set the 'missing_value' and '_fillValue' attributes to the
unpacked default value but ferret does not seem to understand it :
yes? use
"http://rhisib18:8080/grads-dods/coriolis/coriolis-atlantic-temperature-weekly-oa_v3_rt"
yes? list/t=10-nov-2004/z=10/x=-100 temperature
...
10.93N / 332: 52.77
10.60N / 331: 52.77
10.28N / 330: 52.77
9.95N / 329: 52.77
9.62N / 328: 52.77
9.29N / 327: 52.77
8.96N / 326: 52.77
...
where 52.77 is something like the result of '32767*0.001 + 20.0'
Why this result is not recognized as the default value ? Is it
because the unpacked value is rounded ?
I am also trying to force the default value by doing :
yes?set variable/bad=32767.0 temperature
But it doesn't work . I also try unpacked value (52.77) as default
value but it doesn't work better.
Otherwise, I have no problem while I directly access the netcdf file
with ferret.
Does anyone know what happens ?
Thomas
PS
I uses ferret v5.81 on redhat9.
My dataset is made available with gds-1.3 and grads-1.9b4
The opendap DAS output is as follow :
Attributes {
NC_GLOBAL {
String CONVENTIONS "COARDS";
String producer_agengy "IFREMER";
String project_name "CORIOLIS";
String creation_time "12-Jan-2005 20:02:03";
String software_version "OA_V3.02";
String product_version "OA3_02";
String data_set "STD3_02";
String data_manager "Emmanuelle Autret, Thomas Loubrieu";
String estimate_date "05-Jan-2000";
String south_latitude "-70";
String north_latitude "70";
String west_longitude "-100";
String east_longitude "40";
String title "CORIOLIS Analysed temperature";
String Conventions "COARDS", "GrADS";
String dataType "Grid";
String history "Tue Aug 02 11:16:50 CEST 2005 : imported by
GrADS Data Server 1.3";
}
temperature {
String long_name "Temperature";
Int16 missing_value 32767;
Int16 _FillValue 32767;
String units "degree_Celsius";
Int16 valid_min -3;
Int16 valid_max 40;
Float64 add_offset 20;
Float64 scale_factor 0.001;
String comment "Temperature estimate (by objective analysis)";
}
pct_variance {
String long_name "Estimate variance / a priori variance
(percent)";
Int16 missing_value 32767;
Int16 _FillValue 32767;
String units "percent";
Int16 valid_min 0;
Int16 valid_max 100;
Float64 scale_factor 0.01;
}
lon {
String grads_dim "x";
String grads_mapping "levels";
String grads_size "421";
String units "degrees_east";
String long_name "longitude";
Float64 minimum -100;
Float64 maximum 40;
Float32 resolution 0.33333334;
}
lat {
String grads_dim "y";
String grads_mapping "levels";
String grads_size "597";
String units "degrees_north";
String long_name "latitude";
Float64 minimum -69.9662;
Float64 maximum 69.9662;
Float32 resolution 0.2347859;
}
time {
String grads_dim "t";
String grads_mapping "linear";
String grads_size "255";
String grads_min "00z05jan2000";
String grads_step "10080mn";
String units "days since 1-1-1 00:00:0.0";
String long_name "time";
String minimum "00z05jan2000";
String maximum "00z17nov2004";
Float32 resolution 7.0;
}
lev {
String grads_dim "z";
String grads_mapping "levels";
String units "millibar";
String long_name "altitude";
Float64 minimum 5;
Float64 maximum 1950;
Float32 resolution 33.53448;
}
}
netcdf OA_20000105 {
dimensions:
time = 1 ;
depth = 59 ;
latitude = 597 ;
longitude = 421 ;
variables:
float time(time) ;
time:units = "days since 1950-01-01 00:00:00" ;
float latitude(latitude) ;
latitude:units = "degree_north" ;
latitude:valid_min = -90.f ;
latitude:valid_max = 90.f ;
float longitude(longitude) ;
longitude:units = "degree_east" ;
longitude:valid_min = -180.f ;
longitude:valid_max = 180.f ;
short depth(depth) ;
depth:units = "m" ;
depth:positive = "down" ;
depth:valid_min = 0s ;
depth:valid_max = 2000s ;
short temperature(time, depth, latitude, longitude) ;
temperature:long_name = "Temperature" ;
temperature:missing_value = 32767s ;
temperature:_FillValue = 32767s ;
temperature:units = "degree_Celsius" ;
temperature:valid_min = -3s ;
temperature:valid_max = 40s ;
temperature:add_offset = 20. ;
temperature:scale_factor = 0.001 ;
temperature:comment = "Temperature estimate (by objective analysis)" ;
short pct_variance(time, depth, latitude, longitude) ;
pct_variance:long_name = "Estimate variance / a priori variance (percent)" ;
pct_variance:missing_value = 32767s ;
pct_variance:_FillValue = 32767s ;
pct_variance:units = "percent" ;
pct_variance:valid_min = 0s ;
pct_variance:valid_max = 100s ;
pct_variance:scale_factor = 0.01 ;
// global attributes:
:CONVENTIONS = "COARDS" ;
:producer_agengy = "IFREMER" ;
:project_name = "CORIOLIS" ;
:creation_time = "12-Jan-2005 20:02:03" ;
:software_version = "OA_V3.02" ;
:product_version = "OA3_02" ;
:data_set = "STD3_02" ;
:data_manager = "Emmanuelle Autret, Thomas Loubrieu" ;
:estimate_date = "05-Jan-2000" ;
:south_latitude = "-70" ;
:north_latitude = "70" ;
:west_longitude = "-100" ;
:east_longitude = "40" ;
}
netcdf coriolis-atlantic-temperature-weekly-oa_v3_rt {
dimensions:
time = 1 ;
lev = 59 ;
lat = 597 ;
lon = 421 ;
variables:
float temperature(time, lev, lat, lon) ;
temperature:long_name = "Temperature" ;
temperature:missing_value = 32767s ;
temperature:_FillValue = 32767s ;
temperature:units = "degree_Celsius" ;
temperature:valid_min = -3s ;
temperature:valid_max = 40s ;
temperature:add_offset = 20. ;
temperature:scale_factor = 0.001 ;
temperature:comment = "Temperature estimate (by objective analysis)" ;
float pct_variance(time, lev, lat, lon) ;
pct_variance:long_name = "Estimate variance / a priori variance (percent)" ;
pct_variance:missing_value = 32767s ;
pct_variance:_FillValue = 32767s ;
pct_variance:units = "percent" ;
pct_variance:valid_min = 0s ;
pct_variance:valid_max = 100s ;
pct_variance:scale_factor = 0.01 ;
double time(time) ;
time:grads_dim = "t" ;
time:grads_mapping = "linear" ;
time:grads_size = "1" ;
time:grads_min = "00z05jan2000" ;
time:grads_step = "10080mn" ;
time:units = "days since 1-1-1 00:00:0.0" ;
time:long_name = "time" ;
time:minimum = "00z05jan2000" ;
time:maximum = "00z05jan2000" ;
double lev(lev) ;
lev:grads_dim = "z" ;
lev:grads_mapping = "levels" ;
lev:units = "millibar" ;
lev:long_name = "altitude" ;
lev:minimum = 5. ;
lev:maximum = 1950. ;
lev:resolution = 33.534481f ;
double lat(lat) ;
lat:grads_dim = "y" ;
lat:grads_mapping = "levels" ;
lat:grads_size = "597" ;
lat:units = "degrees_north" ;
lat:long_name = "latitude" ;
lat:minimum = -69.9662 ;
lat:maximum = 69.9662 ;
lat:resolution = 0.2347859f ;
double lon(lon) ;
lon:grads_dim = "x" ;
lon:grads_mapping = "levels" ;
lon:grads_size = "421" ;
lon:units = "degrees_east" ;
lon:long_name = "longitude" ;
lon:minimum = -100. ;
lon:maximum = 40. ;
lon:resolution = 0.33333334f ;
// global attributes:
:CONVENTIONS = "COARDS" ;
:producer_agengy = "IFREMER" ;
:project_name = "CORIOLIS" ;
:creation_time = "12-Jan-2005 20:02:03" ;
:software_version = "OA_V3.02" ;
:product_version = "OA3_02" ;
:data_set = "STD3_02" ;
:data_manager = "Emmanuelle Autret, Thomas Loubrieu" ;
:estimate_date = "05-Jan-2000" ;
:south_latitude = "-70" ;
:north_latitude = "70" ;
:west_longitude = "-100" ;
:east_longitude = "40" ;
:title = "CORIOLIS Analysed temperature" ;
:Conventions = "COARDS\n",
"GrADS" ;
:dataType = "Grid" ;
:history = "Thu Aug 04 12:20:07 CEST 2005 : imported by GrADS Data Server 1.3" ;
}
[Thread Prev][Thread Next][Index]
Dept of Commerce /
NOAA /
OAR /
PMEL /
TMAP
Contact Us | Privacy Policy | Disclaimer | Accessibility Statement