[ncl-talk] Problems converting hdf to netcdf using NCL
BLIUJUS, STEVEN D CTR USAF AFMC AFLCMC/HBAW-OL
steven.bliujus.3.ctr at us.af.mil
Fri May 22 09:35:48 MDT 2015
I am taking several hdf files (200-400) and trying to generate one NetCDF file. I am able to plot it on a grid, but when I try to write to a NetCDF file, I get the following error:
fatal:Number of dimensions in parameter (2) of (filedimdef) is (2), (1) dimensions were expected
fatal:["Execute.c":8128]:Execute: Error occurred at or near line 82 in file File.ncl
The data I am creating is AOD with two dimensions (lat/lon). I am uncertain as to why it is expecting one dimension. Below is my script. FYI, the original files had to be manipulated in order to make AOD have the lat/lon dimensions. Any help would be greatly appreciated.
load "/home/bliujuss/ncl/lib/ncarg/nclscripts/csm/gsn_code.ncl"
load "/home/bliujuss/ncl/lib/ncarg/nclscripts/wrf/WRFUserARW.ncl"
load "/home/bliujuss/ncl/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
load "/home/bliujuss/ncl/lib/ncarg/nclscripts/csm/shea_util.ncl"
begin
diri = "/home/bliujuss/Verification_data/Test/"
fili = systemfunc("ls "+diri+"*.hdf")
a = addfiles(fili,"r")
;ListSetType(a,"cat")
var1=a[:]->Optical_Depth_Land_And_Ocean(:,:)
Optical_Depth_Land_And_Ocean = short2flt(var1)
var2=a[:]->Longitude(:,:)
Longitude=var2
var3 = a[:]->Latitude(:,:)
Latitude=var3
dims = dimsizes(Optical_Depth_Land_And_Ocean)
nrows = dims(0) ;203
npixels = dims(1) ;135
lat2d = new((/nrows,npixels/),float)
lon2d = new((/nrows,npixels/),float)
do i=0,npixels-1
lat2d(:,i) = Latitude(:,i)
end do
do i=0,nrows-1
lon2d(i,:) = Longitude(i,:)
end do
Optical_Depth_Land_And_Ocean at lat2d = lat2d(::5,::5)
Optical_Depth_Land_And_Ocean at lon2d = lon2d(::5,::5)
wks = gsn_open_wks("x11","plot_aod")
gsn_define_colormap(wks,"NCV_banded")
setvalues NhlGetWorkspaceObjectId()
"wsMaximumSize": 300000000
end setvalues
res = True ; plot mods desired
res at cnLinesOn = False ; turn off contour lines
res at cnFillOn = True ; color plot desired
res at cnLineLabelsOn = False ; turn off contour lines
res at gsnAddCyclic = False ; non-global data
res at gsnSpreadColors = True ; use full range of colormap
;res at cnFillMode = "RasterFill" ; turn on raster mode
res at lbLabelAutoStride = True ; nice spacing of lables
res at gsnMaximize = True ; blow up plot as much as poss
;print(min(lat2d))
;print(max(lat2d))
;print(min(lon2d))
;print(max(lon2d))
plot = gsn_csm_contour_map_ce(wks,Optical_Depth_Land_And_Ocean(::5,::5),res)
print(max(Optical_Depth_Land_And_Ocean(::5,::5)))
nlat = dimsizes(lat2d(::5,::5))
nlon = dimsizes(lon2d(::5,::5))
diro = "/home/bliujuss/Plots/"
filo = "example.nc"
system("rm -f" + diro + filo)
fout = addfile (diro + filo, "c")
setfileoption(fout,"DefineMode",True)
dim_names = (/"lat", "lon"/)
dim_sizes = (/nlat, nlon/)
dimUnlim = (/False, False/)
filedimdef(fout,dim_names,dim_sizes,dimUnlim)
filevardef(fout, "lat", typeof(lat2d(::5,::5)),getvardims(lat2d(::5,::5)))
filevardef(fout, "lon", typeof(lon2d(::5,::5)),getvardims(lon2d(::5,::5)))
filevardef(fout, "AOT", typeof(Optical_Depth_Land_And_Ocean(::5,::5)),getvardims(Optical_Depth_Land_And_Ocean(::5,::5)))
filevarattdef(fout,"AOT", Optical_Depth_Land_And_Ocean(::5,::5))
filevarattdef(fout,"lat", lat2d(::5,::5))
filevarattdef(fout,"lon", lon2d(::5,::5))
setfileoption(fout,"DefineMode",False)
fout->Optical_Depth_Land_And_Ocean(::5,::5) = (/Optical_Depth_Land_And_Ocean(::5,::5)/)
fout->lat2d(::5,::5) = (/lat2d(::5,::5)/)
fout->lon2d(::5,::5) = (/lon2d(::5,::5)/)
end
Steven Bliujus
More information about the ncl-talk
mailing list