Changeset 1823 for TI02-CSML/branches


Ignore:
Timestamp:
06/12/06 12:07:45 (13 years ago)
Author:
domlowe
Message:

FileExtract/ArrayDescriptor? fixed

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

Legend:

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

    r1810 r1823  
    7373         
    7474    def _getSubstitutionType(self,tag): 
    75         return tag 
     75        print 'splitting tag' 
     76        return tag.split('}')[1] 
     77         
    7678     
    7779    def _getReverseSubsType(self, typename): 
     
    7981    
    8082    def toXML(self, csmlfrag): 
    81         #process self... and convert  to XML  
     83        #process self and convert to XML 
    8284        if hasattr(self, 'CONTENT'): 
    83                 if self.CONTENT is not None: csmlfrag.text=self.CONTENT 
     85            if self.CONTENT is not None: csmlfrag.text=self.CONTENT 
    8486        if hasattr(self, 'ATTRIBUTES'): 
    8587            for item in self.__dict__: 
     
    147149        # self.CHILDREN (recursive - calls the fromXML method of children 
    148150        for frag in csmlfrag[:]: 
     151            #for each child element 
     152            #iterate through expected CHILDREN 
    149153            for child in self.CHILDREN: 
    150154                ename = self.CHILDREN[child][0] #Element Name                     
     
    153157                    childobj=eval(etype)() 
    154158                    if len(self.CHILDREN[child])==3: 
    155                       if frag[:] != []: 
    156                         childobj.fromXML(frag[0]) 
     159                        if frag[:] != []: 
     160                            childobj.fromXML(frag[0]) 
    157161                    else: 
    158                       childobj.fromXML(frag) 
     162                        childobj.fromXML(frag) 
    159163                    if hasattr(self, child): 
    160164                        if type(self.__dict__[child]) is not list: 
     
    164168                    else: 
    165169                        setattr(self, child, childobj) 
    166                      
     170                 
    167171                if type(ename) is list: # e.g. FeatureCollection where it can be GridFeature, PointFeature etc.. 
     172                    print 'list for ename: %s'%ename 
     173                    print frag.tag 
    168174                    if frag.tag in ename: 
    169175                        etype=self._getSubstitutionType(frag.tag) 
    170176                        childobj=eval(etype)() 
    171                     childobj.fromXML(frag) 
    172                     if hasattr(self, child): 
    173                         if type(self.__dict__[child]) is not list: 
    174                             tmp=self.__dict__[child] 
    175                             setattr(self, child, [tmp]) #convert to list 
    176                         self.__dict__[child].append(childobj) 
    177                     else: 
    178                         setattr(self, child, childobj) 
    179                     
    180                      
     177                        childobj.fromXML(frag) 
     178                        if hasattr(self, child): 
     179                            if type(self.__dict__[child]) is not list: 
     180                                tmp=self.__dict__[child] 
     181                                setattr(self, child, [tmp]) #convert to list 
     182                            self.__dict__[child].append(childobj) 
     183                        else: 
     184                            setattr(self, child, childobj) 
     185 
    181186class csString(csElement): 
    182187    pass 
     
    197202        children={'boundedBy':[GML('boundedBy'), 'Envelope']} 
    198203        addchildren(self,children) 
    199          
     204 
    200205class AbstractFeatureCollection(AbstractFeature,csElement): 
    201206    def __init__(self, **kwargs): 
     
    203208        children={'members':[[CSML('GridFeature'),CSML('PointFeature')], 'AbstractFeature']} 
    204209        addchildren(self,children) 
    205          
     210 
    206211class domainSet(AbstractGML,AssociationAttributeGroup,csElement): 
    207212    def __init__(self, **kwargs): 
     
    213218        domainSet.__init__(self,**kwargs) 
    214219        addchildren(self,{}) 
    215          
     220 
    216221class AbstractCoverage(AbstractFeature, csElement): 
    217222    def __init__(self, **kwargs): 
    218223        AbstractFeature.__init__(self,**kwargs) 
    219          
     224 
    220225class AbstractDiscreteCoverage(AbstractCoverage, csElement): 
    221226    def __init__(self, **kwargs): 
    222227        AbstractCoverage.__init__(self,**kwargs) 
    223228        addchildren(self,{}) 
    224          
    225          
     229 
    226230class ReferenceableGrid(AbstractGML, AssociationAttributeGroup, csElement): 
    227231    def __init__(self, **kwargs): 
     
    236240        else: 
    237241            self.ATTRIBUTES=a 
    238        
     242 
    239243class ReferenceableGridCoverage(AbstractDiscreteCoverage, csElement): 
    240244    def __init__(self, **kwargs): 
     
    246250    def fromXML(self,csmlfrag): 
    247251        AbstractDiscreteCoverage.fromXML(self,csmlfrag)    
    248      
     252 
    249253class Definition(AbstractGML): 
    250254    def __init__(self, **kwargs): 
     
    259263        addchildren(self,children) 
    260264 
    261          
    262265class GridFeature(AbstractFeature, csElement): 
    263266    def __init__(self, **kwargs): 
     
    266269        addchildren(self,children) 
    267270 
    268 class AbstractFileExtract(AbstractGML, csElement): 
    269     def __init__(self,**kwargs): 
    270         AbstractGML.__init__(self,**kwargs) 
     271class ArrayDescriptor(AbstractGML, csElement): 
     272    def __init__(self,**kwargs): 
     273        AbstractGML.__init__(self,**kwargs) 
     274        children={'arraySize':[CSML('arraySize'), 'csString'], 'uom':[CSML('uom'),'csString'], 'numericType':[CSML('numericType'),'csString'], 'regExpTransform':[CSML('regExpTransform'),'csString'], 'numericTransform':[CSML('numericTransform'),'csString']} 
     275        addchildren(self,children) 
     276         
     277class FileExtract(ArrayDescriptor, csElement): 
     278    def __init__(self,**kwargs): 
     279        ArrayDescriptor.__init__(self,**kwargs) 
    271280        children= {'fileName':[CSML('fileName'), 'csString']} 
    272281        addchildren(self,children) 
    273282 
    274 class NetCDFExtract(AbstractFileExtract, csElement): 
    275     def __init__(self,**kwargs): 
    276         AbstractFileExtract.__init__(self, **kwargs) 
     283class NetCDFExtract(FileExtract, csElement): 
     284    def __init__(self,**kwargs): 
     285        FileExtract.__init__(self, **kwargs) 
    277286        children={'variableName':[CSML('variableName'), 'csString']} 
     287        addchildren(self,children) 
     288         
     289class NASAAmesExtract(FileExtract, csElement): 
     290    def __init__(self,**kwargs): 
     291        FileExtract.__init__(self, **kwargs) 
     292        children={'variableName':[CSML('variableName'), 'csString'], 'index':[CSML('index'),'csString']} 
    278293        addchildren(self,children) 
    279294 
     
    299314    def __init__(self, **kwargs): 
    300315        AbstractGML.__init__(self,**kwargs) 
    301         children = {'ncExtract':[CSML('NetCDFExtract'), 'NetCDFExtract'], 'featureCollection':[CSML('featureCollection') ,'FeatureCollection']} 
     316        #children = {'ncExtract':[CSML('NetCDFExtract'), 'NetCDFExtract'], 'featureCollection':[CSML('featureCollection') ,'FeatureCollection']} 
     317        children = {'featureCollection':[GML('FeatureCollection') ,'FeatureCollection'],'fileExtracts':[[CSML('NetCDFExtract'),CSML('NASAAmesExtract')], 'ArrayDescriptor']} 
    302318        addchildren(self,children) 
    303319    def toXML(self): 
     
    305321        csElement.toXML(self, csmlfrag) 
    306322        return csmlfrag 
     323    def _getSubstitutionType(self,tag): 
     324        if tag==CSML('NetCDFExtract'): 
     325            return 'NetCDFExtract' 
     326        elif tag==CSML('NASAAmesExtract'): 
     327            return 'NASAAmesExtract' 
     328        else: return 'ArrayDescriptor' 
     329    def _getReverseSubsType(self, typename): 
     330        if typename== 'NetCDFExtract': 
     331            return CSML('NetCDFExtract') 
     332        elif typename == 'NASAAmesExtract': 
     333            return CSML('NASAAmesExtract') 
     334        else: return CSML('ArrayDescriptor') 
     335         
     336        return typename 
    307337 
    308338def main(): 
     
    318348    csmlout=parser_extra.removeInlineNS(csmlout) 
    319349    print '\n %s'% csmlout 
    320     for member in ds.featureCollection.members: 
    321       print dir(member.value) 
     350    #for member in ds.featureCollection.members: 
     351      #print dir(member.value) 
    322352         
    323353 
  • TI02-CSML/branches/CSML2/test.xml

    r1810 r1823  
    11<?xml version="1.0" encoding="UTF-8"?> 
    2 <Dataset xmlns="http://ndg.nerc.ac.uk/csml" xmlns:gml="http://www.opengis.net/gml" xmlns:om="http://www.opengis.net/om" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://ndg.nerc.ac.uk/csml 
    3 ../XMLSchemas/CSMLAppSchema.xsd" gml:id="TestDataset"> 
     2<Dataset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     3 xsi:schemaLocation="http://ndg.nerc.ac.uk/csml XMLSchemas/csmlMain.xsd" 
     4 xmlns:gml="http://www.opengis.net/gml" 
     5 xmlns:om="http://www.opengis.net/om" 
     6 xmlns:xlink="http://www.w3.org/1999/xlink" 
     7 xmlns="http://ndg.nerc.ac.uk/csml" 
     8 gml:id="TestDataset"> 
    49        <NetCDFExtract gml:id="feat04azimuth"> 
    510            <arraySize>10000</arraySize> 
     
    1217            <variableName>az</variableName> 
    1318        </NetCDFExtract> 
    14         <featureCollection> 
     19        <NASAAmesExtract gml:id="3feat04azimuth"> 
     20            <arraySize>210000</arraySize> 
     21            <fileName>radar_data.nc</fileName> 
     22            <variableName>az</variableName> 
     23            <index>10</index> 
     24        </NASAAmesExtract> 
     25        <gml:FeatureCollection> 
    1526            <GridFeature gml:id="feature1"> 
    1627                <time></time> 
     
    2233                    <ReferencableGridCoverage> 
    2334                        <referenceableGridDomain> 
    24                           <referenceableGrid  gml:description ="mygrid" dimension                                         ="2" gml:id="ID004"  > 
    25                             </referenceableGrid>ml 
     35                          <referenceableGrid  gml:description ="mygrid" dimension="2" gml:id="ID004"  > 
     36                            </referenceableGrid> 
    2637                        </referenceableGridDomain> 
    2738                    </ReferencableGridCoverage> 
     
    3041                <parameter gml:id='blah' xlink:href='http://someurl#blah' xlink:role='somerole'> </parameter> 
    3142            </GridFeature> 
    32     </featureCollection> 
     43        </gml:FeatureCollection> 
    3344</Dataset> 
Note: See TracChangeset for help on using the changeset viewer.