Skip to content
Snippets Groups Projects
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