Wednesday, February 26, 2014

Data structure for observed FMSDR files or simulated BT files in MIRS

SDR : calibrated and earth-located Sensor Data Records
EDR : Environmental Data Records

  1. Radiance files: 
 "io_measur.pro"

; read in header (ReadRadHdr: 7 elements)
    readu,iu, nMeasurData
    readu,iu, nchan
    readu,iu, nPosScan,  nScanLines
    readu,iu, nqc 

    readu,iu,  cfreq
    readu,iu,  polar

; read in body (ReadRad : 13 elements)
    readu,iu,     lat(iprof),   lon(iprof),  RelAziAngle(iprof), SolZenAngle(iprof),
    readu,iu,    direc(iprof), iscanPos(iprof), iscanLine(iprof), Year(iprof),  Day(iprof),  time(iprof),
    readu,iu,    angle(iprof,0:nchan-1)
    readu,iu,    tb(iprof,0:nchan-1)
    readu,iu, qc(iprof,0:nqc-1)=qc0(0:nqc-1)


; Anonymous data structure
;======================================================================================
  ;---Set Up the Rad structure
Rad={ $
;----Header
nfilesRad         : nfilesRad,          $ ;Number of files
nProf               : nprof,                 $ ;Number of profiles
nchan               : nchan,                $ ;Number of channels
nPosScan         : nPosScan,          $ ;Number of scan positions
nScanLines      : nScanLines,       $ ;Number of scan lines
nqc                   : fltarr(nfilesRad),  $ ;Size of QC vector
Cfreq                : cfreq,                $ ;Central frequencies
Polarity            : polar,                 $ ;Polarizations
tb                      : fltarr(nfilesRad,nProf,nchan), $ ;Array of TBs
Angle               : fltarr(nfilesRad,nProf,nchan), $ ;Array of viewing angles
RelAziAngle    : fltarr(nfilesRad,nProf),   $ ;Array of relative azimuth angles
SolZenAngle    : fltarr(nfilesRad,nProf),   $ ;Array of solar zenith angles
Lat                    : fltarr(nfilesRad,nProf),  $  ;Array of latitude
Lon                   : fltarr(nfilesRad,nProf),   $ ;Array of longitude
Direc                 : intarr(nfilesRad,nProf),  $ ;Array of orbot mode flags
ScanPos            : intarr(nfilesRad,nProf), $ ;Scan positions
ScanLine           : intarr(nfilesRad,nProf), $ ;Scan lines
Year                   : lonarr(nfilesRad,nProf), $ ;Year
Day                    : lonarr(nfilesRad,nProf), $ ;Day
Time                  : fltarr(nfilesRad,nProf), $ ;UTC Time
Hours                 : fltarr(nfilesRad,nProf), $ ;Hours      (extended from Time)
Mins                   : fltarr(nfilesRad,nProf), $ ;Minutes  (extended from Time)
Secs                    : fltarr(nfilesRad,nProf), $ ;Seconds  (extended from Time)
qc                        : intarr(nfilesRad,nProf,14) $ ;QC information
}

