Changeset 2495


Ignore:
Timestamp:
18/05/07 15:16:42 (12 years ago)
Author:
domlowe
Message:

various changes/fixes etc related to getting supporting subsetting by index

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

Legend:

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

    r2361 r2495  
    1313#deal with longitude requests 
    1414#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. 
    15 def fixLongitude(request, kwargs): 
     15def fixLongitude(request, kwargs):   
     16    def _anyitemlessthanzero(listofitems): 
     17        for item in listofitems: 
     18            if item <0: 
     19                return True 
     20        return False 
    1621    for key in request.keys(): 
    1722        if kwargs.has_key(key): 
     
    1924                continue 
    2025            elif key == 'longitude': #how do we test if it is longitude properly? 
    21                 for val in request[key]: 
    22                     if val < 0: 
    23                         pass 
    24                     else: 
    25                         if kwargs[key][0] < 0: 
    26                             kwargs[key]=(kwargs[key][0]+360,kwargs[key][1]) 
    27                         if kwargs[key][1] < 0: 
    28                             kwargs[key]=(kwargs[key][0],kwargs[key][1]+360) 
     26                if _anyitemlessthanzero(request[key]): 
     27                    pass #no need to convert request if data is also -ve to +ve 
     28                else: 
     29                    for val in request[key]: 
     30                        if val < 0: 
     31                            pass 
     32                        else: 
     33                            if kwargs[key][0] < 0: 
     34                                kwargs[key]=(kwargs[key][0]+360,kwargs[key][1]) 
     35                            if kwargs[key][1] < 0: 
     36                                kwargs[key]=(kwargs[key][0],kwargs[key][1]+360) 
    2937    return kwargs 
    3038                         
  • TI02-CSML/trunk/csml/API/genSubset.py

    r2473 r2495  
    4141    totalArraySize=1 
    4242    for key in domain.keys(): 
     43        print key 
    4344        straxisValues='' 
    4445        if key in kwargs: 
     
    7879            arraySize=len(subsetDomain[key].split()) 
    7980        totalArraySize = totalArraySize * arraySize 
     81   
    8082    return subsetDomain, totalArraySize 
    8183     
  • TI02-CSML/trunk/csml/API/ops_GridSeriesFeature.py

    r2444 r2495  
    2929            self.domain[name], fill, axisorder, units=gridOrd.coordAxisValues.insertedExtract.getData() 
    3030        else:             
     31            valList=[] 
    3132            try: 
    3233                vals=gridOrd.coordAxisValues.coordinateList.CONTENT 
     34                for val in vals.split():   
     35                    valList.append(eval(val)) 
    3336            except: 
    3437                vals=gridOrd.coordAxisValues.timePositionList.CONTENT 
    35             valList=[] 
    36             for val in vals.split():   
    37                 valList.append(val) 
    38             self.domain[name]=valList 
     38                for val in vals.split():   
     39                    valList.append(val)             
     40            self.domain[name]=valList     
    3941    return self.domain 
    4042 
     
    7678                frame=gridOrd.coordAxisValues.frame 
    7779 
    78     del selection[timeAxis] #NOTE: Haven't resolved the single CRS issue so cannot subset by time within an individual file for now 
    79     print timeName 
     80    try: 
     81        del selection[timeAxis] #NOTE: Haven't resolved the single CRS issue so cannot subset by time within an individual file for now 
     82    except KeyError: 
     83        pass 
     84    #TEST selection by index: 
     85    selection['lower']=(0,10,) 
     86    selection['upper']=(124,262) 
     87            
    8088    strTimes, axisorder, units, fulldata, fillvalue =csml.API.genSubset.getTheData(self, selection, times, timeName) 
    81  
    8289    return pathToSubsetNetCDF, crs, frame, timeName, times, strTimes, caltype, axisorder,units, fulldata, fillvalue, kwargs 
    8390     
     
    8592    #perform the subset (note this included nearest neighbour searching, so may return a different set of kwargs 
    8693    pathToSubsetNetCDF, crs, frame, timeName, times, strTimes, caltype, axisorder,units, fulldata, fillvalue, kwargs=self._subsetGrid(csmlpath, ncpath,**kwargs)  
    87      
    8894    #Okay, got the data now. Need to write CSML feature and NetCDF files. 
    8995    #Writing out the CSML feature 
  • TI02-CSML/trunk/csml/API/ops_RawFileExtract.py

    r2473 r2495  
    5050    fillValue = DI.getFillValue() 
    5151    DI.closeFile() 
    52     return data, fillValue, None, None 
     52    #temporary hard coded names to see if it works in principle 
     53    return data, fillValue, ['time','latitude','longitude'], ['unknown','unknown','unknown'] 
  • TI02-CSML/trunk/csml/csmllibs/csmldataiface.py

    r2473 r2495  
    455455 
    456456    def getSubsetOfDataForVar(self, **kwargs):       
    457         print 'subset...' 
    458         print kwargs 
     457        #delete any slicing indices and use names 
     458        try: 
     459            del kwargs['upper'] 
     460        except: 
     461            pass 
     462        try: 
     463            del kwargs['lower'] 
     464        except: 
     465            pass 
    459466         
    460467        #takes keyword args defining subset eg 
  • TI02-CSML/trunk/csml/csmllibs/netCDFWriter.py

    r2395 r2495  
    22import csml 
    33import sys 
    4  
    5  
    6  
    7  
    84 
    95class NCwriter(object): 
     
    4339            setattr(dataarray, key,kwargs[key]) 
    4440        axisCount=0 
     41         
     42        #depending on whether time is modelled in the underlying data as a dimension or not the shapes may not match 
     43        if len(dataarray.shape) < len(axesList):   
     44            newaxesList=[] 
     45            for a in axesList: 
     46                if a != 'time': 
     47                    newaxesList.append(a) 
     48            axesList=newaxesList 
    4549        if hasattr(self, 'axes'): 
    4650            for axis in axesList: 
    4751                for ax in self.axes: 
    4852                    if ax.id == axis: 
    49                         dataarray.setAxis(axisCount,ax) 
     53                        dataarray.setAxis(axisCount,ax)                        
    5054                        axisCount = axisCount +1 
    5155        setattr(dataarray, 'missing_value' ,fillvalue) 
     
    5660        axesdone=[] 
    5761        floatTimes=[] 
    58          
    5962        #determine base units for times: 
    6063        tOne=csml.csmllibs.csmltime.getCDtime(times[0]) 
     
    7679                    for val in ord[1].coordAxisValues.coordinateList.CONTENT.split(): 
    7780                        if val != ' ': 
    78                             vals.append(float(val))   
     81                            vals.append(eval(val))   
    7982                if ord[1].coordAxisLabel.CONTENT=='longitude': 
    8083                    lon=1 
     
    9194                self.addAxis(name,vals,isLon=lon,isLat=lat,units=unitlist[position])#to do, units attribute for CF compliance 
    9295         
    93         if kwargs is not None: 
    94             print 'handling extra'           
     96        if kwargs is not None:    
    9597            for kw in kwargs: 
    9698                lon,lat=None,None 
Note: See TracChangeset for help on using the changeset viewer.