Changeset 2377 for TI02-CSML


Ignore:
Timestamp:
03/04/07 16:34:06 (12 years ago)
Author:
domlowe
Message:

fixed Xlinking in SpatialOrTemporalLists? fixed uom attribute

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

Legend:

Unmodified
Added
Removed
  • TI02-CSML/trunk/csml/csmllibs/csmlfeaturetypes.py

    r2362 r2377  
    218218        try: 
    219219            strUom = self.DI.getVariableAttribute('units') 
     220            strUom=strUom.replace(' ','') 
     221            if strUom=='': 
     222                strUom='dimensionless_or_units_not_determined' 
    220223        except AttributeError: 
    221224            # if units attribute doesn't exist: 
    222             strUom ="dimensionless or units not determined" 
     225            strUom ="dimensionless-or_units_not_determined" 
    223226        if self.valuestorage=='inline': 
    224227            #TO DO, store the rangeset inline - use Datablock class??? 
     
    226229        else: 
    227230            #store the rangeSet as an aggregatedArray 
    228             #TODO, need to take this out of the rangeset and use xlink to reference it. 
    229231            aa=cp.AggregatedArray() 
    230232            aa.arraySize=cp.csString(arrSz) 
     
    424426                try: 
    425427                    strUom = DI.getVariableAttribute('units') 
     428                    strUom=strUom.replace(' ','') 
    426429                except AttributeError: 
    427430                    #if units attribute doesn't exist: 
    428431                    strUom ="dimensionless_or_units_not_determined" 
     432                  
    429433                try:                     
    430434                    measuredvalues = DI.getDataForVar() 
  • TI02-CSML/trunk/csml/parser.py

    r2362 r2377  
    22import elementtree.ElementTree as etree 
    33import sys, traceback 
     4import csml 
    45'''CSML v2 Parser '''  
    56 
     
    1415nsMOLES='http://ndg.nerc.ac.uk/moles' 
    1516nsSWE='http://www.opengis.net/swe' 
    16      
     17 
     18 
    1719def myQName(uri,tag): 
    1820    return "{"+uri+"}"+tag 
     
    156158 
    157159    def toXML(self, csmlfrag, **kwargs): 
    158         #process self and convert to XML 
    159                  
     160        #process self and convert to XML       
    160161        if hasattr(self, 'CONTENT'): 
    161162            if self.CONTENT is not None: csmlfrag.text=self.CONTENT 
     
    164165                if item in self.ATTRIBUTES:                     
    165166                    csmlfrag.set(item, self.__dict__[item]) 
    166             for item in self.__dict__: 
    167                 if GML(item) in self.ATTRIBUTES: 
    168                     csmlfrag.set(GML(item), self.__dict__[item])        
    169167    # self.CHILDREN (recursive - calls the toXML method of children 
    170168        for child in self.ELEMORDER: 
     
    210208                    csmlfrag.append(frag) 
    211209                    appendLater=True 
    212                 if appendLater==True and parentfrag != None: 
    213                     csmlfrag.append(parentfrag) 
     210 
     211                if appendLater==True and parentfrag != None:               
     212                    csmlfrag.append(parentfrag)    
     213 
    214214        return csmlfrag 
    215215         
     
    521521        csElement.__init__(self,**kwargs) 
    522522                 
    523 class SpatialOrTemporalPositionList(AbstractGML, AssociationAttributeGroup, csElement): 
     523class SpatialOrTemporalPositionList(AssociationAttributeGroup, AbstractGML, csElement): 
    524524    def __init__(self, **kwargs): 
    525525        AbstractGML.__init__(self,**kwargs) 
     
    530530        addchildren(self,children) 
    531531        csElement.__init__(self,**kwargs) 
    532  
    533  
     532     
     533    def toXML(self,csmlfrag,**kwargs): 
     534        csmlfrag=csElement.toXML(self,csmlfrag, **kwargs) 
     535        #This is mandatory even if empty when using xlink         
     536        if not hasattr(self, 'timePositionList'): 
     537            if not hasattr(self, 'coordinateList'): 
     538                 if csmlfrag.get(XLINK('arcrole')) is not None: 
     539                    print csmlfrag.get(XLINK('arcrole')).split('#')[1] 
     540                    if csmlfrag.get(XLINK('arcrole')).split('#')[1] == 'timePositionList': 
     541                        ET.SubElement(csmlfrag, CSML('timePositionList')) 
     542                    elif csmlfrag.get(XLINK('arcrole')).split('#')[1] =='coordinateList': 
     543                        ET.SubElement(csmlfrag, CSML('coordinateList'))                         
     544        return csmlfrag 
    534545 
    535546class GridOrdinateDescription(AbstractGML,csElement): 
     
    541552        addchildren(self,children) 
    542553        csElement.__init__(self,**kwargs) 
    543           
     554    def toXML(self, csmlfrag, **kwargs): 
     555        csmlfrag=AbstractGML.toXML(self, csmlfrag,**kwargs) 
     556        #promote XLinks up from SpatialOrTemporalPositionList         
     557        #this all done at the elementtree level 
     558         
     559        for frag in csmlfrag: 
     560            if frag.tag ==CSML('coordAxisValues'): 
     561                try:         
     562                    frag.set(XLINK('href'),self.coordAxisValues.href)                                 
     563                    for subfrag in frag:     
     564                        del subfrag.attrib[XLINK('href')]                                                              
     565                except: 
     566                    pass 
     567                try:         
     568                    frag.set(XLINK('show'),self.coordAxisValues.show)                                 
     569                    for subfrag in frag:     
     570                        del subfrag.attrib[XLINK('show')]                                                              
     571                except: 
     572                    pass 
     573                try:         
     574                    frag.set(XLINK('role'),self.coordAxisValues.role)                                 
     575                    for subfrag in frag:     
     576                        del subfrag.attrib[XLINK('role')]                                                              
     577                except: 
     578                    pass 
     579                try:         
     580                    frag.set(XLINK('arcrole'),self.coordAxisValues.arcrole)                                 
     581                    for subfrag in frag:     
     582                        del subfrag.attrib[XLINK('arcrole')]                                                              
     583                except: 
     584                    pass 
     585               
     586 
     587        return csmlfrag 
     588     
     589    def fromXML(self, csmlfrag): 
     590        #promote xlinks up a level to the coordAxisValues property element 
     591        for frag in csmlfrag: 
     592            if frag.tag == CSML('coordAxisValues'):               
     593                for att in ['href', 'show', 'role', 'arcrole']: 
     594                    try:  
     595                        for subfrag in frag[:]: 
     596                            subfrag.set(XLINK(att),frag.attrib[XLINK(att)])      
     597                    except: 
     598                        pass 
     599                 
     600        csElement.fromXML(self, csmlfrag) 
     601 
     602             
    544603         
    545604class SequenceRule(csElement): 
     
    10371096     
    10381097    print '\n' 
    1039     tree=ET.ElementTree(file='test.xml') 
     1098    tree=ET.ElementTree(file='testfiles/gridseries/testout.xml') 
    10401099    ds=Dataset() 
    10411100    ds.fromXML(tree.getroot()) 
  • TI02-CSML/trunk/csml/parser_extra.py

    r2362 r2377  
    115115                        return sd 
    116116                         
    117          
    118117                 
    119118         
Note: See TracChangeset for help on using the changeset viewer.