-
Andi Walther authoredAndi Walther authored
cws_read__readdata_CMS.pro 7.35 KiB
;
;
function cws_read::readdata_CMS
if keyword_set(uncertainty) then error_message_uncertainty, self.grp
case strLowCase(self.product) of
'cmb': BEGIN
self.Infile = FILE_SEARCH(self->build_source_path() $
+ '/CFCin'+ self->get_date(/string) +'*.hdf',c=c)
IF c ne 1 THEN BEGIN
print, '*** Error in cws_read__readdata.pro'
print, ' can not find any files: ', self->build_source_path() $
+ '/CFCin'+ self->get_date(/string) +'*.hdf'
RETURN,-1
ENDIF
fileId = h5f_open(self.infile)
dataId = h5d_open(fileID,'CMa')
cmb = h5d_read(dataID)
H5D_CLOSE,dataID
H5F_CLOSE,fileID
img = make_array(3712,3712,/byte,value=0.)
img[38,38] = ( cmb eq 1 ) + 2 * ( cmb ge 2 )
img = rotate(img,7)
RETURN,img
END
;-----------------------------------------------------------
'ctp' : BEGIN
self.Infile = FILE_SEARCH(self->build_source_path(group='DWD') $
,'CTXin'+ self->get_date(/string) +'*.hdf',c=c)
IF c eq 0 THEN BEGIN
print, '*** Error in cws_read__readdata.pro'
print, ' can not find any files: ', self->build_source_path() $
,'CTXin'+ self->get_date(/string) +'*.hdf'
RETURN,-1
ENDIF
fileId = h5f_open(self.infile)
dataId = h5d_open(fileID,'CTTH_PRESS')
data = h5d_read(dataID)
attId = h5a_open_name(dataId,'SCALING_FACTOR')
gain = h5a_read(attId)
attId = h5a_open_name(dataId,'OFFSET')
intercept = h5a_read(attId)
H5D_CLOSE,dataID
H5F_CLOSE,fileID
img = make_array(3712,3712,/float,value=0.)
img[38,38] = rotate(data,7)*gain + intercept
lat = self->lat()
idx = where(lat lt -100 or img le 0,c)
IF c gt 0 THEN img[idx] = -1
RETURN,img
END
;-----------------------------------------------------------
'cth' : BEGIN
self->set_group, 'DWD' ; saved cth under DWD folder
self.Infile = FILE_SEARCH(self->build_source_path() $
+ '/CTXin'+ self->get_date(/string) +'*.hdf',c=c)
IF c eq 0 THEN BEGIN
print, '*** Error in cws_read__readdata.pro'
print, ' No file found: ' + self->build_source_path() + '/CTXin'+ self->get_date(/string) +'*.hdf'
self->set_group, 'CMS'
RETURN,-1
ENDIF
self->set_group, 'CMS'
fileId = h5f_open(self.infile)
dataId = h5d_open(fileID,'CTTH_HEIGHT')
data = h5d_read(dataID)
attId = h5a_open_name(dataId,'SCALING_FACTOR')
gain = h5a_read(attId)
attId = h5a_open_name(dataId,'OFFSET')
intercept = h5a_read(attId)
H5D_CLOSE,dataID
H5F_CLOSE,fileID
img = make_array(3712,3712,/float,value=0.)
img[38,38] = rotate(data,7)*gain + intercept
img /= 1000. ; in km
lat = self->lat()
idx = where(lat lt -100 or img le 0,c)
IF c gt 0 THEN img[idx] = -1
RETURN,img
END
;----------------------------------------
'ctt': BEGIN
self.Infile = FILE_SEARCH(self->build_source_path() $
+ '/CTXin'+ self->get_date(/string) +'*.hdf',c=c)
IF c eq 0 THEN RETURN,-1
fileId = h5f_open(self.infile)
dataId = h5d_open(fileID,'CTTH_TEMPER')
data = h5d_read(dataID)
attId = h5a_open_name(dataId,'SCALING_FACTOR')
gain = h5a_read(attId)
attId = h5a_open_name(dataId,'OFFSET')
intercept = h5a_read(attId)
H5D_CLOSE,dataID
H5F_CLOSE,fileID
img = make_array(3712,3712,/float,value=0.)
img[38,38] = rotate(data,7)*gain + intercept
lat = self->lat()
idx = where(lat lt -100 or img le 0,c)
IF c gt 0 THEN img[idx] = -1
RETURN,img
END
;-----------------------------
'cod': BEGIN
self.Infile = FILE_SEARCH(self->build_source_path() $
+ '/CPPin'+ self->get_date(/string) +'*.hdf',c=c)
IF c eq 0 THEN RETURN,-1
fileId = h5f_open(self.infile)
dataId = h5d_open(fileID,'cot')
data = h5d_read(dataID)
attId = h5a_open_name(dataId,'gain')
gain = h5a_read(attId)
attId = h5a_open_name(dataId,'intercept')
intercept = h5a_read(attId)
attId = h5a_open_name(dataId,'no_data_value')
no_data_value = h5a_read(attId)
H5D_CLOSE,dataID
H5F_CLOSE,fileID
nodata_idx=where(data eq no_data_value,nodata_anz)
IF nodata_anz gt 0 THEN data[nodata_idx]=-1.
img = make_array(3712,3712,/float,value=0.)
img[38,38] = rotate(data,7)*gain + intercept
RETURN,img
END
;-----------------------------------------------------------
'ref' : BEGIN
self.Infile = FILE_SEARCH(self->build_source_path() $
+ '/CPPin'+ self->get_date(/string) +'*.hdf',c=c)
IF c eq 0 THEN RETURN,-1
fileId = h5f_open(self.infile)
dataId = h5d_open(fileID,'reff')
data = h5d_read(dataID)
attId = h5a_open_name(dataId,'gain')
gain = h5a_read(attId)
attId = h5a_open_name(dataId,'intercept')
intercept = h5a_read(attId)
attId = h5a_open_name(dataId,'no_data_value')
no_data_value = h5a_read(attId)
H5D_CLOSE,dataID
H5F_CLOSE,fileID
nodata_idx=where(data eq no_data_value,nodata_anz)
IF nodata_anz gt 0 THEN data[nodata_idx]=-1.
img = make_array(3712,3712,/float,value=0.)
img[38,38] = rotate(data,7)*gain + intercept
RETURN, img
END
;-----------------------------------------
'cph':BEGIN
self.Infile = FILE_SEARCH(self->build_source_path() $
+ '/CPPin'+ self->get_date(/string) +'*.hdf',c=c)
IF c eq 0 THEN BEGIN
print, '*** Error in cws_read__readdata.pro'
print, ' can not find any files: ', self->build_source_path() $
+ '/CPPin'+ self->get_date(/string) +'*.hdf'
RETURN,-1
ENDIF
fileId = h5f_open(self.infile)
dataId = h5d_open(fileID,'cph')
data = h5d_read(dataID)
H5D_CLOSE,dataID
H5F_CLOSE,fileID
img = make_array(3712,3712,/float,value=0.)
data = rotate(data,7)
;window,1
;view2d, data, /cool, /colo, no_data_idx=where(data lt 0)
;; ; img[38,38] = 1.*(data eq 6) + 2.*(data eq 1) + 4.*(data eq 0)
img[38,38] = -1.*(data eq -1) -1.*(data eq 0) + 0.*(data eq 1) + 100.*(data eq 2)
; space/no retrieval ; no clouds ; water ; ice
;window,2
;view2d, img, /cool, /colo, no_data_idx=where(img lt 0)
RETURN, img
END
;-----------------------------------------
'lwp':BEGIN
self.inFile = file_search(self->build_source_path() $
+ '/CPPin'+ self->get_date(/string) +'*.hdf',c=c)
IF c eq 0 THEN RETURN,-1
fileId = h5f_open(self.infile)
dataId = h5d_open(fileID,'cwp')
data = h5d_read(dataID)
H5D_CLOSE,dataID
H5F_CLOSE,fileID
data = rotate(data,7)
img = make_array(3712,3712,/float,value=0.)
img[38,38] = data
img /=5. ; seems to be a slope in the data; may be subject to check
RETURN,img
END
ELSE: BEGIN
print, '*** Error in cws_read__readdata.pro: for group '+self.grp+' parameter '+self.product+' is not available!'
self->print_log, '*** Error in cws_read__readdata.pro: for group '+self.grp+' parameter '+self.product+' is not available!'
RETURN,-1
END
ENDCASE
END ; END case CMS
end