Changeset 812


Ignore:
Timestamp:
21/04/06 11:52:09 (13 years ago)
Author:
domlowe
Message:

Parser.py - AbstractArrayDescriptor?.uom can now accept a UnitDefinition? object or a reference to a UnitDefinition?)
parser_extra.py - uom now resolved in post-processing step

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

Legend:

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

    r809 r812  
    13711371    AbstractArrayDescriptor(AbstractGML): 
    13721372     +arraySize[1..*]: int 
    1373      +uom[0..1]: anyURI 
     1373     +uom[0..1]: anyURI  #Amended to also take a 'UnitDefinition' - needed to resolve internal references 
    13741374     +numericType[0..1]: string 
    13751375     +regExpTransform[0..1]: string 
     
    13951395                self.arraySize = map(int,frag.text.split()) 
    13961396            elif frag.tag == CSML('uom'): 
    1397                 self.uom = frag.text 
     1397                if frag.getchildren() !=[]: 
     1398                    subFrag= frag.getchildren()[0] 
     1399                    if subFrag.tag == GML ('UnitDefinition'): 
     1400                        self.uom=UnitDefinition() 
     1401                        UnitDefinition.fromXML(self.uom, subFrag) 
     1402                else: 
     1403                    self.uom=frag.text 
     1404                 
     1405                 
    13981406            elif frag.tag == CSML('numericType'): 
    13991407                self.numericType = frag.text 
     
    14101418        if hasattr(self,'uom'): 
    14111419            frag = Element(CSML('uom')) 
    1412             frag.text = self.uom 
     1420            if isinstance(self.uom,UnitDefinition): 
     1421                subFrag=Element(GML('UnitDefinition')) 
     1422                UnitDefinition.toXML(self.uom,subFrag) 
     1423                frag.append(subFrag) 
     1424            else: 
     1425                frag.text = self.uom 
    14131426            csmlFrag.append(frag) 
    14141427        if hasattr(self,'numericType'): 
  • TI02-CSML/trunk/newparser/parser_extra.py

    r810 r812  
    5454                                feature.parameter.href =None 
    5555                                feature.parameter=definition 
     56                                break 
    5657         
    5758        #if there are embedded reference system definitions then  
     
    8788                                            ordinate.axisValues  = arrayDescriptor 
    8889                                            break 
    89                                              
     90                                         
     91        #uom may reference UnitDefinitions. Replace these too 
     92        if hasattr(self.dataset,'arrayDescriptors'): 
     93            for feature in self.dataset.featureCollection.members: 
     94                if hasattr (feature, 'rangeSet'): 
     95                    if hasattr (feature.rangeSet, 'aggregatedArray'): 
     96                         if hasattr(feature.rangeSet.aggregatedArray, 'uom'): 
     97                             for definition in self.dataset.unitDefinitions.definitionMembers: 
     98                                 if definition.id== feature.rangeSet.aggregatedArray.uom[1:]: 
     99                                     feature.rangeSet.aggregatedArray.uom=definition 
     100                                     break 
    90101 
    91102        return self.dataset 
  • TI02-CSML/trunk/newparser/test.py

    r782 r812  
    1616####################################################### 
    1717# 1. Test parsing from CSML file 
    18 #tree = ElementTree(file='example.xml') 
    19 tree = ElementTree(file='era40gridseries.xml') 
     18tree = ElementTree(file='example.xml') 
     19#tree = ElementTree(file='era40gridseries.xml') 
    2020dataset = Dataset() 
    2121 
     
    2626#print dataset.featureCollection.members[3].profileSeriesDomain.domainReference.times.href 
    2727 
    28 #resolve references: (not implemented yet) 
     28#resolve references:  
    2929dataset=parser_extra.ParserPostProcessor(dataset).resolveReferences() 
    3030 
Note: See TracChangeset for help on using the changeset viewer.