Changeset 1745 for TI02-CSML


Ignore:
Timestamp:
23/11/06 15:29:40 (13 years ago)
Author:
domlowe
Message:

ReferencableGridCoverage? part implemented

Location:
TI02-CSML/branches/CSML2
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • TI02-CSML/branches/CSML2/csParser.py

    r1742 r1745  
    3030    return myQName(nsSWE,tag) 
    3131 
    32 def merge(dict1, dict2): 
     32def XLINK(tag): 
     33    return myQName(nsXLINK,tag) 
     34 
     35def inherit(dict1, dict2): 
    3336    '''merges (adds) two dictionary objects, used in attribute 'inheritance.''' 
    3437    dict3={} 
     
    6568        if hasattr(self, 'CONTENT'): 
    6669                if self.CONTENT is not None: csmlfrag.text=self.CONTENT 
    67         for item in self.__dict__: 
    68             if item in self.ATTRIBUTES: 
    69                 csmlfrag.set(item, self.__dict__[item]) 
     70        if hasattr(self, 'ATTRIBUTES'): 
     71            for item in self.__dict__: 
     72                if item in self.ATTRIBUTES: 
     73                    csmlfrag.set(item, self.__dict__[item]) 
    7074         #but probably need to handle the case where GML attributes are set without namespace 
    7175         #to allow for  use of classname(id = 'blah')  
    72         for item in self.__dict__: 
    73             if GML(item) in self.ATTRIBUTES: 
    74                 csmlfrag.set(GML(item), self.__dict__[item])        
     76            for item in self.__dict__: 
     77                if GML(item) in self.ATTRIBUTES: 
     78                    csmlfrag.set(GML(item), self.__dict__[item])        
    7579    # self.CHILDREN (recursive - calls the toXML method of children 
    7680        for att in self.__dict__: 
     
    8892                                item.toXML(frag) 
    8993                                csmlfrag.append(frag) 
     94                        elif len(self.CHILDREN[child])==3: 
     95                            ename2=self.CHILDREN[child][2] 
     96                            parentfrag=ET.Element(ename) 
     97                            frag=ET.Element(ename2) 
     98                            self.__dict__[att].toXML(frag) 
     99                            parentfrag.append(frag) 
     100                            csmlfrag.append(parentfrag) 
     101                            print 'ENAMES' 
     102                            print ename 
     103                            print ename2 
    90104                        else: 
    91105                            frag=ET.Element(ename) 
    92106                            self.__dict__[att].toXML(frag) 
    93107                            csmlfrag.append(frag) 
    94              
     108                             
     109                             
    95110        return csmlfrag 
    96111         
    97112    def fromXML(self,csmlfrag): 
    98113        ######## output for testing purposes ############### 
    99         if hasattr(self, 'CHILDREN'): 
    100             print "ELEMENT %s"%csmlfrag.tag 
    101             for child in self.CHILDREN: 
    102                 print child        
     114        #if hasattr(self, 'CHILDREN'): 
     115            #print "ELEMENT %s"%csmlfrag.tag 
     116            #for child in self.CHILDREN: 
     117                #print child        
    103118         ####################################### 
    104119        # deal with attributes, e.g. gml id's 
     
    110125        # self.CHILDREN (recursive - calls the fromXML method of children 
    111126        for frag in csmlfrag[:]: 
    112             print "ELEMENT %s"%csmlfrag.tag 
    113127            for child in self.CHILDREN: 
    114                 print child 
    115128                ename = self.CHILDREN[child][0] #Element Name                     
    116129                if frag.tag == ename: 
     
    144157class AbstractGML(csElement): 
    145158    def __init__(self, **kwargs): 
    146         self.ATTRIBUTES=[GML('id'), GML('description'), GML('name'), 'MetaDataProperty'] 
     159        a=[GML('id'), GML('description'), GML('name'), 'MetaDataProperty'] 
     160        if hasattr(self, 'ATTRIBUTES'): 
     161            for att in a: 
     162                self.ATTRIBUTES.append(att) 
     163        else: 
     164            self.ATTRIBUTES=a 
     165 
     166class AssociationAttributeGroup(csElement): 
     167    def __init__(self, **kwargs): 
     168        a =[XLINK('href'),XLINK('role'), XLINK('arcrole'),XLINK('title'), XLINK('show'), XLINK('actuate')]  
     169        if hasattr(self, 'ATTRIBUTES'): 
     170            for att in a: 
     171                self.ATTRIBUTES.append(att) 
     172        else: 
     173            self.ATTRIBUTES=a 
    147174 
    148175class AbstractFeature(AbstractGML,csElement): 
     
    154181    def __init__(self, **kwargs): 
    155182        AbstractFeature.__init__(self,**kwargs) 
    156         self.CHILDREN=merge(self.CHILDREN,{'members':[[CSML('GridFeature'),CSML('PointFeature')], 'AbstractFeature']}) 
    157  
    158 #class TimePosition(AbstractGML): 
    159     #def __init__(self, **kwargs): 
    160         #AbstractGML.__init__(self,**kwargs) 
    161         #self.CHILDREN = {'':[CSML(''), '']}     
    162  
    163 class TimePosition(AbstractGML): 
    164     def __init__(self, **kwargs): 
    165         AbstractGML.__init__(self,**kwargs) 
     183        self.CHILDREN=inherit(self.CHILDREN,{'members':[[CSML('GridFeature'),CSML('PointFeature')], 'AbstractFeature']}) 
     184  
     185class domainSet(AbstractGML,AssociationAttributeGroup,csElement): 
     186    def __init__(self, **kwargs): 
     187        AbstractGML.__init__(self,**kwargs) 
     188        self.CHILDREN={} 
     189 
     190class referenceableGridDomain(domainSet): 
     191    def __init__(self, **kwargs): 
     192        domainSet.__init__(self,**kwargs) 
     193        self.CHILDREN={} 
     194 
     195class AbstractCoverage(AbstractFeature, csElement): 
     196    def __init__(self, **kwargs): 
     197        AbstractFeature.__init__(self,**kwargs) 
     198        #self.CHILDREN={} 
     199         
     200class AbstractDiscreteCoverage(AbstractCoverage, csElement): 
     201    def __init__(self, **kwargs): 
     202        AbstractCoverage.__init__(self,**kwargs) 
     203        self.CHILDREN={} 
     204         
     205class ReferenceableGridCoverage(AbstractDiscreteCoverage, csElement): 
     206    def __init__(self, **kwargs): 
     207        AbstractDiscreteCoverage.__init__(self,**kwargs) 
     208        self.CHILDREN = inherit(self.CHILDREN,{'referenceableGridDomain':[CSML('referenceableGridDomain'), 'referenceableGridDomain']}) 
     209     
     210class Definition(AbstractGML): 
     211    def __init__(self, **kwargs): 
     212        AbstractGML.__init__(self,**kwargs) 
     213        self.CHILDREN = {}  
     214 
     215class Phenomenon(Definition,AssociationAttributeGroup): 
     216    def __init__(self, **kwargs): 
     217        Definition.__init__(self,**kwargs) 
     218        AssociationAttributeGroup.__init__(self,**kwargs) 
    166219        self.CHILDREN = {'':[CSML(''), '']}     
    167          
    168 class ReferenceableGridCoverage(AbstractGML): 
    169     def __init__(self, **kwargs): 
    170         AbstractGML.__init__(self,**kwargs) 
    171         self.CHILDREN = {'':[CSML(''), '']}     
    172  
    173 class Phenomenon(AbstractGML): 
    174     def __init__(self, **kwargs): 
    175         AbstractGML.__init__(self,**kwargs) 
    176         self.CHILDREN = {'':[CSML(''), '']}     
     220 
    177221         
    178222class GridFeature(AbstractFeature, csElement): 
    179223    def __init__(self, **kwargs): 
    180224        AbstractFeature.__init__(self,**kwargs) 
    181         #dummy child for now: 
    182         #self.CHILDREN=merge(self.CHILDREN,{'test':[CSML('TestElement'), 'csString']}) 
    183         self.CHILDREN={'time':[GML('time'), GML('TimePosition')], 'value':[CSML('value'), 'ReferenceableGridCoverage'], 'parameter':[CSML('parameter'), 'Phenomenon']}  
    184  
     225        self.CHILDREN=inherit(self.CHILDREN,{'time':[CSML('time'), 'csString'], 'value':[CSML('value'), 'ReferenceableGridCoverage', CSML('ReferenceableGridCoverage')], 'parameter':[CSML('parameter'), 'Phenomenon']}) 
     226        # the 1 means nest down a layer 
    185227class AbstractFileExtract(AbstractGML, csElement): 
    186228    def __init__(self,**kwargs): 
     
    191233    def __init__(self,**kwargs): 
    192234        AbstractFileExtract.__init__(self, **kwargs) 
    193         self.CHILDREN = merge(self.CHILDREN,{'variableName':[CSML('variableName'), 'csString']}) 
    194         #use Merge() when inheriting CHILDREN attribute to extend rather than replace 
     235        self.CHILDREN = inherit(self.CHILDREN,{'variableName':[CSML('variableName'), 'csString']}) 
     236        #use inherit() when inheriting CHILDREN attribute to extend rather than replace 
    195237 
    196238class FeatureCollection(AbstractFeatureCollection,csElement): 
    197239    def __init__(self,**kwargs): 
    198240        AbstractFeatureCollection.__init__(self,**kwargs) 
    199      
    200      
    201241    def _getSubstitutionType(self,tag): 
    202         print tag 
    203         print 'returning..' 
    204242        if tag==CSML('GridFeature'): 
    205             print 'GF' 
    206243            return 'GridFeature' 
    207244        elif tag==CSML('PointFeature'): 
    208             print 'PF' 
    209245            return 'PointFeature' 
    210         else:  
    211             print 'AF' 
    212             return 'AbstractFeature' 
    213      
     246        else: return 'AbstractFeature' 
    214247    def _getReverseSubsType(self, typename): 
    215         print 'REVERSE' 
    216         print typename 
    217248        if typename== 'GridFeature': 
    218249            return CSML('GridFeature') 
     
    220251            return CSML('PointFeature') 
    221252        else: return CSML('AbstractFeature') 
    222              
    223              
     253 
    224254         
    225255class Dataset(AbstractGML, csElement):     
  • TI02-CSML/branches/CSML2/test.xml

    r1742 r1745  
    1818                <parameter></parameter> 
    1919            </GridFeature> 
    20             <GridFeature>more test blah</GridFeature> 
     20            <GridFeature> 
     21                <time>12 13 14 15</time> 
     22                <value> 
     23                    <ReferencableGridCoverage> 
     24                        <referenceableGridDomain>testdomain</referenceableGridDomain> 
     25                    </ReferencableGridCoverage> 
     26                </value> 
     27                <parameter gml:id='blah' xlink:href='http://someurl#blah' xlink:role='somerole'> </parameter> 
     28            </GridFeature> 
    2129    </featureCollection> 
    2230</Dataset> 
Note: See TracChangeset for help on using the changeset viewer.