Ignore:
Timestamp:
09/01/07 13:05:04 (13 years ago)
Author:
domlowe
Message:

axis order relationship working

File:
1 edited

Legend:

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

    r1974 r1978  
    66        self.srsName=srsName 
    77        self.axes=axes 
    8         self.timeAxis=None 
    9         self.lonAxis=None 
    10         self.latAxis=None 
    118        self.srsDimension=len(self.axes) 
    129        self.axisLabels='' 
    1310        for axis in self.axes: 
    1411            self.axisLabels=self.axisLabels + axis + ' ' 
     12        self.timeAxis=None 
     13        self.lonAxis=None 
     14        self.latAxis=None 
    1515 
    1616class CRSCatalogue(object): 
     
    3737        self.systems['ndg:crs:xyt']=crs 
    3838         
     39        #define unknown 1D CRS: 
     40        crs=CRSystem(srsName='ndg:crs:unknown', axes=['unknown']) 
     41        self.systems['ndg:crs:unknown']=crs 
     42         
     43        #define unknown 3D CRS: 
     44        crs=CRSystem(srsName='ndg:crs:unknown2d', axes=['unknown','unknown']) 
     45        self.systems['ndg:crs:unknown2d']=crs 
     46         
    3947        #define unknown 3D CRS: 
    4048        crs=CRSystem(srsName='ndg:crs:unknown3d', axes=['unknown','unknown','unknown']) 
     
    4553        self.systems['ndg:crs:unknown4d']=crs 
    4654         
    47         #define unknown CRS: 
    48         crs=CRSystem(srsName='ndg:crs:unknown', axes=['unknown']) 
    49         self.systems['ndg:crs:unknown']=crs 
    50      
     55             
    5156    def getCRS(self, srsName): 
    5257        #given the name of a CRS e.g. 'ndg:crs:xypt' return the CRSystem object  
     
    6368        ''' 
    6469        axisorder=[] 
     70        if len(axes)==2: 
     71            crs=self.systems['ndg:crs:unknown2d'] 
    6572        if len(axes)==3: 
    6673            crs=self.systems['ndg:crs:unknown3d'] 
     
    7279        #this can be extended to accomodate more units 
    7380        for axis in axes: 
    74             print axis 
    7581            unit=units[axes.index(axis)] 
    76             print unit 
    7782            unittype='unknown' 
    7883            if string.lower(unit) in ['second', 'seconds', 's', 'mins','minute','minutes','hour','hours','h','hr','hrs','day','days']: 
     
    8994                unittype='Lon' 
    9095            crsMap.append(unittype) 
    91         print 'CRS_MAP %s'%crsMap 
    9296         
    9397        #now try and match up crsMap with known crsystems.         
     98        #axisorder stores the order of the supplied axes against the known crs. 
     99        #so if the known crs is 'Lat' 'Lon' 'Time' and the supplied axes are 'Time' 'Lat' 'Lon' then 
     100        #axisorder would be [2, 0, 1]   
     101         
    94102        for system in self.systems: 
    95103            if len(self.systems[system].axes) != len(crsMap): 
     
    112120def main(): 
    113121    cat=CRSCatalogue() 
    114      
    115     #test determining  various crs 
    116     print 'TEST 1:' 
    117     print '*************************************' 
    118     axs=['longitude', 'latitude', 'pressure', 't'] 
    119     uns=['','','Pa','s'] 
    120     print 'AXES: %s'%axs 
    121     print 'UNITS: %s'%uns 
    122     crs, axisorder= cat.determineCRS(axes=axs, units=uns) 
    123     print 'srsName = %s' %crs.srsName 
    124     print 'srsDimension = %s' %crs.srsDimension 
    125     print 'axisLabels =%s' %crs.axisLabels 
    126     print '**************************************' 
    127      
    128     print 'TEST 2:' 
    129     print '*************************************' 
    130     axs=['longitude', 'latitude', 't'] 
    131     uns=['','','s']   
    132     print 'AXES: %s'%axs 
    133     print 'UNITS: %s'%uns 
    134     crs, axisorder=cat.determineCRS(axes=axs, units=uns) 
    135     print 'srsName = %s' %crs.srsName 
    136     print 'srsDimension = %s' %crs.srsDimension 
    137     print 'axisLabels = %s' %crs.axisLabels 
    138     
    139     
     122   
     123 
    140124    #test every crs in this netcdf file 
    141125    crsdictionary={} 
     
    153137    for key in crsdictionary: 
    154138        n=n+1 
    155         print 'TEST %d'%n 
     139        print '\n TEST %d'%n 
    156140        print '*************************************' 
    157141       #make list from string. 
     
    163147        print 'UNITS: %s'%uns 
    164148        crs, axisorder= cat.determineCRS(axes=axs, units=uns) 
    165         print 'srsName = %s' %crs.srsName 
    166         print 'srsDimension = %s' %crs.srsDimension 
    167         print 'axisLabels =%s' %crs.axisLabels 
    168         print 'axis order =%s'%axisorder 
     149        print 'CRS: %s'%crs.srsName 
     150        print 'ORDER:  %s'%axisorder 
     151        #print 'axis order =%s'%axisorder 
     152        labels='' 
     153         
     154        print axes 
     155        # ['t', 'ht', 'latitude_1', 'longitude_1'] 
     156        print crs.axes 
     157         # ['Lon', 'Lat', 'Pressure', 'Time'] 
     158        print axisorder 
     159        # [3, 2, 1, 0] 
     160         
     161        for axis in axes: 
     162            labels=labels + axis + ' ' 
     163         
     164        print '\n Pseudo CSML:' 
     165        print '<GridSeriesDomain srsName=%s srsDimension=%s axisLabels=%s>'%(crs.srsName, crs.srsDimension,crs.axisLabels) 
     166        print '<axisLabels>%s</axisLabels>'%labels 
     167        for axis in axes: 
     168            print '<GridOrdinate>' 
     169  
     170            unit=units[axes.index(axis)] 
     171            print '     <coordAxisLabel>%s</coordAxisLabel>'%crs.axes[axisorder[axes.index(axis)]] 
     172            print '     <gridAxesSpanned>%s</gridAxesSpanned>'%axis 
     173            print '</GridOrdinate>' 
     174        print '</GridSeriesDomain>' 
     175         
    169176        print '**************************************' 
    170177   #test getting CRS by name: 
    171     print 'getting ndg:crs:xypt by name' 
    172     crs=cat.getCRS('ndg:crs:xypt') 
    173     print 'srsName = %s' %crs.srsName 
    174     print 'srsDimension = %s' %crs.srsDimension 
    175     print 'axisLabels =%s' %crs.axisLabels 
    176     print 'time axis =%s' %crs.timeAxis 
    177     print 'longitude axis =%s' %crs.lonAxis 
    178     print 'latitude axis =%s' %crs.latAxis 
     178    #print 'getting ndg:crs:xypt by name' 
     179    #crs=cat.getCRS('ndg:crs:xypt') 
     180    #print 'returns %s'%crs.srsName 
     181     
     182     
     183     
     184     
     185     
     186     
    179187if __name__=="__main__": 
    180188    main() 
Note: See TracChangeset for help on using the changeset viewer.