Changeset 2817


Ignore:
Timestamp:
16/08/07 12:29:09 (12 years ago)
Author:
domlowe
Message:

Any trajectory data outside selected bounding box is set to be missing value using masked array

File:
1 edited

Legend:

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

    r2807 r2817  
    11''' ops_TrajectoryFeature  contains operations for TrajectoryFeature''' 
    22 
    3 import csml, cdms, MV 
     3import csml, cdms, MV, MA 
    44import sys 
    55import copy 
     
    6666     
    6767    #create the variable 
    68     var=MV.array(self.data) 
     68    var=MV.array(self.data,mask=self.m) 
    6969    var.id=self.name.CONTENT 
    7070    var.name=self.name.CONTENT 
     
    194194            gridOrd.coordAxisValues.coordinateList=csml.parser.csString(datastr) 
    195195            gridOrd.coordAxisValues.id = csml.csmllibs.csmlextra.getRandomID() 
    196             #if gridOrd.coordAxisLabel.CONTENT in kwargs: 
    197                 ##then need to record position of any data outside the bounding box 
    198                 #if gridOrd.coordAxisLabel.CONTENT in kwargs: 
    199                     #minval=kwargs[gridOrd.coordAxisLabel.CONTENT][0]                     
    200                     #maxval=kwargs[gridOrd.coordAxisLabel.CONTENT][1] 
    201                     #for item in enumerate(data): 
    202                         #if item[1] <minval: 
    203                             #if item[1] not in dataToRemove: 
    204                                 #dataToRemove.append(item[0]) 
    205                             #continue 
    206                         #if item[1] >maxval: 
    207                             #if item[1] not in dataToRemove: 
    208                                 #dataToRemove.append(item[0]) 
    209                                 #print type(data) 
     196            if gridOrd.coordAxisLabel.CONTENT in kwargs: 
     197                #then need to record position of any data outside the bounding box 
     198                if gridOrd.coordAxisLabel.CONTENT in kwargs: 
     199                    minval=kwargs[gridOrd.coordAxisLabel.CONTENT][0]                     
     200                    maxval=kwargs[gridOrd.coordAxisLabel.CONTENT][1] 
     201                    for item in enumerate(data): 
     202                        if item[1] < minval: 
     203                            dataToRemove.append(item[0]) 
     204                            continue 
     205                        elif item[1] >maxval: 
     206                            dataToRemove.append(item[0]) 
    210207            self.spatialAxes[gridOrd.coordAxisLabel.CONTENT]=data            
    211208            #get rid of the old xlink attributes 
     
    216213                    pass 
    217214     
    218     print len(dataToRemove) 
     215    #create mask to mask out values outside any bounding box selection 
     216    maskIndices= list(set(dataToRemove)) 
     217    self.m=MA.create_mask((len(data),)) 
     218    for i in maskIndices: 
     219        self.m[i]=1     
    219220    #now get the actual rangeset data 
    220221    if hasattr(self.value.rangeSet.valueArray.valueComponent, 'insertedExtract'): 
     
    223224        print 'warning: inline rangeset not implemented' 
    224225 
    225      
    226226    
    227227    #Now create the file extract 
Note: See TracChangeset for help on using the changeset viewer.