Changeset 4048 for TI02-CSML


Ignore:
Timestamp:
17/07/08 14:53:29 (11 years ago)
Author:
domlowe
Message:

Fixing bounding box code so that correct ISO representations are always used.

File:
1 edited

Legend:

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

    r4046 r4048  
    22import cdtime 
    33import csml.parser 
     4from csml.csmllibs.csmltime import UDtimeToCSMLtime 
    45import os 
    56import sys 
     
    5556        self.maxX=envelope.upperCorner.CONTENT.split()[0] 
    5657        self.maxY=envelope.upperCorner.CONTENT.split()[1] 
    57         self.t1= strToDate(envelope.beginPosition.CONTENT) 
    58         self.t2= strToDate(envelope.endPosition.CONTENT) 
     58        self.t1= strToDate(envelope.beginPosition.CONTENT.split('T')[0]) 
     59        self.t2= strToDate(envelope.endPosition.CONTENT.split('T')[0]) 
    5960  
    6061    def _compareLowerCorners(self,lowerCorner): 
     
    8990        self._compareLowerCorners(envtocheck.lowerCorner) 
    9091        self._compareUpperCorners(envtocheck.upperCorner) 
    91         self._compareLowerTimes(envtocheck.beginPosition.CONTENT) 
    92         self._compareUpperTimes(envtocheck.endPosition.CONTENT) 
     92        self._compareLowerTimes(envtocheck.beginPosition.CONTENT.split('T')[0]) 
     93        self._compareUpperTimes(envtocheck.endPosition.CONTENT.split('T')[0]) 
    9394     
    9495    def getAggregatedEnvelope(self): 
    9596        ''' get aggregation of all envelopes in one aggregated envelope''' 
    9697        newenvelope=csml.parser.EnvelopeWithTimePeriod() 
    97         newenvelope.beginPosition=csml.parser.csString(str(self.t1)) #convert from datetime types 
    98         newenvelope.endPosition=csml.parser.csString(str(self.t2))  
     98        newenvelope.beginPosition=csml.parser.csString(UDtimeToCSMLtime(self.t1)) #convert from datetime types to date only string 
     99        newenvelope.endPosition=csml.parser.csString(UDtimeToCSMLtime(self.t2))  
    99100        newenvelope.lowerCorner=csml.parser.csString(str(self.minX +' '+ self.minY)) 
    100101        newenvelope.upperCorner=csml.parser.csString(str(self.maxX +' '+ self.maxY)) 
     
    158159                pass 
    159160        else: 
    160             env.beginPosition=csml.parser.csString(limits[axis][0]) 
    161             env.endPosition=csml.parser.csString(limits[axis][1]) 
     161            env.beginPosition=csml.parser.csString(str(limits[axis][0])) 
     162            env.endPosition=csml.parser.csString(str(limits[axis][1])) 
     163#            env.beginPosition=csml.parser.csString(str(limits[axis][0].split()[0])) 
     164#            env.endPosition=csml.parser.csString(str(limits[axis][1].split()[0])) 
    162165    env.lowerCorner  = csml.parser.csString(lowCorner) 
    163166    env.upperCorner  = csml.parser.csString(upCorner) 
     
    176179            crs=cat.getCRS(feature.value.gridSeriesDomain.srsName) 
    177180            axislabels=feature.value.gridSeriesDomain.axisLabels 
    178             for ord in feature.value.gridSeriesDomain.coordTransformTable.gridOrdinates:         
    179                 if ord.coordAxisLabel.CONTENT==timename: 
    180                     try:                         
    181                         tmin= strToDate(ord.coordAxisValues.timePositionList.CONTENT.split()[0].split('T')[0]) 
    182                         tmax=strToDate( ord.coordAxisValues.timePositionList.CONTENT.split()[len(ord.coordAxisValues.timePositionList.CONTENT.split())-1].split('T')[0]) 
    183                     except AttributeError: 
    184                         sptlist=xlinkresolver.resolveXlink(ord.coordAxisValues.href[1:])                                
    185                         try: 
    186                             tmin= strToDate(sptlist.timePositionList.CONTENT.split()[0].split('T')[0]) 
    187                             tmax=strToDate(sptlist.timePositionList.CONTENT.split()[len(sptlist.timePositionList.CONTENT.split())-1].split('T')[0]) 
    188                         except: 
    189                             tmin, tmax=0,0 
    190                     limits[timename]=[tmin,tmax] 
    191                 else: 
    192                     if hasattr(ord.coordAxisValues, 'insertedExtract'): 
    193                         data=ord.coordAxisValues.insertedExtract.getData()[0].tolist() 
     181           
     182            #find the max and min bounds for all the axes of this feature: 
     183            for ord in feature.value.gridSeriesDomain.coordTransformTable.gridOrdinates:                 
     184                if ord.coordAxisLabel.CONTENT!=timename: 
     185                    #Deal with non-time axes: 
     186                    if hasattr(ord.coordAxisValues, 'href'): 
     187                        #deal with file extracts: 
     188                        if hasattr(ord.coordAxisValues, 'insertedExtract'): 
     189                            data=ord.coordAxisValues.insertedExtract.getData()[0].tolist() 
     190                        else: 
     191                            fileextract= xlinkresolver.resolveXlink(ord.coordAxisValues.href[1:])     
     192                            data=fileextract.getData()[0].tolist()    
    194193                    else: 
    195                         #TODO inline content 
    196                         #print ord.coordAxisValues.href 
    197                         fileextract= xlinkresolver.resolveXlink(ord.coordAxisValues.href[1:])                                
    198                         data=fileextract.getData()[0].tolist() 
     194                        #deal with inline content: 
     195                        data=ord.coordAxisValues.coordinateList.CONTENT.split() 
    199196                    data.sort() 
    200                     #extend the bounding box to take account of cell bounds 
    201197                    minval,maxval=_getMaxMinBounds(ord.coordAxisLabel.CONTENT,data) 
    202198                    limits[ord.coordAxisLabel.CONTENT]=[minval,maxval] 
     199                else: 
     200                    #Deal with time axis in similar way.         
     201                    if hasattr(ord.coordAxisValues, 'href'): 
     202                        #fileextract #TODO 
     203                        if hasattr(ord.coordAxisValues, 'insertedExtract'): 
     204                            data=ord.coordAxisValues.insertedExtract.getData()[0].tolist()                           
     205                        else: 
     206                            sptlist= xlinkresolver.resolveXlink(ord.coordAxisValues.href[1:]) 
     207                            data=sptlist.timePositionList.CONTENT.split() 
     208                            tmin=str(data[0]) 
     209                            tmax=str(data[len(data)-1])  
     210                    else: 
     211                        #inline content 
     212                        tmin= str(ord.coordAxisValues.timePositionList.CONTENT.split()[0]) 
     213                        tmax=str(ord.coordAxisValues.timePositionList.CONTENT.split()[len(ord.coordAxisValues.timePositionList.CONTENT.split())-1])                         
     214                    limits[timename]=[tmin,tmax] 
    203215        feature.boundedBy=_getEnvelopeFromLimits(limits, axislabels) 
    204216    return ds.featureCollection 
Note: See TracChangeset for help on using the changeset viewer.