Ignore:
Timestamp:
31/01/07 10:48:22 (13 years ago)
Author:
domlowe
Message:

subsetting seems to be working, but needs more testing and tidying of code

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

Legend:

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

    r1939 r2081  
    1515def fixLongitude(request, kwargs): 
    1616    for key in request.keys(): 
    17         if key == 'longitude': #how do we test if it is longitude properly? 
    18             for val in dc[key]: 
     17        if key == 'Lon': #how do we test if it is longitude properly? 
     18            for val in request[key]: 
    1919                if val < 0: 
    2020                    pass 
     
    2424                    if kwargs[key][1] < 0: 
    2525                        kwargs[key]=(kwargs[key][0],kwargs[key][1]+360) 
    26         return kwargs 
     26    return kwargs 
  • TI02-CSML/trunk/csml/API/ops_GridSeriesFeature.py

    r2078 r2081  
    2727            vals=gridOrd.coordAxisValues.coordinateList.CONTENT 
    2828            valList=[] 
    29             print 'splitting' 
    3029            for val in vals.split():   
    3130                valList.append(val) 
    32                 print val 
    3331            self.domain[name]=valList 
    3432    return self.domain 
     
    3735    #takes the domain and returns a subset according to the keyword selection criteria 
    3836    strTimes=times 
    39     totalArraySize=0 
    4037    subsetDomain={} 
     38    totalArraySize=1 
    4139    for key in self.domain.keys(): 
    42         arraySize=0 
    4340        straxisValues='' 
    4441        if key in kwargs: 
    4542            if key ==time: 
    4643                straxisValues=strTimes 
     44                arraySize=len(strTimes.split()) 
    4745            elif kwargs[key][0] < kwargs[key][1]:    
    4846                for val in self.domain[key]: 
    49                     if val is not '': 
     47                      if val is not '': 
    5048                            if float(val) >= kwargs[key][0]: 
    5149                                if float(val) <= kwargs[key] [1]: 
    52                                     arraySize=arraySize+1 
    53                                     straxisValues=straxisValues+ str(val) + ', ' 
     50                                    straxisValues=straxisValues+ str(val) + ',' 
     51                straxisValues=straxisValues[:-1] 
    5452            else:#this if deals with selections such as longitude (330,30) where the lower limit is 'greater' than the upper limit in a mathematical sense. 
    5553                    for val in self.domain[key]: 
    5654                        if val is not '': 
    5755                            if val >= kwargs[key][0]: 
    58                                 arraySize=arraySize+1 
    59                                 straxisValues=straxisValues+ str(val) + ', ' 
     56                                straxisValues=straxisValues+ str(val) + ',' 
    6057                    for val in self.domain[key]: 
    6158                        if val is not '': 
    6259                            if val <= kwargs[key] [1]: 
    63                                 arraySize=arraySize+1 
    64                                 straxisValues=straxisValues+ str(val) + ', ' 
    65         else: # this dimension has not been subsetted at all 
     60                                straxisValues=straxisValues+ str(val) + ',' 
     61                    straxisValues=straxisValues[:-1]                                               
     62        else: # this dimension has not been subsetted at all - CHECK  THIS 
    6663            for val in self.domain[key]: 
    6764                if val is not '': 
    68                     arraySize=arraySize+1 
    69                     straxisValues=straxisValues+ str(val) + ', '         
    70         totalArraySize=totalArraySize*arraySize 
     65                    straxisValues=straxisValues+ str(val) + ','         
     66            straxisValues=straxisValues[:-1]                        
     67                                    
    7168        subsetDomain[key]=straxisValues 
     69        if key != time: 
     70            arraySize=len(subsetDomain[key].split(',')) 
     71            #print subsetDomain[key].split(',') 
     72            #print key + ' ' + str(arraySize) 
     73        else: 
     74            arraySize=len(subsetDomain[key].split()) 
     75            #print key + ' ' + str(arraySize) 
     76        totalArraySize = totalArraySize * arraySize 
     77    #print subsetDomain 
     78    #print totalArraySize 
     79    #sys.exit() 
    7280    return subsetDomain, totalArraySize 
    73  
    74  
    75  
    76  
    77  
    7881 
    7982 
     
    8689         
    8790    self.getDomain() 
    88      
    8991    #Now get the data subset: 
    9092     
     
    165167            selection={} 
    166168             
    167             for kw in kwargs: 
    168                 if kw != timeName: 
    169                     selection[kw]=kwargs[kw] 
    170                 else: 
    171                     selection[timeAxis]=kwargs[kw] 
    172               
     169            #Get names of variables in file 
     170            cat=csml.csmllibs.csmlcrs.CRSCatalogue() 
     171            crs=cat.getCRS(self.value.gridSeriesDomain.srsName)   
     172             
     173            for gridOrd in self.value.gridSeriesDomain.coordTransformTable.gridOrdinates: 
     174                selection[gridOrd.gridAxesSpanned.CONTENT]=kwargs[gridOrd.coordAxisLabel.CONTENT] 
     175             
     176                          
    173177            for time in self.times: 
    174178                listPosition=self.domain[timeName].index(time) 
     
    178182                    if filePos in filesFetched: 
    179183                        continue #already got data from this file, try next time 
     184                    print selection 
     185                     
    180186                    data=comp.getData(fileposition=filePos, **selection) 
    181                     print comp.fileList.fileNames.CONTENT 
     187                    print data 
     188                    
     189                      
    182190                    self.files.append(comp.fileList.fileNames.CONTENT[filePos]) #TODO, get the right file name 
    183191                    if fulldata ==[]: 
    184192                        fulldata = data.tolist() 
     193                        print fulldata 
    185194                    else: 
    186195                        for item in data.tolist(): 
    187196                            fulldata.append(item) 
    188                     
    189197                    filesFetched.append(filePos) 
    190198                axisorder = data.getAxisIds()  #will need later! 
     199 
    191200    elif hasattr(self.value.rangeSet, 'datablock'): #not tested 
    192201        pass 
     
    233242    nc.addAxis('t',floatTimes,isTime=1,units=calunits,calendar=caltype) 
    234243    for ord in ords: 
     244        print ord.coordAxisLabel.CONTENT 
    235245        vals=[] 
    236246        lon,lat=None,None 
     
    241251                if val != ' ': 
    242252                    vals.append(float(val))   
     253                    print vals 
    243254        if ord.coordAxisLabel.CONTENT=='Lon': 
    244255            lon=1 
     
    249260        else: 
    250261            name=ord.coordAxisLabel.CONTENT 
    251         #convert to list             
     262  
    252263        nc.addAxis(name,vals,isLon=lon,isLat=lat,units='')#to do, units attribute for CF compliance 
    253264    if len(ords)==3: 
    254         axes=['t',axisorder[0],axisorder[1],axisorder[2]] 
     265        axes=['t',axisorder[1],axisorder[2]] 
    255266    elif len(ords)==2: 
    256         axes=['t',axisorder[0],axisorder[1]] 
     267        axes=['t',axisorder[1]] 
     268    #print fulldata 
     269    print axes 
    257270    nc.addVariable(fulldata,self.id, axes,units='') #to do, units attribute for CF compliance 
     271    print 'added' 
    258272    nc.closeFinishedFile() 
    259273    return subsettedFeature, pathToSubsetNetCDF 
Note: See TracChangeset for help on using the changeset viewer.