Changeset 2597 for TI02-CSML


Ignore:
Timestamp:
18/06/07 12:12:30 (12 years ago)
Author:
domlowe
Message:

fixing longitude subsetting for ddc data

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

Legend:

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

    r2590 r2597  
    3939                            kwargs[key]=(new_lonMin, new_lonMax) 
    4040    return kwargs 
    41                          
    42                          
     41                   
     42     
    4343                         
    4444def nudgeSingleValuesToAxisValues(value, axisValues): 
  • TI02-CSML/trunk/csml/API/genSubset.py

    r2590 r2597  
    196196    except: 
    197197        componentlist = csmlutils.listify(value.rangeSet.valueArray.valueComponent.insertedExtract) 
    198     print domain 
    199     print times     
    200198    for time in times: 
    201199        listPosition=domain[timeName].index(time) 
     
    240238    #deal with longitude requests 
    241239    #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. 
    242  
    243240    kwargs=csmlutils.fixLongitude(domain,kwargs) 
    244241 
    245242    #if request doesn't match domain points find nearest neighbours 
    246243    kwargs=csml.API.genSubset.checkNeighbours(domain, **kwargs) 
     244    
     245     
     246     
    247247     
    248248    #get the name of the time axis in the coordinate reference system 
  • TI02-CSML/trunk/csml/API/ops_GridSeriesFeature.py

    r2590 r2597  
    138138    selection={} 
    139139    frame='' 
     140     
    140141    for gridOrd in self.value.gridSeriesDomain.coordTransformTable.gridOrdinates: 
    141142        try: 
     
    146147            if hasattr(gridOrd.coordAxisValues, 'frame'): 
    147148                frame=gridOrd.coordAxisValues.frame 
    148  
    149149    try: 
    150150        del selection[timeAxis] #NOTE: Haven't resolved the single CRS issue so cannot subset by time within an individual file for now 
     
    153153     
    154154    #get slice indices  
    155     selection=self.getSliceIndices(selection) 
    156  
    157             
     155    selection=self.getSliceIndices(selection)                 #commented out while fixing subsetting 
     156 
    158157    strTimes, axisorder, units, fulldata, fillvalue =csml.API.genSubset.getTheData(self, selection, times, timeName) 
    159158    return pathToSubsetNetCDF, crs, frame, timeName, times, strTimes, caltype, axisorder,units, fulldata, fillvalue, kwargs 
  • TI02-CSML/trunk/csml/csmllibs/csmldataiface.py

    r2595 r2597  
    451451        data = self.varobj.getValue() 
    452452        return data 
     453     
     454    def _fixLongitudeRequest(self, **kwargs): 
     455        lonkey='longitude' 
     456        if lonkey in kwargs.keys():   #this test needs to be much more robust...! 
     457            if  type(kwargs[lonkey]) is tuple: 
     458                newkws=[] 
     459                for val in kwargs[lonkey]: 
     460                    newval=((val + 180) % 360) - 180 
     461                    newkws.append(newval) 
     462                 
     463                 #lon = ((t_lon + 180) % 360) - 180 
     464                #lonmin=kwargs[lonkey][0] - (kwargs[lonkey][0]/180)*360.0 
     465                #lonmax=kwargs[lonkey][1] - (kwargs[lonkey][1]/180)*360.0 
     466                 
     467                #if newkws[0] > newkws[1]: 
     468                    #flip=[newkws[1], newkws[0]] 
     469                    #newkws=flip 
     470                kwargs[lonkey]=tuple(newkws) 
     471        return kwargs 
    453472 
    454473    def getSubsetOfDataForVar(self, **kwargs):       
    455474        #put any slicing indices aside for later and use names        
     475         
    456476        try: 
    457477            upper=kwargs['upper'] 
     
    464484        except: 
    465485            pass 
     486        #kwargs=self._fixLongitudeRequest(**kwargs) 
     487        #return self.file(self.varobj.id,**kwargs) 
    466488        try: 
    467489            #takes keyword args defining subset eg 
     
    475497                        lonMin = kwargs[lonkey][0] 
    476498                        lonMax =kwargs[lonkey][1] 
    477                         kwargs[lonkey]=(0.0, lonMax) 
     499                        kwargs[lonkey]=(0.1, lonMax) 
     500                        print kwargs 
    478501                        subset1=self.file(self.varobj.id,**kwargs) 
    479                         kwargs[lonkey]=(lonMin,359.9999) 
    480                         print 'kwargs: %s'%kwargs 
     502                        kwargs[lonkey]=(lonMin,360) 
     503                        print kwargs 
    481504                        try: 
    482505                            subset2=self.file(self.varobj.id,**kwargs) 
    483506                            longitudeAxis=subset1.getAxisIndex(lonkey) 
    484507                            #concatenate arrays along longitude               
    485                             subset = cdms.MV.concatenate([subset1,subset2],axis=longitudeAxis) 
     508                            subset = cdms.MV.concatenate([subset2,subset1],axis=longitudeAxis) 
    486509                        except: 
    487510                            subset=subset1 
  • TI02-CSML/trunk/csml/csmllibs/netCDFWriter.py

    r2595 r2597  
    7777                        dataarray.setAxis(axisCount,ax)                        
    7878                        axisCount = axisCount +1       
    79          
    8079        setattr(dataarray, 'missing_value' ,fillvalue) 
    8180        self.nc.write(dataarray) 
     
    116115                        position=ax[0] 
    117116                axesdone.append(name) 
     117                #check for latitude reversal:  
     118                if lat ==1:  
     119                  if len(vals) >1:  
     120                    if vals[0] > vals[len(vals)-1]:  
     121                      vals.reverse()  
    118122                 
    119                 #check for latitude reversal: 
    120                 if lat ==1: 
    121                     if len(vals) >1: 
    122                         if vals[0] > vals[len(vals)-1]: 
    123                             vals.reverse() 
    124  
    125123                self.addAxis(name,vals,isLon=lon,isLat=lat,units=unitlist[position])#to do, units attribute for CF compliance 
    126124         
Note: See TracChangeset for help on using the changeset viewer.