When I'm trying to write a USHORT array in a NetCDF 4 type, it always return an error for this line:
NCDF_ATTPUT,id,'ot_anvilmean_brightness_temperature_difference','_FillValue',0,/USHORT
The error message is
% Type conversion error: Unable to convert given STRING to Unsigned Integer.
Here is the code I use:
PRO datatype_test
;----
nlon=4200
nlat=3640
timeunit='seconds since 2007-07-22 00:00:00'
fname='testnc.nc'
id = NCDF_CREATE(fname,/CLOBBER,/NETCDF4_FORMAT)
tm_id = NCDF_DIMDEF(id,'time',24)
vid = NCDF_VARDEF(id,'time',tm_id,/LONG)
NCDF_ATTPUT,id,'time','long_name','time', /CHAR
NCDF_ATTPUT,id,'time','standard_name','time', /CHAR
NCDF_ATTPUT,id,'time','units',timeunit, /CHAR
NCDF_ATTPUT,id,'time','_FillValue',-999,/LONG
lat_id = NCDF_DIMDEF(id,'grid_lat',nlat)
vid = NCDF_VARDEF(id,'grid_lat',lat_id,/FLOAT)
NCDF_ATTPUT,id,'grid_lat','long_name','Gridded Latitude: center latitude of each box', /CHAR
NCDF_ATTPUT,id,'grid_lat','standard_name','Latitude', /CHAR
NCDF_ATTPUT,id,'grid_lat','units','degrees_north', /CHAR
NCDF_ATTPUT,id,'grid_lat','_FillValue',FLOAT(-999),/FLOAT
lon_id = NCDF_DIMDEF(id,'grid_lon',nlon)
vid = NCDF_VARDEF(id,'grid_lon',lon_id,/FLOAT)
NCDF_ATTPUT,id,'grid_lon','long_name','Gridded Longitude: center longitude of each box', /CHAR
NCDF_ATTPUT,id,'grid_lon','standard_name','Longitude', /CHAR
NCDF_ATTPUT,id,'grid_lon','units','degrees_east', /CHAR
NCDF_ATTPUT,id,'grid_lon','_FillValue',FLOAT(-999),/FLOAT
vid = NCDF_VARDEF(id,'ot_anvilmean_brightness_temperature_difference',[lon_id,lat_id,tm_id],/USHORT, CHUNK_DIMENSIONS=[250,250,1], GZIP=9)
NCDF_ATTPUT,id,'ot_anvilmean_brightness_temperature_difference','long_name','Overshooting Top Minus Anvil Brightness Temperature Difference', /CHAR
NCDF_ATTPUT,id,'ot_anvilmean_brightness_temperature_difference','standard_name','BT Difference of Overshooting Top and Anvil', /CHAR
NCDF_ATTPUT,id,'ot_anvilmean_brightness_temperature_difference','units','degrees_Kelvin', /CHAR
NCDF_ATTPUT,id,'ot_anvilmean_brightness_temperature_difference','valid_range',[1, 5000], /SHORT
NCDF_ATTPUT,id,'ot_anvilmean_brightness_temperature_difference','scale_factor',0.01, /FLOAT
NCDF_ATTPUT,id,'ot_anvilmean_brightness_temperature_difference','coordinates','time grid_lat grid_lon', /CHAR
NCDF_ATTPUT,id,'ot_anvilmean_brightness_temperature_difference','_FillValue',0,/USHORT
vid = NCDF_VARDEF(id,'ot_rating_visible',[lon_id,lat_id,tm_id],/UBYTE, CHUNK_DIMENSIONS=[250,250,1], GZIP=9)
NCDF_ATTPUT,id,'ot_rating_visible','long_name','Visible Texture Detection Rating', /CHAR
NCDF_ATTPUT,id,'ot_rating_visible','standard_name','Visible OT Rating', /CHAR
NCDF_ATTPUT,id,'ot_rating_visible','units','count', /CHAR
NCDF_ATTPUT,id,'ot_rating_visible','valid_range',[1, 255], /UBYTE
NCDF_ATTPUT,id,'ot_rating_visible','coordinates','time grid_lat grid_lon', /CHAR
NCDF_ATTPUT,id,'ot_rating_visible','_FillValue',0,/UBYTE
NCDF_CONTROL, id, /ENDEF ;end def mode
NCDF_CLOSE,id
END
The section of ot_rating_visible, which uses UBYTE type, works fine.
I exhausted all my resources and couldn't figure it out. Does anyone know why it doesn't work?
Thank you so much!
|