Changeset 3891


Ignore:
Timestamp:
12/05/08 15:09:14 (11 years ago)
Author:
domlowe
Message:

fixed bug where longitude requests were not always working as expected

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

Legend:

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

    r3627 r3891  
    1111        return [item]     
    1212     
    13 def fixLongitude(request, kwargs): 
     13def fixLongitude(domain, request): 
    1414    ''' 
    1515    deals with longitude requests 
     
    2323                return True 
    2424        return False 
     25         
    2526    for key in request.keys(): 
    26         if kwargs.has_key(key): 
    27             if type(kwargs[key]) is not tuple:               
     27        if domain.has_key(key): 
     28            if type(request[key]) is not tuple:               
    2829                continue                
    29             elif key == 'longitude': #how do we test if it is longitude properly? 
    30                 if _anyitemlessthanzero(request[key]): 
     30            elif key == 'longitude': #how do we test if it is longitude properly?              
     31                if _anyitemlessthanzero(domain[key]): 
    3132                    pass #no need to convert request if data is also -ve to +ve 
    3233                else:                                      
    33                     lonMin=kwargs[key][0] 
    34                     lonMax=kwargs[key][1]                                         
     34                    lonMin=request[key][0] 
     35                    lonMax=request[key][1]                                         
    3536                    if lonMin >=0: 
    3637                        pass 
     
    3940                        new_lonMax = (lonMax + 360.0) % 360.0    
    4041                        if new_lonMin == new_lonMax: 
    41                             kwargs[key]=(0, 360)         
     42                            request[key]=(0, 360)         
    4243                        else: 
    43                             kwargs[key]=(new_lonMin, new_lonMax) 
    44     return kwargs 
     44                            request[key]=(new_lonMin, new_lonMax) 
     45    return request 
    4546                   
    4647def nudgeSingleValuesToAxisValues(value, axisValues, minBound=None, maxBound=None): 
     
    5859        @param minBound:    maxmimum return value 
    5960        @return:    nearest neighbour of value 
    60         """ 
     61        """         
    6162        bounds=False 
    6263        reverseBounds=False 
     
    9697                       if i >= minBound: 
    9798                           sortedAxis.append(i) 
    98                        elif i >= maxBound: 
     99                       elif i <= maxBound: 
    99100                            sortedAxis.append(i)                                       
    100101            else: 
  • TI02-CSML/trunk/csml/API/genSubset.py

    r3627 r3891  
    3030            tmpkey=[] 
    3131            for val in kwargs[key]: 
    32                 nearestNeighbour=csml.API.csmlutils.nudgeSingleValuesToAxisValues(val, domain[key], minBound=kwargs[key][0], maxBound=kwargs[key][1])                 
     32                nearestNeighbour=csml.API.csmlutils.nudgeSingleValuesToAxisValues(val, domain[key], minBound=kwargs[key][0], maxBound=kwargs[key][1])           
    3333                if nearestNeighbour is not None: 
    3434                    tmpkey.append(nearestNeighbour)    
     
    315315    #if the request is in -ve,+ve eg (-30,30) but the data is in (0,360) need to handle this by changing the args. 
    316316    kwargs=csmlutils.fixLongitude(domain,kwargs) 
    317     
    318      
    319317    #if request doesn't match domain points find nearest neighbours 
    320318    kwargs=csml.API.genSubset.checkNeighbours(domain, **kwargs) 
    321      
     319 
    322320    #get the name of the time axis in the coordinate reference system 
    323321    cat=csml.csmllibs.csmlcrs.CRSCatalogue() 
  • TI02-CSML/trunk/csml/csmllibs/csmldataiface.py

    r3704 r3891  
    5050 
    5151cache=OpenFileCache() 
    52 cache.limit=1000 
     52cache.limit=40 
    5353 
    5454class DataInterface(object): 
     
    531531        if 'time' in kwargs: 
    532532            kwargs['time']=self._componentTimes(kwargs['time']) 
    533          
    534533        #kwargs=self._fixLongitudeRequest(**kwargs) 
    535534        #return self.file(self.varobj.id,**kwargs) 
     
    538537            #subset=getSubsetOfDataForVar(latitude=(0.,10.0), longitude=(90, 100.0)) 
    539538            subset=None 
    540             lonkey='longitude' 
    541             if lonkey in kwargs.keys():   #this test needs to be much more robust...! 
     539            lonkey=None 
     540            for possiblelonkey in kwargs.keys(): 
     541                if possiblelonkey in ['longitude', 'lon', 'longitude0', 'longitude1']: 
     542                    lonkey=possiblelonkey 
     543            if lonkey:   #this test needs to be much more robust... the problem is - how to establish which is the longitude axis without axes to the csml doc 
    542544                if  type(kwargs[lonkey]) is tuple: 
    543545                    if kwargs[lonkey][0] > kwargs[lonkey][1]: 
  • TI02-CSML/trunk/csml/testfiles/gridseries/subset.py

    r3296 r3891  
    5656 
    5757    #csmlContainer.add(feature.subsetToGridSeries(outputdir,ncname='mygridseries.nc',**subsetDictionary)) 
    58 csmlContainer.add(feature.subsetToGridSeries(outputdir,ncname='mygridseries.nc',latitude=(-90,90), longitude=(-180,180),time=('2804-12-01T00:00:00.0','2904-12-01T00:00:00.0'))) 
     58csmlContainer.add(feature.subsetToGridSeries(outputdir,ncname='mygridseries.nc',latitude=(-90,90), longitude=(-100,100),time=('2804-12-01T00:00:00.0','2904-12-01T00:00:00.0'))) 
    5959 
    6060#csmlContainer.add(feature.subsetToGridSeries(outputdir,ncname='mygridseries.nc',latitude=(60), longitude=(180),time=('2804-12-01T00:00:00.0','2904-12-01T00:00:00.0'))) 
Note: See TracChangeset for help on using the changeset viewer.