2. EDR format (scene files ) 
Scene={                                        
    ;----Header
       algSN:algSN,                                readu,iu,algSN
       iTyp:iTyp,                                  readu,iu,iTyp
       nProf:nPrf,                                 readu,iu,nPrf
       nProfsProcessed:0L, not from scene file,    Num of profs read successfully                       nLay:nLay,                                  readu,iu,nLay
       nLev:nLev,                                  readu,iu,nLev
       nChan:nChan,                                readu,iu,nChan
       nScanPos:nPosScan,                          readu,iu,nPosScan
       nScanLines:nScanLines,                      readu,iu,nScanLines
       nAbsorb:nAbsorb,                            readu,iu,nAbsorb
       nParmCLW:nParmCLW,                          readu,iu,nParmCLW
       nParmRain:nParmRain,                        readu,iu,nParmRain
       nParmSnow:nParmSnow,                        readu,iu,nParmSnow
       nParmIce:nParmIce,                          readu,iu,nParmIce 
       nParmGrpl:nParmGrpl,                        readu,iu,nParmGrpl
       absorbID:absorbID2use4Declaration, A        AbsorbID=lonarr(nAbsorb), readu,iu,absorbID
       cFreq:cFreq,                       A        cfreq=fltarr(nChan), readu,iu,cFreq
       polarity:polar,                    A        polar=lonarr(nChan), readu,iu,polar
       nQC:nQC,                                    readu,iu,nQC
       declarN_Prf:nPrf,    duplicate value        nPrf
    ;----Body of Scene file  ( all FOVs )
       profIndxVec:  intarr(nPrf),        A    readu,iu, profIndx
       PresLayVec:   fltarr(nPrf,nLay),   AA   fltarr(Nlay), readu,iu, pressLay
       presLevVec:   fltarr(nPrf,nLev),   AA   fltarr(nLev), readu,iu, pressLev
       tempLayVec:   fltarr(nPrf,nLay),   AA   fltarr(Nlay), readu,iu, tempLay
       absorbLayVec: fltarr(nPrf,nLay,2), AA   fltarr(nAbsorb), readu,iu,absorbents
       tpwVec:       fltarr(nPrf),        A    DERIVED. !!!
       rhVec:        fltarr(nPrf,nLay),   A    DERIVED. !!!
       clwLayVec:    fltarr(nPrf,nParmCLW)AA   fltarr(nParmCLW), readu,iu, xCLW 
       clwVec:       fltarr(nPrf),        A    DERIVED. !!!
       rwpVec:       fltarr(nPrf),        A    DERIVED  !!!
       iwpVec:       fltarr(nPrf),        A    NOT SET  !!!
       gwpVec:       fltarr(nPrf),        A    DERIVED  !!!
       swpVec:       fltarr(nPrf),        A    NOT SET  !!! 
       rainLayVec:   fltarr(nPrf,nParmRain),AA fltarr(nParmRain), readu,iu, xRain
       snowLayVec:   fltarr(nPrf,nParmSnow),AA 0.0  (hard-coded)
       IceLayVec:    fltarr(nPrf,nParmIce), AA 0.0  (hard-coded)
       grplLayVec:   fltarr(nPrf,nParmGrpl),AA fltarr(Scene.nParmGrpl), readu,iu, xGrpl 
       anglVec:      fltarr(nPrf),          A  readu,iu, angl
       relAziAnglVec:fltarr(nPrf),          A  readu,iu, relAziAngl
       solZenAnglVec:fltarr(nPrf),          A  readu,iu, solZenAngl
       emissVec:     fltarr(nPrf,nChan),    AA fltarr(Scene.nchan), readu,iu, emiss
       reflVec:      fltarr(nPrf,nChan),    AA NOT SET !!!
       windSpVec:    fltarr(nPrf),          A  readu,iu, windSp
       windUVec:     fltarr(nPrf),          A  readu,iu, windU
       windVVec:     fltarr(nPrf),          A  readu,iu, windV 
       tskinVec:     fltarr(nPrf),          A  readu,iu, tSkin
       snowDepthVec: fltarr(nPrf),          A  readu,iu, snowDepth
       sfcPressVec:  fltarr(nPrf),          A  readu,iu, sfcPress
       sfcTypVec:    intarr(nPrf),          A  readu,iu, sfcTyp
       QC:           intarr(nPrf,nqc),      AA intarr(Scene.nqc), readu,iu, qc
       lat:          fltarr(nPrf),          A  readu,iu, lat
       lon:          fltarr(nPrf),          A  readu,iu, lon 
       direc:        intarr(nPrf),          A  readu,iu, node  (asc, desc)
       time:         fltarr(nPrf),          A  readu,iu, scanUTC
       year:         intarr(nPrf),          A  readu,iu, scanYear 
       day:          intarr(nPrf),          A  readu,iu, scanDay
       hours:        fltarr(nPrf),  DERIVED A  fix(scanUTC/3600.)  !!!
       mins:         fltarr(nPrf),  DERIVED A  fix( ( time - fix(Hours) * 3600. )/60.)  !!!
       secs:         fltarr(nPrf),  DERIVED A  (Time - Hours*3600. - Mins*60.)   !!!
       nAttempt:     intarr(nPrf),    COD   A  readu,iu, nAtt
       nIter:        intarr(nPrf),    COD   A  readu,iu, nIter
       chiSq:        fltarr(nPrf),    COD   A  readu,iu, chiSq
       yFwd:         fltarr(nPrf,nChan),COD AA fltarr(Scene.nchan), readu,iu,yFwd
       chanSel:      lonarr(nPrf,nChan),COD AA lonarr(Scene.nchan), readu,iu,chanSel
       ym:           fltarr(nPrf,nChan),COD AA fltarr(Scene.nchan), readu,iu,ym
       ymCorr:       fltarr(nPrf,nChan),cOD AA fltarr(Scene.nchan), readu,iu,ymCorr
       scanPos:      lonarr(nPrf),          A  readu,iu, iScanPos
       scanLine:     lonarr(nPrf)           A  readu,iu, iScanLine
  }
 
NOTE: 
1. Condition : COD
   COD: if Scene.iTyp eq 1 

No comments:

Post a Comment