Ignore:
Timestamp:
21/02/07 13:25:11 (13 years ago)
Author:
domlowe
Message:

Added new crs (xyh) and integrated into ProfileSeries? code

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI02-CSML/trunk/csml/csmllibs/csmlcrs.py

    r2196 r2198  
    4141        crs.timeAxis=2 
    4242         
     43        # define lon lat height CRS: 
     44        crs=CRSystem(srsName='ndg:crs:xyh', axes =['longitude', 'latitude','height']) 
     45        self.systems['ndg:crs:xyh']=crs 
     46        crs.lonAxis=0 
     47        crs.latAxis=1 
     48        crs.timeAxis=None 
     49         
     50         
    4351        # define height time CRS: 
    4452        crs=CRSystem(srsName='ndg:crs:ht', axes =['height', 'time']) 
     
    7280            return self.systems['ndg:crs:unknown'] 
    7381     
    74     def determineCRS(self, axes, units): 
     82    def getUnitType(self, unit): 
     83        unittype='unknown' 
     84        if string.lower(unit) in ['second', 'seconds', 's', 'mins','minute','minutes','hour','hours','h','hr','hrs','day','days']: 
     85            unittype='time' 
     86        elif string.lower(unit)[:10] in ['days since', 'seconds si', 'minutes si', 'hours sinc','months sin', 'years sinc']: 
     87            unittype='time' 
     88        elif string.lower(unit) in ['mbar', 'pa','level']: 
     89            unittype='pressure' 
     90        elif string.lower(unit) in ['m', 'km']: 
     91            unittype='height' 
     92        elif string.lower(unit) in ['degrees_north', 'degrees_south']: 
     93            unittype='latitude' 
     94        elif string.lower(unit) in ['degrees_east','degrees_west']: 
     95            unittype='longitude' 
     96        return unittype 
     97     
     98    def determineCRS(self, axes=None, units=None, knownCRSAxes=None): 
    7599        '''given any list of axis names and a list of units for these axes attempt to determine the CRS and return the CRSystem object and an axis order list. 
    76100        e.g passing in: (axes=['t', 'ht', 'latitude', 'longitude'],units=['days since 1991-09-01 00:00:00', 'm', 'degrees_north', 'degrees_east']) 
    77101        returns self.systems['ndg:crs:xypt'], [3,2,1,0] 
    78         Assumes the units are ordered to correspond with the axes! 
     102        Assumes the units are ordered to correspond with the axes 
     103        Alternatively, supply with a list of knownCRSAxes names (e.g. 'latitude', 'longitude', 'height') to get the right crs object         
    79104        ''' 
     105                        
    80106        axisorder=[] 
     107        if knownCRSAxes is not None: 
     108            axes=knownCRSAxes 
     109                     
    81110        if len(axes)==2: 
    82111            crs=self.systems['ndg:crs:unknown2d'] 
     
    87116        else : 
    88117            crs=self.systems['ndg:crs:unknown'] 
    89         crsMap=[] 
    90         #this can be extended to accomodate more units 
    91         for axis in axes: 
    92             print axis 
    93             unit=units[axes.index(axis)] 
    94             unittype='unknown' 
    95             if string.lower(unit) in ['second', 'seconds', 's', 'mins','minute','minutes','hour','hours','h','hr','hrs','day','days']: 
    96                 unittype='time' 
    97             elif string.lower(unit)[:10] in ['days since', 'seconds si', 'minutes si', 'hours sinc','months sin', 'years sinc']: 
    98                 unittype='time' 
    99             elif string.lower(unit) in ['mbar', 'pa','level']: 
    100                 unittype='pressure' 
    101             elif string.lower(unit) in ['m', 'km']: 
    102                 unittype='height' 
    103             elif string.lower(unit) in ['degrees_north', 'degrees_south']: 
    104                 unittype='latitude' 
    105             elif string.lower(unit) in ['degrees_east','degrees_west']: 
    106                 unittype='longitude' 
    107             crsMap.append(unittype) 
     118         
     119        #this can be extended to accomodate more units        
     120        if knownCRSAxes is not None: 
     121            crsMap=knownCRSAxes           
     122        else: 
     123            crsMap=[] 
     124            for axis in axes: 
     125                unit=units[axes.index(axis)] 
     126                unittype=self.getUnitType(unit)             
     127                crsMap.append(unittype) 
     128         
    108129         
    109130        #now try and match up crsMap with known crsystems.         
Note: See TracChangeset for help on using the changeset viewer.