ESA.instrument.orbit_m
index
/home/lfeng/otool/ESA/instrument/orbit_m.py

Class for pre-calculated orbit 
 
Authors: L. Feng, Edinburgh University
History: v0.9, 2012.06.28
History: v0.95, 2013.02.15
 
Classes:
===============================================
1. orbit_cl: Class for reading and filtering pre-calculated orbits

 
Modules
       
ESA.util.geo_constant
ESA.util.message_m
numpy
ESA.util.otool_obj
ESA.instrument.orbit_file_m
ESA.util.time_module
ESA.util.vertical_profile

 
Classes
       
orbit_cl

 
class orbit_cl
    Class for reading and filtering pre-calculated orbits 
 
 
Members:
====================================================================
1. viewtype:<str>: instrument type
2. viewmode:<str>: view mode such as 'nadir', 'glint' etc
3. flnm    :<str>: Name of orbit file (reserved for future use)
4. datapath:<str>: file path 
5. yyyy    :<int>: year 
6. mm      :<int>: month 
7. dd      :<int>: day 
 
8. fopen   :<func>: construct class file_desc_cl for accessing orbit file  (see Note 5)
9. fread   :<func>: read orbit data into fdesc (see Note 6)
10. fclose :<func>: orbit file close function  (see Noye 7)
11. fget   :<func>:  get origin orbit table
 
12. var_name_dict:<dict>: translation between column name in the orbit file 
--- and variable name in class 
 
13. fio_keywords:<dict>: extra parameter for opening and reading orbit files 
 
14. fdesc:<file_desc_cl>: file access class
 
15. orb:<dict>:  orbit information 
 
 
Functions
===============================================================
1. __init__: initialization
2. load_orbit_from_file: read orbit from file 
3. grid_orbit: grid obit data into grid boxes defined by rlon, rlat
4. get_var: get variable stored in self.fdesc
Notes:
================================================================
 
1) After orbit file is read, self.orb and self.var_name_dict must  
contain the following entries:
--- 1) 'lon' for longitude
--- 2) 'lat' for latitude
--- 3) 'sza' for solar zenith angle 
--- 4) 'time' for time in seconds
 
2) self.fesc.dtable contains all data read from orbit files.  
3) self.orb contains only those with their names in var_name_dict. 
4) self.orb could have less records than fdesc after being regridded or being filtered 
5) fopen is expected to have an interface like:
---fdesc=fopen(flnm, datapath,        viewtype, viewmode,       yyyy, doy,       **keywords)
 
6) fread is expected to have an interface like:
---fdesc=fread(fdesc, **keywords)
 
 
7) fclose is expected to have an interface like:
---fclose(fdesc)
 
  Methods defined here:
__init__(self, viewtype, viewmode, datapath, flnm, yyyy, mm, dd, fopen=<function open_orbit_file>, fread=<function read_orbit_file>, fclose=<function close_orbit_file>, fget=<function get_orbit_data>, varname_dict={'cnt': 'number', 'lat': 'lat', 'lon': 'lon', 'sza': 'sza', 'time': 'date'}, mask_val=-999.0, fio_keywords={})
Initialization
 
Inputs:
---------------------------------------------
1. viewtype:<str>: instrument type
2. viewmode:<str>: view mode such as 'nadir', 'glint' etc
3. datapath:<str>: file path 
4. flnm    :<str>: Name of orbit file (reserved for future use)
5. yyyy    :<int>: year 
6. mm      :<int>: month 
7. dd      :<int>: day 
 
8. fopen   :<func>: orbit file open function (Note 5). 
9. fread   :<func>: orbit file read function (Note 6).
10. fclose :<func>: orbit file close function (Note 7).
11. varname_dict:<dict>: translation between column name in orbit file 
--- and variable name in class (Note 1). 
 
12. fio_keywords:<dict>: extra parameter for opening and reading orbit files
get_var(self, varname)
get the variable stored in self.fdesc
 
 
Inputs:
------------------------------------
1. varname:<str>: variable name 
 
 
Returns:
-------------------------------
1. var:<array> variable
grid_orbit(self, rlon, rlat, update_orbit=True)
grid orbit data into grid boxes defined by rlon, rlat 
 
Inputs:
--------------------------------------------------
1. rlon: <array, (nlon)>: longitude grid in ascending order. 
2. rlat: <array, (nlat)>: latitude grid  in descending order.
 
3. reset_orbit:<T/F>: if true, self.orb will be set to new gridded data
 
 
Returns:
-------------------------------------
1. all_fields:<dict>: orbit data summaried at grid boxes defined by (rlonxrlat)
load_orbit_from_file(self, yyyy, mm, dd, **keywords)
read orbit from file 
 
Inputs:
---------------------------------------------
1. yyyy    :<int>: year 
2. mm      :<int>: month 
3. dd      :<int>: day 
4. keywords :<dict>: extra parameters for file access 
        
Returns
-----------------------------------------------
1. len(fdesc.dtable):<int>: number of record read in