-
Andi Walther authoredAndi Walther authored
cws_read__readdata_LAR.pro 6.38 KiB
;
; LAR or CREW
;
function cws_read::readdata_LAR
if keyword_set(uncertainty) then error_message_uncertainty, self.grp
bin_flag = 0
self.infile = FILE_SEARCH(self->build_source_path()+'MSGP.' $
+ self->get_date(/string,/year,/day_of_year) $
+ '.'+self->get_date(/string,/hour,/minute)+ '00.03K.BIN',c=c)
stop
IF c EQ 1 THEN BEGIN
; read binary file
bin_flag = 1
structure = { $
lon:fltarr(3712,3712), $
lat:fltarr(3712,3712), $
refl2:fltarr(3712,3712), $
bt039 :fltarr(3712,3712), $
bt108 :fltarr(3712,3712), $
cph:fltarr(3712,3712), $
cod:fltarr(3712,3712), $
refW:fltarr(3712,3712), $
refI:fltarr(3712,3712), $
lwp:fltarr(3712,3712), $
iwp:fltarr(3712,3712), $
ctt:fltarr(3712,3712), $
ctp:fltarr(3712,3712), $
ctpE:fltarr(3712,3712), $
cth:fltarr(3712,3712), $
cthE:fltarr(3712,3712), $
cbh:fltarr(3712,3712) $
}
dum = fltarr(3712,3712)
openr,lun,self.infile,/get_lun,/swap_endian
FOR i=0,14 DO BEGIN
readu,lun,dum
structure.(i) = dum
ENDFOR
free_lun,lun
ENDIF ELSE BEGIN
; search netCDF files
self.infile = FILE_SEARCH(self->build_source_path()+'MET9.' $
+ self->get_date(/string,/year,/day_of_year) $
+ '.'+self->get_date(/string,/hour,/minute)+ '00.03K.CDF',c=c)
IF c eq 0 THEN RETURN,-1
; read indicies
col = ulonarr(10281010)
openr,lun,self->build_source_path()+'/../col_lut.dat',/get_lun,/swap_endian
readu,lun,col
free_lun,lun
row = ulonarr(10281010)
openr,lun,self->build_source_path()+'/../row_lut.dat',/get_lun,/swap_endian
readu,lun,row
free_lun,lun
bin_flag = 0
ENDELSE
CASE self.product of
'cmb': BEGIN
IF bin_flag eq 0 THEN BEGIN
fileID = ncdf_open(self.inFile)
cmbID = ncdf_varID(fileID,'cloud_phase')
ncdf_varget,fileID,cmbID,cmb
ncdf_close,fileID
data = make_array([3712,3712],value=-99.)
data[col,row]=cmb
ENDIF ELSE data = structure.cph
img = rotate((data ge 6) + 2.* ( between(data,-1,5)) ,7)
undefine,data
undefine,cmb
RETURN,img
END
'cth' : BEGIN
IF bin_flag eq 0 THEN BEGIN
fileID = ncdf_open(self.inFile)
cmbID = ncdf_varID(fileID,'cloud_top_height')
ncdf_varget,fileID,cmbID,data
ncdf_close,fileID
img = make_array([3712,3712],value=-99.)
img[col,row] = data
endIF ELSE img = structure.cth
img = rotate(img,7)
nodata_idx = where(img lt 0 ,nodata_anz)
IF nodata_anz gt 0 THEN img[nodata_idx]=-1.
RETURN,img
end
'ctp' : BEGIN
IF bin_flag eq 0 THEN BEGIN
fileID = ncdf_open(self.inFile)
cmbID = ncdf_varID(fileID,'cloud_top_pressure')
ncdf_varget,fileID,cmbID,data
ncdf_close,fileID
img = make_array([3712,3712],value=-1.)
img[col,row] = data
endIF ELSE img = structure.ctp
img = rotate(img,7)
nodata_idx = where(img lt 0 ,nodata_anz)
IF nodata_anz gt 0 THEN img[nodata_idx]=-1.
RETURN,img
end
'ctt' : BEGIN
IF bin_flag eq 0 THEN BEGIN
fileID = ncdf_open(self.inFile)
cmbID = ncdf_varID(fileID,'cloud_effective_temperature')
ncdf_varget,fileID,cmbID,data
ncdf_close,fileID
img = make_array([3712,3712],value=-1.)
img[col,row] = data
ENDIF ELSE img = structure.ctt
img = rotate(img,7)
nodata_idx = where(img lt 0 ,nodata_anz)
IF nodata_anz gt 0 THEN img[nodata_idx]=-1.
RETURN,img
end
'cod' : BEGIN
IF bin_flag eq 0 THEN BEGIN
fileID = ncdf_open(self.inFile)
cmbID = ncdf_varID(fileID,'visible_optical_depth')
ncdf_varget,fileID,cmbID,data
ncdf_close,fileID
img = make_array([3712,3712],value=-1.)
img[col,row] = data
ENDIF ELSE img = structure.cod
img = rotate(img,7)
nodata_idx = where(img lt 0 ,nodata_anz)
IF nodata_anz gt 0 THEN img[nodata_idx]=-1.
RETURN,img
END
'ref' : BEGIN
IF bin_flag eq 0 THEN BEGIN
fileID = ncdf_open(self.inFile)
cmbID = ncdf_varID(fileID,'particle_size')
ncdf_varget,fileID,cmbID,data
ncdf_close,fileID
img = make_array([3712,3712],value=-1.)
img[col,row] = data
img = rotate(img,7)
self->set_product,'cph'
cph = self->get_data()
self->set_product,'ref'
idx_ice = where(round(cph) eq 2,cIce)
IF cIce gt 0 THEN img[idx_ice] /= 2.
ENDIF ELSE BEGIN
wat = structure.refW
ice = (structure.refI)/2.
img = wat > ice
ENDELSE
nodata_idx = where(img lt 0 ,nodata_anz)
IF nodata_anz gt 0 THEN img[nodata_idx]=-1.
RETURN,img
END
'lwp' : BEGIN
IF bin_flag eq 0 THEN BEGIN
fileID = ncdf_open(self.inFile)
cmbID = ncdf_varID(fileID,'liquid_water_path')
ncdf_varget,fileID,cmbID,data
ncdf_close,fileID
img = make_array([3712,3712],value=-1.)
img[col,row] = data
ENDIF ELSE BEGIN
lwp = structure.lwp
iwp = structure.iwp
img = lwp > iwp
ENDELSE
img = rotate(img,7)
nodata_idx = where(img lt 0 ,nodata_anz)
IF nodata_anz gt 0 THEN img[nodata_idx]=-1.
RETURN,img
END
'cph' : BEGIN
IF bin_flag eq 0 THEN BEGIN
fileID = ncdf_open(self.inFile)
cmbID = ncdf_varID(fileID,'cloud_phase')
ncdf_varget,fileID,cmbID,data
ncdf_close,fileID
img = make_array([3712,3712],value=-1.)
img[col,row] = data
ENDIF ELSE img = structure.cph
cph = rotate(img,7)
cmb = self->get_data(product='cmb')
self->set_product,'cph'
data = 0.*(cmb eq 0) + 1.*( cph eq 1 or cph eq 2 or cph eq 3) $
+ 2.*( cph eq 4 or (cph eq 5) ) $
+ 4.*( (cph eq 6 or cph eq 9) and (cmb eq 1) )
RETURN,data
END
ENDCASE
end