Changeset 864


Ignore:
Timestamp:
28/04/06 15:27:42 (13 years ago)
Author:
domlowe
Message:

csmlio - getDomainComplement,getDomainReference linked up with file extracts

Location:
TI02-CSML/trunk/newparser
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • TI02-CSML/trunk/newparser/csmlio.py

    r859 r864  
    3636    def __setFeature(self,featureID): 
    3737        #given a featureID, set the currentFeature if it is not already set 
    38         #this is used to check the correct feature is always set. 
    39         if self.currentFeature is None: 
     38        #this is used to check the correct feature is always set.    
    4039            for member in self.dataset.featureCollection.members: 
    4140                if member.id == featureID: 
     
    5958        self.dataset.fromXML(tree.getroot()) 
    6059        self.dataset =parser_extra.ParserPostProcessor(self.dataset).resolveReferences() 
    61  
    6260        #self.currentFeature holds a feature object  
    6361        self.currentFeature = None 
     
    113111        return desc 
    114112         
    115     def getDomain(self, featureID): 
    116         #returns both the domain reference axes and domain compliment axes in a single domain 
    117         domain = [] 
    118         domain.append(getDomainReference(featureID)) 
    119         domain.append(getDomainComplement(featureID)) 
    120         return domain 
    121      
    122     def getDomainReference(self, featureID): 
    123         self.__setFeature(featureID) 
    124         #domainReference could be one of: 
    125         #Trajectory 
    126         #OrientedTrajectory 
    127         #TimePositionList 
    128         if isinstance(self.currentFeature.domain.domainReference,TimePositionList): 
    129             domainref=self.currentFeature.domain.domainReference.timePositions 
    130         #Position 
    131         #OrientedPosition 
    132         #TimeInstant 
    133         return domainref 
    134      
    135     def getDomainComplement(self, featureID): 
    136         self.__setFeature(featureID) 
    137         #domainComplement could be one of: 
    138         #Null 
    139         #DirectPositionList 
    140         #Grid 
    141         if isinstance(self.currentFeature.domain.domainComplement, Grid): 
    142              
    143          
    144         return domaincomp 
    145      
    146113    def getFileExtractList(self): 
    147114        fileExtractList=[] 
    148         print dir(self.dataset) 
    149115        for arrayDescriptor in self.dataset.arrayDescriptors: 
    150116            fileExtractList.append(arrayDescriptor.id) 
     
    164130        DI.closeFile() 
    165131        return fulldata 
     132         
     133     
     134    def getDomainReference(self, featureID): 
     135        #This will return a list containing one or more ordinates: 
     136        #[Name, values, units(optional)] 
     137        self.__setFeature(featureID) 
     138        domainref=[] 
     139        #domainReference could be one of: 
     140        #Trajectory 
     141        #OrientedTrajectory 
     142        #TimePositionList 
     143        if isinstance(self.currentFeature.domain.domainReference,TimePositionList): 
     144            time = [] 
     145            time.append('Time') 
     146            time.append(self.currentFeature.domain.domainReference.timePositions) 
     147            domainref.append(time) 
     148        #Position 
     149        #OrientedPosition 
     150        #TimeInstant 
     151        return domainref 
     152     
     153    def getDomainComplement(self, featureID): 
     154        #This will return a list containing one or more ordinates: 
     155        #[Name, values, units(optional)] 
     156        domaincomp =[] 
     157        self.__setFeature(featureID) 
     158        dc = self.currentFeature.domain.domainComplement 
     159         
     160        #domainComplement could be one of: 
     161        #Null 
     162        #DirectPositionList 
     163        #Grid 
     164        if isinstance(dc, Grid): 
     165            for ordinate in dc.ordinates: 
     166                newaxis = [] 
     167                newaxis.append(ordinate.definesAxis) 
     168                data = self.getData(ordinate.axisValues.id) # axisValues has already been resolved to the fileExtract so the gml:id can be passed straight to getData() 
     169                newaxis.append(data) 
     170                domaincomp.append(newaxis) 
     171        return domaincomp 
     172     
     173    def getDomain(self, featureID): 
     174        #returns both the domain reference axes and domain compliment axes in a single domain 
     175        domain = [] 
     176        domain.append(self.getDomainReference(featureID)) 
     177        domain.append(self.getDomainComplement(featureID)) 
     178        return domain 
  • TI02-CSML/trunk/newparser/ioDemo.py

    r859 r864  
    2121#get list of features by name (gml:id): 
    2222featureList = csml.getFeatureList() 
    23 print featureList 
     23#print featureList 
    2424 
    2525#get type of feature (supply feature name) 
     
    2727for i in range(0, len(featureList)): 
    2828    featureType = csml.getFeatureType(featureList[i]) 
    29     print featureType 
     29    #print featureType 
    3030     
    3131     
     
    3333#eg featureType=csml.getFeatureType('feat04') 
    3434 
    35 domainref=csml.getDomainReference('wind') 
    36 print domainref 
     35domainref=csml.getDomainReference('solar_3') 
     36print 'domainref: ' + str(domainref) 
     37domaincomp=csml.getDomainComplement('solar_3') 
     38print 'domaincomp: ' + str(domaincomp) 
     39domain=csml.getDomain('solar_3') 
     40print 'domain: ' + str(domain) 
     41 
    3742sys.exit() 
    3843 
  • TI02-CSML/trunk/newparser/parser_extra.py

    r859 r864  
    1313#some xml/string manipulation functions. may as well go in this file for now: 
    1414 
    15 #Pretty printing (courtesy of BNL) 
    16 # def estrip(elem): 
    17 #         if elem is None: 
    18 #                 return '' 
    19 #         else: 
    20 #                 return elem.strip() 
    21 # def PrettyPrint(elem,indent=''): 
    22 #         #result='%s<%s>%s'%(indent,elem.tag,estrip(elem.text)) 
    23 #         strAttrib='' 
    24 #         if elem.attrib != {}: 
    25 #             for att in elem.attrib: 
    26 #                 strAttrib = strAttrib + ' ' + att + '=' +elem.attrib[att] 
    27 #         result='%s<%s%s>%s'%(indent,elem.tag,strAttrib,estrip(elem.text)) 
    28 #         children=len(elem) 
    29 #         if children: 
    30 #                 copy=indent+'   ' 
    31 #                 for item in elem: 
    32 #                         result+='\n'+PrettyPrint(item,indent=copy) 
    33 #                 result+='\n%s%s</%s>'%(indent,estrip(elem.tail),elem.tag) 
    34 #         else: 
    35 #                 result+='</%s>'%(elem.tag) 
    36 #         return result 
     15 
    3716def PrettyPrint(elem,indent='',html=0,space='   '): 
    3817        '''Lightweight pretty printing of elementTree elements''' 
     
    10483                            if definition.id == feature.parameter.href[1:]:  #remove '#' 
    10584                                #remove href and replace with object 
    106                                 print dir(definition) 
    10785                                feature.parameter.href =None 
    10886                                feature.parameter=definition 
     
    137115                                    #search arrayDescriptors for a match. 
    138116                                    for arrayDescriptor  in self.dataset.arrayDescriptors: 
    139                                         print arrayDescriptor.id 
    140117                                        if arrayDescriptor.id == ordinate.axisValues[1:]:  #remove '#' 
    141118                                            ordinate.axisValues  = arrayDescriptor 
Note: See TracChangeset for help on using the changeset viewer.