Changeset 3583 for TI02-CSML


Ignore:
Timestamp:
11/03/08 15:28:19 (11 years ago)
Author:
domlowe
Message:

fixed bug that was caused by sorting axes list unintentionally

Location:
TI02-CSML/trunk/csml
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • TI02-CSML/trunk/csml/API/ops_GridSeriesFeature.py

    r3267 r3583  
    7474    ''' get the units used in the domain  
    7575    @return:     list of units'''     
    76     srsname=self.value.gridSeriesDomain.srsName 
    77     cat=csml.csmllibs.csmlcrs.CRSCatalogue() 
    78     crs=cat.getCRS(srsname) 
    79     return crs.units 
     76    return self.value.gridSeriesDomain.uomLabels.split() 
    8077     
    8178def __getAxis(self, name): 
  • TI02-CSML/trunk/csml/csmllibs/csmlcrs.py

    r3579 r3583  
    7676        crs.timeAxis=3 
    7777        self.systems['ndg:crs:lonlatht']=crs 
     78 
    7879         
    7980        # define lon lat time CRS: 
     
    165166        crs=CRSystem(srsName='ndg:crs:unknown4d', axes=['unknown','unknown','unknown','unknown']) 
    166167        self.systems['ndg:crs:unknown4d']=crs 
    167                      
     168         
    168169    def getCRS(self, srsName): 
    169170        '''given the name of a CRS e.g. 'ndg:crs:xypt' return the CRSystem object ''' 
     
    195196            unittype = unit 
    196197        return unittype 
     198    def __removespaces(self, s): 
     199            ''' replaces spaces with underscores''' 
     200            return s.replace(' ','_') 
    197201 
    198202    def __generatePseudoCRS(self,crsMap, axes, units): 
    199203        ''' if a suitable crs cannot be found a pseudo crs is created''' 
     204                 
    200205        for psystem in self.pseudosystems: 
    201206            if len(self.pseudosystems[psystem].axes) == len(crsMap): 
     
    239244                            orderedunits.append('none')      
    240245                        else: 
    241                             orderedunits.append(units[axisorder[a]])  
     246                            unit=self.__removespaces(units[axisorder[a]]) 
     247                            orderedunits.append(unit)  
    242248                    crs.units=csml.csmllibs.csmlextra.stringify(orderedunits)                          
    243249        return crs, axisorder 
     
    245251     
    246252    def _compareRealAxisNames(self, axes): 
    247         ''' Used for identifying coordinate systems - will find complete exact matches only''' 
     253        ''' Used for identifying coordinate systems - will find complete exact matches only. Uses copy to avoid sorting original lists''' 
     254 
    248255        crs = None 
    249256        axisorder={} 
     
    252259            crsaxes=self.systems[system].axes 
    253260            unsortedcrsaxes=copy(crsaxes) 
    254             crsaxes.sort() 
    255             axes.sort() 
    256             if crsaxes==axes: 
     261            tempcrsaxes=copy(crsaxes) 
     262            tempcrsaxes.sort() 
     263            tempaxes=copy(axes) 
     264            tempaxes.sort() 
     265            if tempcrsaxes==tempaxes: 
    257266                #found exact match  - stop checking 
    258267                crs=self.systems[system] 
     
    302311                    break 
    303312            if match == 1:  
    304                 crs=self.systems[system]               
     313                crs=self.systems[system]    
    305314                break     
    306315        return crs, axisorder, crsMap 
     
    312321                orderedunits=[] 
    313322                for a in crs.axes: 
    314                     orderedunits.append(units[axisorder[a]]) 
     323                    orderedunits.append(self.__removespaces(units[axisorder[a]])) 
    315324                    crs.units=csml.csmllibs.csmlextra.stringify(orderedunits) 
    316325        return crs 
     
    325334        crs =None 
    326335        #perform various tests to try and determine which crs this is. 
    327          
    328336        #test: compare real names of axes with names of axes in coordinate reference systems 
    329337        #looks for exact matches only.  
    330338        if axes is not None: 
    331339            crs, axisorder = self._compareRealAxisNames(copy(axes)) 
    332          
    333340        #set up crsMap - may be empty 
    334341        crsMap=[] 
     
    338345                    crsMap=knownCRSAxes 
    339346                    break  
    340          
     347                        
    341348         
    342349        if crs is None: 
Note: See TracChangeset for help on using the changeset viewer.