Changeset 2761 for TI02-CSML


Ignore:
Timestamp:
03/08/07 12:12:24 (12 years ago)
Author:
domlowe
Message:

more on subsetting trajectory

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

Legend:

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

    r2665 r2761  
    2626        #else set it as a text attribute of a MetaDataProperty instance. 
    2727        #commented out temporarily for now (V2 rewrite) 
    28         #TODO 
    29         #mdp=csml.parser.MetaDataProperty() 
    30         #if csml.parser_extra.isURI(metadata): 
    31             #mdp.href=metadata 
    32         #else:  
    33             #mdp.text = [metadata] 
    34         #self.ds.metaDataProperty= [mdp] 
     28        self.mdp=csml.parser.csString() 
     29        if csml.parser_extra.isURI(metadata): 
     30            self.mdp.href=metadata 
     31        else:  
     32            self.mdp.CONTENT= metadata 
     33         
    3534        #set the id 
    3635        self.ds.id=docID 
     
    7372        self.ds.storageDescriptor=csml.parser.CSMLStorageDescriptor(descriptors=self.sd) 
    7473        self.ds.featureCollection=csml.parser.CSMLFeatureCollection(featureMembers=self.fm) 
     74        self.ds.featureCollection.metaDataProperty=self.mdp 
    7575        self.ds.featureCollection.id=csml.csmllibs.csmlextra.getRandomID() 
    7676        csmlout=self.ds.toXML() 
  • TI02-CSML/trunk/csml/API/ops_FileExtract.py

    r2758 r2761  
    114114        for file in self.fileList.fileNames.CONTENT.split(): 
    115115            filenames.append[file] 
    116             print 'HERE' 
    117116    except: 
    118117        filenames.append(self.fileName.CONTENT) 
  • TI02-CSML/trunk/csml/API/ops_TrajectoryFeature.py

    r2758 r2761  
    4040def subsetToTrajectory(self, outputdir=None, ncname='trajectory.nc' ,times=None): 
    4141    ''' subsetting a trajectory feature by time ''' 
     42     
     43    #work out where to store the resulting files: 
    4244    if outputdir is not None: 
    4345        self.outputdir=outputdir 
     
    5254        csml.csmllibs.csmlextra.checkDirExists(self.outputdir) 
    5355   
     56    #make sure single time string is converted to a tuple 
    5457    if type(times) is str: 
    5558        selection = tuple(csml.csmllibs.csmlextra.listify(times)) 
    5659    else: 
    5760        selection = times   
    58     tlist=[]     
    59      
    60      
    61     #repurpose the trajectoryDomain 
     61        
     62         
     63    #repurpose the existing trajectoryDomain for the output csml. 
    6264    td=self.value.trajectoryDomain                          
    6365       
     66    #get the requested times, and also max/min index values, needed to get the corresponding spatial axes   
     67    tlist=[] 
    6468    for gridOrd in td.coordTransformTable.gridOrdinates: 
    6569        if hasattr(gridOrd.coordAxisValues, 'timePositionList'): 
     
    96100            #now substitute these times into the feature as we will use it later to write out a new feature. 
    97101            gridOrd.coordAxisValues.timePositionList=csml.parser.csString(timestr) 
     102            gridOrd.coordAxisValues.id = csml.csmllibs.csmlextra.getRandomID() 
    98103            break 
    99104     
     105    #change the high limit  (assumes low limit is 0) 
     106    highlim='' 
     107    for item in td.limits.high.CONTENT.split(): 
     108        highlim=highlim+ ' ' + str(len(selectedTimes)-1) 
     109    td.limits.high.CONTENT=highlim     
     110     
     111    #Now get the data from the spatial axes using the indices 
     112    spatialAxes={} 
    100113    for gridOrd in td.coordTransformTable.gridOrdinates: 
    101114        if hasattr(gridOrd.coordAxisValues, 'coordinateList'): 
     
    106119                datastr='' 
    107120                for d in data: 
    108                     datastr=datastr + ' ' + d 
    109             gridOrd.coordAxisValues=csml.parser.csString(datastr) 
    110                           
     121                    datastr=datastr + ' ' + str(d) 
     122            gridOrd.coordAxisValues.coordinateList=csml.parser.csString(datastr) 
     123            gridOrd.coordAxisValues.id = csml.csmllibs.csmlextra.getRandomID() 
     124            spatialAxes[gridOrd.coordAxisLabel.CONTENT]=data         
     125             
     126            #get rid of the old xlink attributes 
     127            delattr(gridOrd.coordAxisValues, 'href') 
     128            delattr(gridOrd.coordAxisValues, 'role') 
     129            delattr(gridOrd.coordAxisValues, 'arcrole') 
     130            delattr(gridOrd.coordAxisValues, 'show') 
     131            delattr(gridOrd.coordAxisValues, '{http://www.w3.org/1999/xlink}href') 
     132            delattr(gridOrd.coordAxisValues, '{http://www.w3.org/1999/xlink}role') 
     133            delattr(gridOrd.coordAxisValues, '{http://www.w3.org/1999/xlink}arcrole') 
     134            delattr(gridOrd.coordAxisValues, '{http://www.w3.org/1999/xlink}show') 
     135 
     136             
     137             
     138    #Now create the file extract 
    111139    fileList=[] 
    112140    try: 
     
    158186    #create a stand alone pointseries feature containing this coverage 
    159187    csmlWrap=csml.csmllibs.csmlfeaturewrap.CSMLWrapper() 
    160     subsettedFeature=csmlWrap.createTrajectoryFeature(value=cvg,parameter=param,featureID=self.id,description=self.description) 
     188    subsettedFeature=csmlWrap.createTrajectoryFeature(value=cvg,parameter=param,featureID=csml.csmllibs.csmlextra.getRandomID(),description=self.description) 
    161189     
    162190       
    163191     
    164     #Now write out the NetCDF File:    
     192    #Now open a new NetCDF File:    
    165193    nc=cdms.open(pathToSubsetNetCDF,'w') 
     194     
     195    #create the variable 
    166196    var=MV.array(data) 
    167197    var.id=self.name.CONTENT 
     
    170200    setattr(var, 'missing_value' ,fillvalue) 
    171201     
     202    #create the time axis 
    172203    floatTimes=[] 
    173      
    174204    tOne=csml.csmllibs.csmltime.getCDtime(selection[0]) 
    175205    tbase=csml.csmllibs.csmltime.getBaseUnits(tOne) 
     
    183213    var.setAxis(0,timeAx)       
    184214    nc.write(var) 
     215     
     216     
     217    #add auxiliary coordinate variables to hold the locations 
     218    for ax in spatialAxes: 
     219        var=MV.array(spatialAxes[ax]) 
     220        var.id=ax 
     221        var.setAxis(0,timeAx) 
     222        nc.write(var)     
     223                 
     224     
    185225    nc.close()    
    186226    print 'NetCDF file written to %s'%pathToSubsetNetCDF 
Note: See TracChangeset for help on using the changeset viewer.